Furaffinity-Request-Helper

Library to simplify requests to Furaffinity

当前为 2025-01-12 提交的版本,查看 最新版本

此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.gf.qytechs.cn/scripts/483952/1519487/Furaffinity-Request-Helper.js

  1. // ==UserScript==
  2. // @name Furaffinity-Request-Helper
  3. // @namespace Violentmonkey Scripts
  4. // @grant none
  5. // @version 1.2.0
  6. // @author Midori Dragon
  7. // @description Library to simplify requests to Furaffinity
  8. // @icon https://www.furaffinity.net/themes/beta/img/banners/fa_logo.png
  9. // @license MIT
  10. // ==/UserScript==
  11. // jshint esversion: 8
  12. (() => {
  13. "use strict";
  14. class Semaphore {
  15. constructor(maxConcurrency) {
  16. this.maxConcurrency = maxConcurrency, this.currentConcurrency = 0, this.waitingQueue = [];
  17. }
  18. acquire() {
  19. return new Promise((resolve => {
  20. this.currentConcurrency < this.maxConcurrency ? (this.currentConcurrency++, resolve()) : this.waitingQueue.push(resolve);
  21. }));
  22. }
  23. release() {
  24. if (this.waitingQueue.length > 0) {
  25. const nextResolve = this.waitingQueue.shift();
  26. null != nextResolve && nextResolve();
  27. } else this.currentConcurrency--;
  28. }
  29. }
  30. class PercentHelper {
  31. constructor() {
  32. throw new Error("The PercentHelper class is static and cannot be instantiated.");
  33. }
  34. static setPercentValue(id, value) {
  35. return !(!value || !PercentHelper._percentAll.hasOwnProperty(id)) && (PercentHelper._percentAll[id] = value,
  36. !0);
  37. }
  38. static getPercentValue(id, decimalPlaces = 2) {
  39. if (null == id) return -1;
  40. const percent = PercentHelper._percentAll[id];
  41. return percent ? parseFloat(percent.toFixed(decimalPlaces)) : -1;
  42. }
  43. static createPercentValue(uniqueId) {
  44. PercentHelper._percentAll[uniqueId] = 0;
  45. }
  46. static deletePercentValue(id) {
  47. PercentHelper._percentAll.hasOwnProperty(id) && delete PercentHelper._percentAll[id];
  48. }
  49. static updatePercentValue(id, value, totalValue) {
  50. if (null != id && "" !== id && -1 !== id) {
  51. const progress = value / totalValue * 100;
  52. PercentHelper.setPercentValue(id, progress);
  53. }
  54. }
  55. }
  56. PercentHelper._percentAll = {};
  57. var __awaiter = function(thisArg, _arguments, P, generator) {
  58. return new (P || (P = Promise))((function(resolve, reject) {
  59. function fulfilled(value) {
  60. try {
  61. step(generator.next(value));
  62. } catch (e) {
  63. reject(e);
  64. }
  65. }
  66. function rejected(value) {
  67. try {
  68. step(generator.throw(value));
  69. } catch (e) {
  70. reject(e);
  71. }
  72. }
  73. function step(result) {
  74. result.done ? resolve(result.value) : function adopt(value) {
  75. return value instanceof P ? value : new P((function(resolve) {
  76. resolve(value);
  77. }));
  78. }(result.value).then(fulfilled, rejected);
  79. }
  80. step((generator = generator.apply(thisArg, _arguments || [])).next());
  81. }));
  82. };
  83. class WaitAndCallAction {
  84. constructor(action, delay) {
  85. this.delay = 10, this._running = !1, this._action = action, null != delay && (this.delay = delay);
  86. }
  87. start() {
  88. if (null != this._action && !1 === this._running) return this._running = !0, this._intervalId = setInterval((() => {
  89. var _a;
  90. this._action(PercentHelper.getPercentValue(null === (_a = this._intervalId) || void 0 === _a ? void 0 : _a.toString()));
  91. }), this.delay), PercentHelper.createPercentValue(this._intervalId.toString()),
  92. this._intervalId;
  93. }
  94. stop() {
  95. this._running && (this._running = !1, clearInterval(this._intervalId), null != this._intervalId && PercentHelper.deletePercentValue(this._intervalId.toString()));
  96. }
  97. static callFunctionAsync(functionToCall_1, params_1, action_1, delay_1) {
  98. return __awaiter(this, arguments, void 0, (function*(functionToCall, params, action, delay, usePercent = !1) {
  99. if (null == action) return yield functionToCall(...params);
  100. const waitAndCallAction = new WaitAndCallAction(action, delay), percentId = waitAndCallAction.start();
  101. usePercent && params.push(percentId);
  102. const result = yield functionToCall(...params);
  103. return waitAndCallAction.stop(), result;
  104. }));
  105. }
  106. static callFunction(functionToCall, params, action, delay, usePercent = !1) {
  107. if (null == action) return functionToCall(...params);
  108. const waitAndCallAction = new WaitAndCallAction(action, delay), percentId = waitAndCallAction.start();
  109. usePercent && params.push(percentId);
  110. const result = functionToCall(...params);
  111. return waitAndCallAction.stop(), result;
  112. }
  113. }
  114. class Logger {
  115. constructor() {
  116. throw new Error("The Logger class is static and cannot be instantiated.");
  117. }
  118. static logMessage(message) {
  119. FuraffinityRequests.logLevel >= 3 && console.log(message);
  120. }
  121. static logWarning(message) {
  122. FuraffinityRequests.logLevel >= 2 && console.warn(message);
  123. }
  124. static logError(message) {
  125. FuraffinityRequests.logLevel >= 1 && console.error(message);
  126. }
  127. static setLogLevel(level) {
  128. FuraffinityRequests.logLevel = level;
  129. }
  130. }
  131. class IdArray {
  132. constructor() {
  133. throw new Error("The IdArray class is static and cannot be instantiated.");
  134. }
  135. static getTillId(collection, toId, attributeName = "id") {
  136. const result = [];
  137. toId = toId.toString();
  138. for (const elem of collection) {
  139. result.push(elem);
  140. const attribute = elem.getAttribute(attributeName);
  141. if (null != attribute && attribute.replace("sid-", "") === toId) break;
  142. }
  143. return result;
  144. }
  145. static getSinceId(collection, fromId, attributeName = "id") {
  146. const array = collection;
  147. array.reverse();
  148. const result = [];
  149. fromId = fromId.toString();
  150. for (const elem of array) {
  151. result.push(elem);
  152. const attribute = elem.getAttribute(attributeName);
  153. if (null != attribute && attribute.replace("sid-", "") === fromId) break;
  154. }
  155. return result.reverse(), result;
  156. }
  157. static getBetweenIds(collection, fromId, toId, attributeName = "id") {
  158. const array = collection;
  159. let startIndex = -1, endIndex = -1;
  160. fromId = fromId.toString(), toId = toId.toString();
  161. for (let i = 0; i < array.length; i++) {
  162. const attribute = array[i].getAttribute(attributeName);
  163. if (null != attribute && attribute.replace("sid-", "") === fromId && (startIndex = i),
  164. null != attribute && attribute.replace("sid-", "") === toId && (endIndex = i), -1 !== startIndex && -1 !== endIndex) break;
  165. }
  166. if (-1 === startIndex && -1 === endIndex) return array;
  167. -1 === startIndex && (startIndex = 0), -1 === endIndex && (endIndex = array.length - 1);
  168. const result = [];
  169. for (let i = startIndex; i <= endIndex; i++) result.push(array[i]);
  170. return result;
  171. }
  172. static containsId(collection, id, attributeName = "id") {
  173. id = id.toString();
  174. for (const elem of collection) {
  175. const attribute = elem.getAttribute(attributeName);
  176. if (null != attribute && attribute.replace("sid-", "") === id) return !0;
  177. }
  178. return !1;
  179. }
  180. }
  181. function convertToNumber(value) {
  182. if (null == value) return;
  183. const number = parseInt(value.toString());
  184. return isNaN(number) ? void 0 : number;
  185. }
  186. var Scraps_awaiter = function(thisArg, _arguments, P, generator) {
  187. return new (P || (P = Promise))((function(resolve, reject) {
  188. function fulfilled(value) {
  189. try {
  190. step(generator.next(value));
  191. } catch (e) {
  192. reject(e);
  193. }
  194. }
  195. function rejected(value) {
  196. try {
  197. step(generator.throw(value));
  198. } catch (e) {
  199. reject(e);
  200. }
  201. }
  202. function step(result) {
  203. result.done ? resolve(result.value) : function adopt(value) {
  204. return value instanceof P ? value : new P((function(resolve) {
  205. resolve(value);
  206. }));
  207. }(result.value).then(fulfilled, rejected);
  208. }
  209. step((generator = generator.apply(thisArg, _arguments || [])).next());
  210. }));
  211. };
  212. class Scraps {
  213. constructor(semaphore) {
  214. this._semaphore = semaphore;
  215. }
  216. static get hardLink() {
  217. return FuraffinityRequests.fullUrl + "/scraps/";
  218. }
  219. getFiguresBetweenIds(username_1, fromId_1, toId_1, action_1) {
  220. return Scraps_awaiter(this, arguments, void 0, (function*(username, fromId, toId, action, delay = 100) {
  221. return fromId = convertToNumber(fromId), toId = convertToNumber(toId), null == fromId || fromId <= 0 ? yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresTillId, [ username, void 0, toId, void 0, GalleryType.SCRAPS, this._semaphore ], action, delay) : null == toId || toId <= 0 ? yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresSinceId, [ username, void 0, fromId, void 0, GalleryType.SCRAPS, this._semaphore ], action, delay) : yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresBetweenIds, [ username, void 0, fromId, toId, void 0, void 0, GalleryType.SCRAPS, this._semaphore ], action, delay, !0);
  222. }));
  223. }
  224. getFiguresBetweenIdsBetweenPages(username_1, fromId_1, toId_1, fromPageNumber_1, toPageNumber_1, action_1) {
  225. return Scraps_awaiter(this, arguments, void 0, (function*(username, fromId, toId, fromPageNumber, toPageNumber, action, delay = 100) {
  226. return fromId = convertToNumber(fromId), toId = convertToNumber(toId), fromPageNumber = convertToNumber(fromPageNumber),
  227. toPageNumber = convertToNumber(toPageNumber), null == fromId || fromId <= 0 ? yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresTillId, [ username, void 0, toId, fromPageNumber, GalleryType.SCRAPS, this._semaphore ], action, delay) : null == toId || toId <= 0 ? yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresSinceId, [ username, void 0, fromId, toPageNumber, GalleryType.SCRAPS, this._semaphore ], action, delay) : yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresBetweenIds, [ username, void 0, fromId, toId, fromPageNumber, toPageNumber, GalleryType.SCRAPS, this._semaphore ], action, delay, !0);
  228. }));
  229. }
  230. getFiguresBetweenPages(username_1, fromPageNumber_1, toPageNumber_1, action_1) {
  231. return Scraps_awaiter(this, arguments, void 0, (function*(username, fromPageNumber, toPageNumber, action, delay = 100) {
  232. return fromPageNumber = convertToNumber(fromPageNumber), toPageNumber = convertToNumber(toPageNumber),
  233. null == fromPageNumber || fromPageNumber <= 0 ? yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresTillPage, [ username, void 0, toPageNumber, GalleryType.SCRAPS, this._semaphore ], action, delay, !0) : null == toPageNumber || toPageNumber <= 0 ? yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresSincePage, [ username, void 0, fromPageNumber, GalleryType.SCRAPS, this._semaphore ], action, delay) : yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresBetweenPages, [ username, void 0, fromPageNumber, toPageNumber, GalleryType.SCRAPS, this._semaphore ], action, delay, !0);
  234. }));
  235. }
  236. getFigures(username_1, pageNumber_1, action_1) {
  237. return Scraps_awaiter(this, arguments, void 0, (function*(username, pageNumber, action, delay = 100) {
  238. return pageNumber = convertToNumber(pageNumber), yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFigures, [ username, void 0, pageNumber, GalleryType.SCRAPS, this._semaphore ], action, delay);
  239. }));
  240. }
  241. getPage(username_1, pageNumber_1, action_1) {
  242. return Scraps_awaiter(this, arguments, void 0, (function*(username, pageNumber, action, delay = 100) {
  243. return pageNumber = convertToNumber(pageNumber), yield WaitAndCallAction.callFunctionAsync(Page.getGalleryPage, [ username, void 0, pageNumber, GalleryType.SCRAPS, this._semaphore ], action, delay);
  244. }));
  245. }
  246. }
  247. var Favorites_awaiter = function(thisArg, _arguments, P, generator) {
  248. return new (P || (P = Promise))((function(resolve, reject) {
  249. function fulfilled(value) {
  250. try {
  251. step(generator.next(value));
  252. } catch (e) {
  253. reject(e);
  254. }
  255. }
  256. function rejected(value) {
  257. try {
  258. step(generator.throw(value));
  259. } catch (e) {
  260. reject(e);
  261. }
  262. }
  263. function step(result) {
  264. result.done ? resolve(result.value) : function adopt(value) {
  265. return value instanceof P ? value : new P((function(resolve) {
  266. resolve(value);
  267. }));
  268. }(result.value).then(fulfilled, rejected);
  269. }
  270. step((generator = generator.apply(thisArg, _arguments || [])).next());
  271. }));
  272. };
  273. class Favorites {
  274. constructor(semaphore) {
  275. this.semaphore = semaphore;
  276. }
  277. static get hardLink() {
  278. return FuraffinityRequests.fullUrl + "/favorites/";
  279. }
  280. getFiguresBetweenIds(username_1, fromId_1, toId_1, action_1) {
  281. return Favorites_awaiter(this, arguments, void 0, (function*(username, fromId, toId, action, delay = 100) {
  282. return fromId = convertToNumber(fromId), toId = convertToNumber(toId), null == fromId || fromId <= 0 ? yield WaitAndCallAction.callFunctionAsync(getFavoritesFiguresTillId, [ username, toId, void 0, this.semaphore ], action, delay) : null == toId || toId <= 0 ? yield WaitAndCallAction.callFunctionAsync(getFavoritesFiguresSinceId, [ username, fromId, void 0, this.semaphore ], action, delay) : yield WaitAndCallAction.callFunctionAsync(getFavoritesFiguresBetweenIds, [ username, fromId, toId, void 0, void 0, this.semaphore ], action, delay, !0);
  283. }));
  284. }
  285. getFiguresBetweenIdsBetweenPages(username_1, fromId_1, toId_1, fromDataFavId_1, toDataFavId_1, action_1) {
  286. return Favorites_awaiter(this, arguments, void 0, (function*(username, fromId, toId, fromDataFavId, toDataFavId, action, delay = 100) {
  287. return fromId = convertToNumber(fromId), toId = convertToNumber(toId), fromDataFavId = convertToNumber(fromDataFavId),
  288. toDataFavId = convertToNumber(toDataFavId), null == fromId || fromId <= 0 ? yield WaitAndCallAction.callFunctionAsync(getFavoritesFiguresTillId, [ username, toId, fromDataFavId, this.semaphore ], action, delay) : null == toId || toId <= 0 ? yield WaitAndCallAction.callFunctionAsync(getFavoritesFiguresSinceId, [ username, fromId, toDataFavId, this.semaphore ], action, delay) : yield WaitAndCallAction.callFunctionAsync(getFavoritesFiguresBetweenIds, [ username, fromId, toId, fromDataFavId, toDataFavId, this.semaphore ], action, delay, !0);
  289. }));
  290. }
  291. getFiguresBetweenPages(username_1, fromDataFavId_1, toDataFavId_1, action_1) {
  292. return Favorites_awaiter(this, arguments, void 0, (function*(username, fromDataFavId, toDataFavId, action, delay = 100) {
  293. return fromDataFavId = convertToNumber(fromDataFavId), toDataFavId = convertToNumber(toDataFavId),
  294. null == fromDataFavId || fromDataFavId <= 0 ? yield WaitAndCallAction.callFunctionAsync(getFavoritesFiguresTillPage, [ username, toDataFavId, this.semaphore ], action, delay, !0) : null == toDataFavId || toDataFavId <= 0 ? yield WaitAndCallAction.callFunctionAsync(getFavoritesFiguresSincePage, [ username, fromDataFavId, this.semaphore ], action, delay) : yield WaitAndCallAction.callFunctionAsync(getFavoritesFiguresBetweenPages, [ username, fromDataFavId, toDataFavId, this.semaphore ], action, delay, !0);
  295. }));
  296. }
  297. getFigures(username_1, fromDataFavId_1, direction_1, action_1) {
  298. return Favorites_awaiter(this, arguments, void 0, (function*(username, fromDataFavId, direction, action, delay = 100) {
  299. return fromDataFavId = convertToNumber(fromDataFavId), direction = convertToNumber(direction),
  300. yield WaitAndCallAction.callFunctionAsync(getFavoritesFigures, [ username, fromDataFavId, direction, this.semaphore ], action, delay);
  301. }));
  302. }
  303. getPage(username_1, fromDataFavId_1, direction_1, action_1) {
  304. return Favorites_awaiter(this, arguments, void 0, (function*(username, fromDataFavId, direction, action, delay = 100) {
  305. return fromDataFavId = convertToNumber(fromDataFavId), direction = convertToNumber(direction),
  306. yield WaitAndCallAction.callFunctionAsync(Page.getFavoritesPage, [ username, fromDataFavId, direction, this.semaphore ], action, delay);
  307. }));
  308. }
  309. }
  310. function getFavoritesFiguresTillId(username, toId, fromDataFavId, semaphore) {
  311. return Favorites_awaiter(this, void 0, void 0, (function*() {
  312. if (null == toId || toId <= 0) return Logger.logError("No toId given"), [];
  313. (null == fromDataFavId || fromDataFavId <= 0) && (Logger.logWarning("No fromDataFavId given. Using default 1 instead."),
  314. fromDataFavId = -1);
  315. let running = !0, dataFavId = fromDataFavId;
  316. const allFigures = [];
  317. for (;running; ) {
  318. const figures = yield getFavoritesFigures(username, dataFavId, 1, semaphore);
  319. let currFigureId;
  320. if (0 !== figures.length) {
  321. currFigureId = figures[0].id;
  322. const dataFavIdString = figures[figures.length - 1].getAttribute("data-fav-id");
  323. if (null == dataFavIdString) {
  324. running = !1;
  325. break;
  326. }
  327. dataFavId = parseInt(dataFavIdString);
  328. }
  329. undefined === currFigureId ? running = !1 : IdArray.containsId(figures, toId) ? (allFigures.push(IdArray.getTillId(figures, toId)),
  330. running = !1) : allFigures.push(figures);
  331. }
  332. return allFigures;
  333. }));
  334. }
  335. function getFavoritesFiguresSinceId(username, fromId, toDataFavId, semaphore) {
  336. return Favorites_awaiter(this, void 0, void 0, (function*() {
  337. if (null == fromId || fromId <= 0) return Logger.logError("No fromId given"), [];
  338. (null == toDataFavId || toDataFavId <= 0) && (Logger.logWarning("No toDataFavId given. Using default 1 instead."),
  339. toDataFavId = -1);
  340. let dataFavId = toDataFavId >= 0 ? toDataFavId : -1;
  341. const direction = toDataFavId >= 0 ? -1 : 1;
  342. let running = !0;
  343. if (toDataFavId < 0) {
  344. for (;running; ) {
  345. const figures = yield getFavoritesFigures(username, dataFavId, direction, semaphore);
  346. let currFigureId;
  347. if (0 !== figures.length && (currFigureId = figures[0].id), undefined === currFigureId) running = !1; else if (IdArray.containsId(figures, fromId)) {
  348. running = !1;
  349. const dataFavIdString = figures[figures.length - 1].getAttribute("data-fav-id");
  350. if (null == dataFavIdString) {
  351. running = !1;
  352. break;
  353. }
  354. dataFavId = parseInt(dataFavIdString);
  355. }
  356. }
  357. running = !0;
  358. }
  359. const allFigures = [];
  360. for (;running; ) {
  361. const figures = yield getFavoritesFigures(username, dataFavId, direction, semaphore);
  362. let currFigureId;
  363. if (0 !== figures.length) {
  364. currFigureId = figures[0].id;
  365. const dataFavIdString = direction >= 0 ? figures[figures.length - 1].getAttribute("data-fav-id") : figures[0].getAttribute("data-fav-id");
  366. if (null == dataFavIdString) {
  367. running = !1;
  368. break;
  369. }
  370. dataFavId = parseInt(dataFavIdString);
  371. }
  372. undefined === currFigureId ? running = !1 : direction < 0 ? IdArray.containsId(figures, fromId) ? (allFigures.push(IdArray.getSinceId(figures, fromId).reverse()),
  373. running = !1) : allFigures.push(Array.from(figures).reverse()) : IdArray.containsId(figures, toDataFavId, "data-fav-id") ? (allFigures.push(IdArray.getTillId(figures, toDataFavId, "data-fav-id")),
  374. running = !1) : allFigures.push(figures);
  375. }
  376. return direction < 0 && allFigures.reverse(), allFigures;
  377. }));
  378. }
  379. function getFavoritesFiguresBetweenIds(username, fromId, toId, fromDataFavId, toDataFavId, semaphore) {
  380. return Favorites_awaiter(this, void 0, void 0, (function*() {
  381. if (null == fromId || fromId <= 0) return Logger.logError("No fromId given"), [];
  382. if (null == toId || toId <= 0) return Logger.logError("No toId given"), [];
  383. (null == fromDataFavId || fromDataFavId <= 0) && (Logger.logWarning("No fromDataFavId given. Using default 1 instead."),
  384. fromDataFavId = -1), (null == toDataFavId || toDataFavId <= 0) && (Logger.logWarning("No toDataFavId given. Using default 1 instead."),
  385. toDataFavId = -1);
  386. const direction = fromDataFavId >= 0 ? 1 : toDataFavId >= 0 ? -1 : 1;
  387. let lastFigureId, dataFavId = fromDataFavId >= 0 ? fromDataFavId : toDataFavId, running = !0;
  388. if (fromDataFavId < 0 && toDataFavId < 0) {
  389. for (;running; ) {
  390. const figures = yield getFavoritesFigures(username, dataFavId, direction, semaphore);
  391. let currFigureId = lastFigureId;
  392. if (0 !== figures.length) {
  393. currFigureId = figures[0].id;
  394. const dataFavIdString = figures[figures.length - 1].getAttribute("data-fav-id");
  395. if (null == dataFavIdString) {
  396. running = !1;
  397. break;
  398. }
  399. dataFavId = parseInt(dataFavIdString);
  400. }
  401. (currFigureId === lastFigureId || IdArray.containsId(figures, fromId)) && (running = !1);
  402. }
  403. running = !0;
  404. }
  405. const allFigures = [];
  406. for (lastFigureId = void 0; running; ) {
  407. const figures = yield getFavoritesFigures(username, dataFavId, direction, semaphore);
  408. let currFigureId = lastFigureId;
  409. if (0 !== figures.length) {
  410. currFigureId = figures[0].id;
  411. const dataFavIdString = direction >= 0 ? figures[figures.length - 1].getAttribute("data-fav-id") : figures[0].getAttribute("data-fav-id");
  412. if (null == dataFavIdString) {
  413. running = !1;
  414. break;
  415. }
  416. dataFavId = parseInt(dataFavIdString);
  417. }
  418. currFigureId === lastFigureId ? running = !1 : direction < 0 ? IdArray.containsId(figures, fromId) ? (allFigures.push(IdArray.getSinceId(figures, fromId).reverse()),
  419. running = !1) : IdArray.containsId(figures, toId) ? allFigures.push(IdArray.getTillId(figures, toId).reverse()) : allFigures.push(Array.from(figures).reverse()) : IdArray.containsId(figures, toId) ? (allFigures.push(IdArray.getTillId(figures, toId)),
  420. running = !1) : IdArray.containsId(figures, fromId) ? allFigures.push(IdArray.getSinceId(figures, fromId)) : allFigures.push(figures);
  421. }
  422. return direction < 0 && allFigures.reverse(), allFigures;
  423. }));
  424. }
  425. function getFavoritesFiguresTillPage(username, toDataFavId, semaphore) {
  426. return Favorites_awaiter(this, void 0, void 0, (function*() {
  427. (null == toDataFavId || toDataFavId <= 0) && (Logger.logWarning("toDataFavId must be greater than 0. Using default 1 instead."),
  428. toDataFavId = -1);
  429. let dataFavId = toDataFavId;
  430. const allFigures = [];
  431. let running = !0;
  432. for (;running; ) {
  433. const figures = yield getFavoritesFigures(username, dataFavId, 1, semaphore);
  434. let currFigureId;
  435. if (0 !== figures.length) {
  436. currFigureId = figures[0].id;
  437. const dataFavIdString = figures[figures.length - 1].getAttribute("data-fav-id");
  438. if (null == dataFavIdString) {
  439. running = !1;
  440. break;
  441. }
  442. dataFavId = parseInt(dataFavIdString);
  443. }
  444. undefined === currFigureId ? running = !1 : IdArray.containsId(figures, toDataFavId, "data-fav-id") ? (allFigures.push(IdArray.getTillId(figures, toDataFavId, "data-fav-id")),
  445. running = !1) : allFigures.push(figures);
  446. }
  447. return allFigures;
  448. }));
  449. }
  450. function getFavoritesFiguresSincePage(username, fromDataFavId, semaphore) {
  451. return Favorites_awaiter(this, void 0, void 0, (function*() {
  452. (null == fromDataFavId || fromDataFavId <= 0) && (Logger.logWarning("fromDataFavId must be greater than 0. Using default 1 instead."),
  453. fromDataFavId = -1);
  454. let dataFavId = fromDataFavId;
  455. const allFigures = [];
  456. let running = !0;
  457. for (;running; ) {
  458. const figures = yield getFavoritesFigures(username, dataFavId, 1, semaphore);
  459. let currFigureId;
  460. if (0 !== figures.length) {
  461. currFigureId = figures[0].id;
  462. const dataFavIdString = figures[figures.length - 1].getAttribute("data-fav-id");
  463. if (null == dataFavIdString) {
  464. running = !1;
  465. break;
  466. }
  467. dataFavId = parseInt(dataFavIdString);
  468. }
  469. undefined === currFigureId ? running = !1 : IdArray.containsId(figures, fromDataFavId, "data-fav-id") ? allFigures.push(IdArray.getSinceId(figures, fromDataFavId, "data-fav-id")) : allFigures.push(figures);
  470. }
  471. return allFigures;
  472. }));
  473. }
  474. function getFavoritesFiguresBetweenPages(username, fromDataFavId, toDataFavId, semaphore) {
  475. return Favorites_awaiter(this, void 0, void 0, (function*() {
  476. (null == fromDataFavId || fromDataFavId <= 0) && (Logger.logWarning("fromDataFavId must be greater than 0. Using default 1 instead."),
  477. fromDataFavId = -1), (null == toDataFavId || toDataFavId <= 0) && (Logger.logError("toDataFavId must be greater than 0. Using default 1 instead."),
  478. toDataFavId = -1);
  479. let dataFavId = fromDataFavId;
  480. const allFigures = [];
  481. let running = !0;
  482. for (;running; ) {
  483. const figures = yield getFavoritesFigures(username, dataFavId, 1, semaphore);
  484. let currFigureId;
  485. if (0 !== figures.length) {
  486. currFigureId = figures[0].id;
  487. const dataFavIdString = figures[figures.length - 1].getAttribute("data-fav-id");
  488. if (null == dataFavIdString) {
  489. running = !1;
  490. break;
  491. }
  492. dataFavId = parseInt(dataFavIdString);
  493. }
  494. undefined === currFigureId ? running = !1 : IdArray.containsId(figures, fromDataFavId, "data-fav-id") ? allFigures.push(IdArray.getSinceId(figures, fromDataFavId, "data-fav-id")) : IdArray.containsId(figures, toDataFavId, "data-fav-id") ? (allFigures.push(IdArray.getTillId(figures, toDataFavId, "data-fav-id")),
  495. running = !1) : allFigures.push(figures);
  496. }
  497. return allFigures;
  498. }));
  499. }
  500. function getFavoritesFigures(username, dataFavId, direction, semaphore) {
  501. return Favorites_awaiter(this, void 0, void 0, (function*() {
  502. const galleryDoc = yield Page.getFavoritesPage(username, dataFavId, direction, semaphore);
  503. if (!galleryDoc || !(galleryDoc instanceof Document) || galleryDoc.getElementById("no-images")) return Logger.logMessage(`No images found at favorites of "${username}" on page "${dataFavId}".`),
  504. [];
  505. const figures = galleryDoc.getElementsByTagName("figure");
  506. return null == figures || 0 === figures.length ? (Logger.logMessage(`No figures found at favorites of "${username}" on page "${dataFavId}".`),
  507. []) : Array.from(figures);
  508. }));
  509. }
  510. var Journals_awaiter = function(thisArg, _arguments, P, generator) {
  511. return new (P || (P = Promise))((function(resolve, reject) {
  512. function fulfilled(value) {
  513. try {
  514. step(generator.next(value));
  515. } catch (e) {
  516. reject(e);
  517. }
  518. }
  519. function rejected(value) {
  520. try {
  521. step(generator.throw(value));
  522. } catch (e) {
  523. reject(e);
  524. }
  525. }
  526. function step(result) {
  527. result.done ? resolve(result.value) : function adopt(value) {
  528. return value instanceof P ? value : new P((function(resolve) {
  529. resolve(value);
  530. }));
  531. }(result.value).then(fulfilled, rejected);
  532. }
  533. step((generator = generator.apply(thisArg, _arguments || [])).next());
  534. }));
  535. };
  536. class Journals {
  537. constructor(semaphore) {
  538. this._semaphore = semaphore;
  539. }
  540. static get hardLink() {
  541. return FuraffinityRequests.fullUrl + "/journals/";
  542. }
  543. getFiguresBetweenIds(username_1, fromId_1, toId_1, action_1) {
  544. return Journals_awaiter(this, arguments, void 0, (function*(username, fromId, toId, action, delay = 100) {
  545. return fromId = convertToNumber(fromId), toId = convertToNumber(toId), null == fromId || fromId <= 0 ? yield WaitAndCallAction.callFunctionAsync(getJournalsSectionsTillId, [ username, toId, void 0, this._semaphore ], action, delay) : null == toId || toId <= 0 ? yield WaitAndCallAction.callFunctionAsync(getJournalsSectionsSinceId, [ username, fromId, void 0, this._semaphore ], action, delay) : yield WaitAndCallAction.callFunctionAsync(getJournalsSectionsBetweenIds, [ username, fromId, toId, void 0, void 0, this._semaphore ], action, delay);
  546. }));
  547. }
  548. getFiguresBetweenIdsBetweenPages(username_1, fromId_1, toId_1, fromPageNumber_1, toPageNumber_1, action_1) {
  549. return Journals_awaiter(this, arguments, void 0, (function*(username, fromId, toId, fromPageNumber, toPageNumber, action, delay = 100) {
  550. return fromId = convertToNumber(fromId), toId = convertToNumber(toId), fromPageNumber = convertToNumber(fromPageNumber),
  551. toPageNumber = convertToNumber(toPageNumber), null == fromId || fromId <= 0 ? yield WaitAndCallAction.callFunctionAsync(getJournalsSectionsTillId, [ username, toId, fromPageNumber, this._semaphore ], action, delay) : null == toId || toId <= 0 ? yield WaitAndCallAction.callFunctionAsync(getJournalsSectionsSinceId, [ username, fromId, toPageNumber, this._semaphore ], action, delay) : yield WaitAndCallAction.callFunctionAsync(getJournalsSectionsBetweenIds, [ username, fromId, toId, fromPageNumber, toPageNumber, this._semaphore ], action, delay);
  552. }));
  553. }
  554. getSectionsBetweenPages(username_1, fromPageNumber_1, toPageNumber_1, action_1) {
  555. return Journals_awaiter(this, arguments, void 0, (function*(username, fromPageNumber, toPageNumber, action, delay = 100) {
  556. return fromPageNumber = convertToNumber(fromPageNumber), toPageNumber = convertToNumber(toPageNumber),
  557. null == fromPageNumber || fromPageNumber <= 0 ? yield WaitAndCallAction.callFunctionAsync(getJournalsSectionsTillPage, [ username, toPageNumber, this._semaphore ], action, delay, !0) : null == toPageNumber || toPageNumber <= 0 ? yield WaitAndCallAction.callFunctionAsync(getJournalsSectionsSincePage, [ username, fromPageNumber, this._semaphore ], action, delay) : yield WaitAndCallAction.callFunctionAsync(getJournalsSectionsBetweenPages, [ username, fromPageNumber, toPageNumber, this._semaphore ], action, delay, !0);
  558. }));
  559. }
  560. getSections(username_1, pageNumber_1, action_1) {
  561. return Journals_awaiter(this, arguments, void 0, (function*(username, pageNumber, action, delay = 100) {
  562. return pageNumber = convertToNumber(pageNumber), yield WaitAndCallAction.callFunctionAsync(getJournalsSections, [ username, pageNumber, this._semaphore ], action, delay);
  563. }));
  564. }
  565. getPage(username_1, pageNumber_1, action_1) {
  566. return Journals_awaiter(this, arguments, void 0, (function*(username, pageNumber, action, delay = 100) {
  567. return pageNumber = convertToNumber(pageNumber), yield WaitAndCallAction.callFunctionAsync(Page.getJournalsPage, [ username, pageNumber, this._semaphore ], action, delay);
  568. }));
  569. }
  570. }
  571. function getJournalsSectionsTillId(username, toId, fromPage, semaphore) {
  572. return Journals_awaiter(this, void 0, void 0, (function*() {
  573. if (null == toId || toId <= 0) return Logger.logError("No toId given"), [];
  574. const allSections = [];
  575. let running = !0, i = 1;
  576. for (null != fromPage && fromPage >= 1 && (i = fromPage); running; ) {
  577. const sections = yield getJournalsSections(username, i, semaphore);
  578. let currSectionId;
  579. 0 !== sections.length && (currSectionId = sections[0].id), undefined === currSectionId ? running = !1 : IdArray.containsId(sections, toId) ? (allSections.push(IdArray.getTillId(sections, toId)),
  580. running = !1) : (allSections.push(sections), i++);
  581. }
  582. return allSections;
  583. }));
  584. }
  585. function getJournalsSectionsSinceId(username, fromId, toPage, semaphore) {
  586. return Journals_awaiter(this, void 0, void 0, (function*() {
  587. if (null == fromId || fromId <= 0) return Logger.logError("No fromId given"), [];
  588. const direction = null == toPage || toPage <= 0 ? -1 : 1;
  589. let lastSectionId, running = !0, i = null == toPage || toPage <= 0 ? 1 : toPage;
  590. if (null == toPage || toPage <= 0) for (;running; ) {
  591. const figures = yield getJournalsSections(username, i, semaphore);
  592. let currSectionId = lastSectionId;
  593. 0 !== figures.length && (currSectionId = figures[0].id), currSectionId === lastSectionId || IdArray.containsId(figures, fromId) ? running = !1 : i++;
  594. }
  595. const allSections = [];
  596. for (lastSectionId = void 0, running = !0; running; ) {
  597. const figures = yield getJournalsSections(username, i, semaphore);
  598. let currSectionId = lastSectionId;
  599. if (0 !== figures.length && (currSectionId = figures[0].id), currSectionId === lastSectionId) running = !1; else {
  600. if (IdArray.containsId(figures, fromId)) {
  601. const figuresPush = IdArray.getSinceId(figures, fromId);
  602. direction < 0 && (figuresPush.reverse(), running = !1), allSections.push(figuresPush);
  603. } else direction < 0 && figures.reverse(), allSections.push(figures);
  604. i += direction;
  605. }
  606. }
  607. return direction < 0 && allSections.reverse(), allSections;
  608. }));
  609. }
  610. function getJournalsSectionsBetweenIds(username, fromId, toId, fromPage, toPage, semaphore, percentId) {
  611. return Journals_awaiter(this, void 0, void 0, (function*() {
  612. if (null == fromId || fromId <= 0) return Logger.logError("No fromId given"), [];
  613. if (null == toId || toId <= 0) return Logger.logError("No toId given"), [];
  614. (null == fromPage || fromPage <= 0 || null == toPage || toPage <= 1) && (Logger.logWarning("No fromPage or toPage given. Percentages can not be calculated."),
  615. percentId = void 0);
  616. let i = 1;
  617. null != fromPage && fromPage >= 1 && (i = fromPage);
  618. const allSections = [];
  619. let running = !0, completedPages = 0;
  620. for (;running; ) {
  621. null != toPage && toPage >= 1 && i >= toPage && (running = !1);
  622. const sections = yield getJournalsSections(username, i, semaphore);
  623. let currSectionId;
  624. 0 !== sections.length && (currSectionId = sections[0].id), undefined === currSectionId ? running = !1 : (IdArray.containsId(sections, fromId) && allSections.push(IdArray.getSinceId(sections, fromId)),
  625. IdArray.containsId(sections, toId) ? (allSections.push(IdArray.getBetweenIds(sections, fromId, toId)),
  626. running = !1) : (allSections.push(sections), i++)), completedPages++, null != toPage && toPage >= 1 && PercentHelper.updatePercentValue(percentId, completedPages, toPage);
  627. }
  628. return allSections;
  629. }));
  630. }
  631. function getJournalsSectionsTillPage(username, toPageNumber, semaphore, percentId) {
  632. return Journals_awaiter(this, void 0, void 0, (function*() {
  633. (null == toPageNumber || toPageNumber <= 0) && (Logger.logWarning("toPageNumber must be greater than 0. Using default 1 instead."),
  634. toPageNumber = 1);
  635. const allSections = [];
  636. let completedPages = 0;
  637. for (let i = 1; i <= toPageNumber; i++) {
  638. const sections = yield getJournalsSections(username, i, semaphore);
  639. 0 !== sections.length && allSections.push(sections), completedPages++, PercentHelper.updatePercentValue(percentId, completedPages, toPageNumber);
  640. }
  641. return allSections;
  642. }));
  643. }
  644. function getJournalsSectionsSincePage(username, fromPageNumber, semaphore) {
  645. return Journals_awaiter(this, void 0, void 0, (function*() {
  646. (null == fromPageNumber || fromPageNumber <= 0) && (Logger.logWarning("fromPageNumber must be greater than 0. Using default 1 instead."),
  647. fromPageNumber = 1);
  648. const allSections = [];
  649. let running = !0, i = fromPageNumber;
  650. for (;running; ) {
  651. const sections = yield getJournalsSections(username, i, semaphore);
  652. let currSectionId;
  653. 0 !== sections.length && (currSectionId = sections[0].id), undefined === currSectionId ? running = !1 : (allSections.push(sections),
  654. i++);
  655. }
  656. return allSections;
  657. }));
  658. }
  659. function getJournalsSectionsBetweenPages(username, fromPageNumber, toPageNumber, semaphore, percentId) {
  660. return Journals_awaiter(this, void 0, void 0, (function*() {
  661. (null == fromPageNumber || fromPageNumber <= 0) && (Logger.logWarning("fromPageNumber must be greater than 0. Using default 1 instead."),
  662. fromPageNumber = 1), (null == toPageNumber || toPageNumber <= 0) && (Logger.logError("toPageNumber must be greater than 0. Using default 1 instead."),
  663. toPageNumber = 1);
  664. const allSections = [], direction = fromPageNumber < toPageNumber ? 1 : -1, totalPages = Math.abs(toPageNumber - fromPageNumber) + 1;
  665. let completedPages = 0;
  666. for (let i = fromPageNumber; i <= toPageNumber; i += direction) {
  667. const sections = yield getJournalsSections(username, i, semaphore);
  668. 0 !== sections.length && allSections.push(sections), completedPages++, PercentHelper.updatePercentValue(percentId, completedPages, totalPages);
  669. }
  670. return allSections;
  671. }));
  672. }
  673. function getJournalsSections(username, pageNumber, semaphore) {
  674. return Journals_awaiter(this, void 0, void 0, (function*() {
  675. (null == pageNumber || pageNumber <= 0) && (Logger.logWarning("pageNumber must be greater than 0. Using default 1 instead."),
  676. pageNumber = 1);
  677. const galleryDoc = yield Page.getJournalsPage(username, pageNumber, semaphore);
  678. if (!galleryDoc) return Logger.logWarning(`No journals found at "${username}" on page "${pageNumber}".`),
  679. [];
  680. const columnPage = galleryDoc.getElementById("columnpage");
  681. if (!columnPage) return Logger.logWarning(`No column page found at "${username}" on page "${pageNumber}".`),
  682. [];
  683. const sections = columnPage.getElementsByTagName("section");
  684. return null == sections || 0 === sections.length ? (Logger.logWarning(`No journals found at "${username}" on page "${pageNumber}".`),
  685. []) : Array.from(sections);
  686. }));
  687. }
  688. var Search_awaiter = function(thisArg, _arguments, P, generator) {
  689. return new (P || (P = Promise))((function(resolve, reject) {
  690. function fulfilled(value) {
  691. try {
  692. step(generator.next(value));
  693. } catch (e) {
  694. reject(e);
  695. }
  696. }
  697. function rejected(value) {
  698. try {
  699. step(generator.throw(value));
  700. } catch (e) {
  701. reject(e);
  702. }
  703. }
  704. function step(result) {
  705. result.done ? resolve(result.value) : function adopt(value) {
  706. return value instanceof P ? value : new P((function(resolve) {
  707. resolve(value);
  708. }));
  709. }(result.value).then(fulfilled, rejected);
  710. }
  711. step((generator = generator.apply(thisArg, _arguments || [])).next());
  712. }));
  713. };
  714. class Search {
  715. constructor(semaphore) {
  716. this._semaphore = semaphore;
  717. }
  718. static get hardLink() {
  719. return FuraffinityRequests.fullUrl + "/search/";
  720. }
  721. get newSearchOptions() {
  722. return new SearchOptions;
  723. }
  724. static get newSearchOptions() {
  725. return new SearchOptions;
  726. }
  727. get SearchOptions() {
  728. return SearchOptions;
  729. }
  730. static get SearchOptions() {
  731. return SearchOptions;
  732. }
  733. getFiguresBetweenIds(fromId_1, toId_1, searchOptions_1, action_1) {
  734. return Search_awaiter(this, arguments, void 0, (function*(fromId, toId, searchOptions, action, delay = 100) {
  735. return fromId = convertToNumber(fromId), toId = convertToNumber(toId), null == fromId || fromId <= 0 ? yield WaitAndCallAction.callFunctionAsync(SearchRequests.getSearchFiguresTillId, [ toId, void 0, searchOptions, this._semaphore ], action, delay) : null == toId || toId <= 0 ? yield WaitAndCallAction.callFunctionAsync(SearchRequests.getSearchFiguresSinceId, [ fromId, void 0, searchOptions, this._semaphore ], action, delay) : yield WaitAndCallAction.callFunctionAsync(SearchRequests.getSearchFiguresBetweenIds, [ fromId, toId, void 0, void 0, searchOptions, this._semaphore ], action, delay, !0);
  736. }));
  737. }
  738. getFiguresBetweenIdsBetweenPages(fromId_1, toId_1, fromPageNumber_1, toPageNumber_1, searchOptions_1, action_1) {
  739. return Search_awaiter(this, arguments, void 0, (function*(fromId, toId, fromPageNumber, toPageNumber, searchOptions, action, delay = 100) {
  740. return fromId = convertToNumber(fromId), toId = convertToNumber(toId), fromPageNumber = convertToNumber(fromPageNumber),
  741. toPageNumber = convertToNumber(toPageNumber), null == fromId || fromId <= 0 ? yield WaitAndCallAction.callFunctionAsync(SearchRequests.getSearchFiguresTillId, [ toId, fromPageNumber, searchOptions, this._semaphore ], action, delay) : null == toId || toId <= 0 ? yield WaitAndCallAction.callFunctionAsync(SearchRequests.getSearchFiguresSinceId, [ fromId, toPageNumber, searchOptions, this._semaphore ], action, delay) : yield WaitAndCallAction.callFunctionAsync(SearchRequests.getSearchFiguresBetweenIds, [ fromId, toId, fromPageNumber, toPageNumber, searchOptions, this._semaphore ], action, delay, !0);
  742. }));
  743. }
  744. getFiguresBetweenPages(fromPageNumber_1, toPageNumber_1, searchOptions_1, action_1) {
  745. return Search_awaiter(this, arguments, void 0, (function*(fromPageNumber, toPageNumber, searchOptions, action, delay = 100) {
  746. return fromPageNumber = convertToNumber(fromPageNumber), toPageNumber = convertToNumber(toPageNumber),
  747. null == fromPageNumber || fromPageNumber <= 0 ? yield WaitAndCallAction.callFunctionAsync(SearchRequests.getSearchFiguresTillPage, [ toPageNumber, searchOptions, this._semaphore ], action, delay, !0) : null == toPageNumber || toPageNumber <= 0 ? yield WaitAndCallAction.callFunctionAsync(SearchRequests.getSearchFiguresSincePage, [ fromPageNumber, searchOptions, this._semaphore ], action, delay) : yield WaitAndCallAction.callFunctionAsync(SearchRequests.getSearchFiguresBetweenPages, [ fromPageNumber, toPageNumber, searchOptions, this._semaphore ], action, delay, !0);
  748. }));
  749. }
  750. getFigures(pageNumber_1, searchOptions_1, action_1) {
  751. return Search_awaiter(this, arguments, void 0, (function*(pageNumber, searchOptions, action, delay = 100) {
  752. return pageNumber = convertToNumber(pageNumber), yield WaitAndCallAction.callFunctionAsync(SearchRequests.getSearchFigures, [ pageNumber, searchOptions, this._semaphore ], action, delay);
  753. }));
  754. }
  755. getPage(pageNumber_1, searchOptions_1, action_1) {
  756. return Search_awaiter(this, arguments, void 0, (function*(pageNumber, searchOptions, action, delay = 100) {
  757. return pageNumber = convertToNumber(pageNumber), yield WaitAndCallAction.callFunctionAsync(Page.getSearchPage, [ pageNumber, searchOptions, this._semaphore ], action, delay);
  758. }));
  759. }
  760. }
  761. class SearchOptions {
  762. constructor() {
  763. this.input = "", this.orderBy = SearchOptions.orderBy.relevancy, this.orderDirection = SearchOptions.orderDirection.descending,
  764. this.range = SearchOptions.range.alltime, this.rangeFrom = void 0, this.rangeTo = void 0,
  765. this.ratingGeneral = !0, this.ratingMature = !0, this.ratingAdult = !0, this.typeArt = !0,
  766. this.typeMusic = !0, this.typeFlash = !0, this.typeStory = !0, this.typePhotos = !0,
  767. this.typePoetry = !0, this.matching = SearchOptions.matching.all;
  768. }
  769. static get orderBy() {
  770. return {
  771. relevancy: "relevancy",
  772. date: "date",
  773. popularity: "popularity"
  774. };
  775. }
  776. static get orderDirection() {
  777. return {
  778. ascending: "asc",
  779. descending: "desc"
  780. };
  781. }
  782. static get range() {
  783. return {
  784. "1day": "1day",
  785. "3days": "3days",
  786. "7days": "7days",
  787. "30days": "30days",
  788. "90days": "90days",
  789. "1year": "1year",
  790. "3years": "3years",
  791. "5years": "5years",
  792. alltime: "all",
  793. manual: "manual"
  794. };
  795. }
  796. static get matching() {
  797. return {
  798. all: "all",
  799. any: "any",
  800. extended: "extended"
  801. };
  802. }
  803. }
  804. var SearchRequests_awaiter = function(thisArg, _arguments, P, generator) {
  805. return new (P || (P = Promise))((function(resolve, reject) {
  806. function fulfilled(value) {
  807. try {
  808. step(generator.next(value));
  809. } catch (e) {
  810. reject(e);
  811. }
  812. }
  813. function rejected(value) {
  814. try {
  815. step(generator.throw(value));
  816. } catch (e) {
  817. reject(e);
  818. }
  819. }
  820. function step(result) {
  821. result.done ? resolve(result.value) : function adopt(value) {
  822. return value instanceof P ? value : new P((function(resolve) {
  823. resolve(value);
  824. }));
  825. }(result.value).then(fulfilled, rejected);
  826. }
  827. step((generator = generator.apply(thisArg, _arguments || [])).next());
  828. }));
  829. };
  830. class SearchRequests {
  831. constructor(semaphore) {
  832. this._semaphore = semaphore, this.Browse = new Browse(this._semaphore), this.Search = new Search(this._semaphore);
  833. }
  834. static getBrowseFiguresTillId(toId, fromPage, browseOptions, semaphore) {
  835. return SearchRequests_awaiter(this, void 0, void 0, (function*() {
  836. if (null == toId || toId <= 0) return Logger.logError("No toId given"), [];
  837. let allFigures = [], running = !0, i = 1;
  838. for (null != fromPage && fromPage >= 1 && (i = fromPage); running; ) {
  839. const figures = yield SearchRequests.getBrowseFigures(i, browseOptions, semaphore);
  840. let currFigureId;
  841. 0 !== figures.length && (currFigureId = figures[0].id), undefined === currFigureId ? running = !1 : IdArray.containsId(figures, toId) ? (allFigures.push(IdArray.getTillId(figures, toId)),
  842. running = !1) : (allFigures.push(figures), i++);
  843. }
  844. return allFigures;
  845. }));
  846. }
  847. static getBrowseFiguresSinceId(fromId, toPage, browseOptions, semaphore) {
  848. return SearchRequests_awaiter(this, void 0, void 0, (function*() {
  849. if (null == fromId || fromId <= 0) return Logger.logError("No fromId given"), [];
  850. const direction = null == toPage || toPage <= 0 ? -1 : 1;
  851. let lastFigureId, running = !0, i = null == toPage || toPage <= 0 ? 1 : toPage;
  852. if (null == toPage || toPage <= 0) for (;running; ) {
  853. const figures = yield SearchRequests.getBrowseFigures(i, browseOptions, semaphore);
  854. let currFigureId = lastFigureId;
  855. 0 !== figures.length && (currFigureId = figures[0].id), currFigureId === lastFigureId || IdArray.containsId(figures, fromId) ? running = !1 : i++;
  856. }
  857. let allFigures = [];
  858. for (lastFigureId = void 0, running = !0; running; ) {
  859. const figures = yield SearchRequests.getBrowseFigures(i, browseOptions, semaphore);
  860. let currFigureId = lastFigureId;
  861. if (0 !== figures.length && (currFigureId = figures[0].id), currFigureId === lastFigureId) running = !1; else {
  862. if (IdArray.containsId(figures, fromId)) {
  863. const figuresPush = IdArray.getSinceId(figures, fromId);
  864. direction < 0 && (figuresPush.reverse(), running = !1), allFigures.push(figuresPush);
  865. } else direction < 0 && figures.reverse(), allFigures.push(figures);
  866. i += direction;
  867. }
  868. }
  869. return direction < 0 && allFigures.reverse(), allFigures;
  870. }));
  871. }
  872. static getBrowseFiguresBetweenIds(fromId, toId, fromPage, toPage, browseOptions, semaphore, percentId) {
  873. return SearchRequests_awaiter(this, void 0, void 0, (function*() {
  874. if (null == fromId || fromId <= 0) return Logger.logError("No fromId given"), [];
  875. if (null == toId || toId <= 0) return Logger.logError("No toId given"), [];
  876. (null == fromPage || fromPage <= 0 || null == toPage || toPage <= 1) && (Logger.logWarning("No fromPage or toPage given. Percentages can not be calculated."),
  877. percentId = void 0);
  878. let i = 1;
  879. null != fromPage && fromPage >= 1 && (i = fromPage);
  880. const allFigures = [];
  881. let running = !0, completedPages = 0;
  882. for (;running; ) {
  883. null != toPage && toPage >= 1 && i >= toPage && (running = !1);
  884. const figures = yield SearchRequests.getBrowseFigures(i, browseOptions, semaphore);
  885. let currFigureId;
  886. 0 !== figures.length && (currFigureId = figures[0].id), undefined === currFigureId ? running = !1 : (IdArray.containsId(figures, fromId) && allFigures.push(IdArray.getSinceId(figures, fromId)),
  887. IdArray.containsId(figures, toId) ? (allFigures.push(IdArray.getBetweenIds(figures, fromId, toId)),
  888. running = !1) : (allFigures.push(figures), i++)), completedPages++, null != toPage && toPage >= 1 && PercentHelper.updatePercentValue(percentId, completedPages, toPage);
  889. }
  890. return allFigures;
  891. }));
  892. }
  893. static getBrowseFiguresTillPage(toPageNumber, browseOptions, semaphore, percentId) {
  894. return SearchRequests_awaiter(this, void 0, void 0, (function*() {
  895. (null == toPageNumber || toPageNumber <= 0) && (Logger.logWarning("toPageNumber must be greater than 0. Using default 1 instead."),
  896. toPageNumber = 1);
  897. const allFigures = [];
  898. let completedPages = 0;
  899. for (let i = 1; i <= toPageNumber; i++) {
  900. const figures = yield SearchRequests.getBrowseFigures(i, browseOptions, semaphore);
  901. 0 !== figures.length && allFigures.push(figures), completedPages++, PercentHelper.updatePercentValue(percentId, completedPages, toPageNumber);
  902. }
  903. return allFigures;
  904. }));
  905. }
  906. static getBrowseFiguresSincePage(fromPageNumber, browseOptions, semaphore) {
  907. return SearchRequests_awaiter(this, void 0, void 0, (function*() {
  908. (null == fromPageNumber || fromPageNumber <= 0) && (Logger.logWarning("fromPageNumber must be greater than 0. Using default 1 instead."),
  909. fromPageNumber = 1);
  910. const allFigures = [];
  911. let running = !0, i = fromPageNumber;
  912. for (;running; ) {
  913. const figures = yield SearchRequests.getBrowseFigures(i, browseOptions, semaphore);
  914. let currFigureId;
  915. 0 !== figures.length && (currFigureId = figures[0].id), undefined === currFigureId ? running = !1 : (allFigures.push(figures),
  916. i++);
  917. }
  918. return allFigures;
  919. }));
  920. }
  921. static getBrowseFiguresBetweenPages(fromPageNumber, toPageNumber, browseOptions, semaphore, percentId) {
  922. return SearchRequests_awaiter(this, void 0, void 0, (function*() {
  923. (null == fromPageNumber || fromPageNumber <= 0) && (Logger.logWarning("fromPageNumber must be greater than 0. Using default 1 instead."),
  924. fromPageNumber = 1), (null == toPageNumber || toPageNumber <= 0) && (Logger.logError("toPageNumber must be greater than 0. Using default 1 instead."),
  925. toPageNumber = 1);
  926. const allFigures = [], direction = fromPageNumber <= toPageNumber ? 1 : -1, totalPages = Math.abs(toPageNumber - fromPageNumber) + 1;
  927. for (let i = fromPageNumber; i <= toPageNumber; i += direction) {
  928. const figures = yield SearchRequests.getBrowseFigures(i, browseOptions, semaphore);
  929. 0 !== figures.length && allFigures.push(figures), PercentHelper.updatePercentValue(percentId, 0, totalPages);
  930. }
  931. return allFigures;
  932. }));
  933. }
  934. static getBrowseFigures(pageNumber, browseOptions, semaphore) {
  935. return SearchRequests_awaiter(this, void 0, void 0, (function*() {
  936. (null == pageNumber || pageNumber <= 0) && (Logger.logWarning("No pageNumber given. Using default value of 1."),
  937. pageNumber = 1);
  938. const galleryDoc = yield Page.getBrowsePage(pageNumber, browseOptions, semaphore);
  939. if (!galleryDoc || !(galleryDoc instanceof Document) || galleryDoc.getElementById("no-images")) return Logger.logMessage(`No images found at browse on page "${pageNumber}".`),
  940. [];
  941. const figures = galleryDoc.getElementsByTagName("figure");
  942. return null == figures || 0 === figures.length ? (Logger.logMessage(`No figures found at browse on page "${pageNumber}".`),
  943. []) : Array.from(figures);
  944. }));
  945. }
  946. static getSearchFiguresTillId(toId, fromPage, searchOptions, semaphore) {
  947. return SearchRequests_awaiter(this, void 0, void 0, (function*() {
  948. if (null == toId || toId <= 0) return Logger.logError("No toId given"), [];
  949. let allFigures = [], running = !0, i = 1;
  950. for (null != fromPage && fromPage >= 1 && (i = fromPage); running; ) {
  951. const figures = yield SearchRequests.getSearchFigures(i, searchOptions, semaphore);
  952. let currFigureId;
  953. 0 !== figures.length && (currFigureId = figures[0].id), undefined === currFigureId ? running = !1 : IdArray.containsId(figures, toId) ? (allFigures.push(IdArray.getTillId(figures, toId)),
  954. running = !1) : (allFigures.push(figures), i++);
  955. }
  956. return allFigures;
  957. }));
  958. }
  959. static getSearchFiguresSinceId(fromId, toPage, searchOptions, semaphore) {
  960. return SearchRequests_awaiter(this, void 0, void 0, (function*() {
  961. if (null == fromId || fromId <= 0) return Logger.logError("No fromId given"), [];
  962. const direction = null == toPage || toPage <= 0 ? -1 : 1;
  963. let lastFigureId, running = !0, i = null == toPage || toPage <= 0 ? 1 : toPage;
  964. if (null == toPage || toPage <= 0) for (;running; ) {
  965. const figures = yield SearchRequests.getSearchFigures(i, searchOptions, semaphore);
  966. let currFigureId = lastFigureId;
  967. 0 !== figures.length && (currFigureId = figures[0].id), currFigureId === lastFigureId || IdArray.containsId(figures, fromId) ? running = !1 : i++;
  968. }
  969. let allFigures = [];
  970. for (lastFigureId = void 0, running = !0; running; ) {
  971. const figures = yield SearchRequests.getSearchFigures(i, searchOptions, semaphore);
  972. let currFigureId = lastFigureId;
  973. if (0 !== figures.length && (currFigureId = figures[0].id), currFigureId === lastFigureId) running = !1; else {
  974. if (IdArray.containsId(figures, fromId)) {
  975. const figuresPush = IdArray.getSinceId(figures, fromId);
  976. direction < 0 && (figuresPush.reverse(), running = !1), allFigures.push(figuresPush);
  977. } else direction < 0 && figures.reverse(), allFigures.push(figures);
  978. i += direction;
  979. }
  980. }
  981. return direction < 0 && allFigures.reverse(), allFigures;
  982. }));
  983. }
  984. static getSearchFiguresBetweenIds(fromId, toId, fromPage, toPage, searchOptions, semaphore, percentId) {
  985. return SearchRequests_awaiter(this, void 0, void 0, (function*() {
  986. if (null == fromId || fromId <= 0) return Logger.logError("No fromId given"), [];
  987. if (null == toId || toId <= 0) return Logger.logError("No toId given"), [];
  988. (null == fromPage || fromPage <= 0 || null == toPage || toPage <= 1) && (Logger.logWarning("No fromPage or toPage given. Percentages can not be calculated."),
  989. percentId = void 0);
  990. let i = 1;
  991. null != fromPage && fromPage >= 1 && (i = fromPage);
  992. const allFigures = [];
  993. let running = !0, completedPages = 0;
  994. for (;running; ) {
  995. null != toPage && toPage >= 1 && i >= toPage && (running = !1);
  996. const figures = yield SearchRequests.getSearchFigures(i, searchOptions, semaphore);
  997. let currFigureId;
  998. 0 !== figures.length && (currFigureId = figures[0].id), undefined === currFigureId ? running = !1 : (IdArray.containsId(figures, fromId) && allFigures.push(IdArray.getSinceId(figures, fromId)),
  999. IdArray.containsId(figures, toId) ? (allFigures.push(IdArray.getBetweenIds(figures, fromId, toId)),
  1000. running = !1) : (allFigures.push(figures), i++)), completedPages++, null != toPage && toPage >= 1 && PercentHelper.updatePercentValue(percentId, completedPages, toPage);
  1001. }
  1002. return allFigures;
  1003. }));
  1004. }
  1005. static getSearchFiguresTillPage(toPageNumber, searchOptions, semaphore, percentId) {
  1006. return SearchRequests_awaiter(this, void 0, void 0, (function*() {
  1007. (null == toPageNumber || toPageNumber <= 0) && (Logger.logWarning("toPageNumber must be greater than 0. Using default 1 instead."),
  1008. toPageNumber = 1);
  1009. const allFigures = [];
  1010. let completedPages = 0;
  1011. for (let i = 1; i <= toPageNumber; i++) {
  1012. const figures = yield SearchRequests.getSearchFigures(i, searchOptions, semaphore);
  1013. 0 !== figures.length && allFigures.push(figures), completedPages++, PercentHelper.updatePercentValue(percentId, completedPages, toPageNumber);
  1014. }
  1015. return allFigures;
  1016. }));
  1017. }
  1018. static getSearchFiguresSincePage(fromPageNumber, searchOptions, semaphore) {
  1019. return SearchRequests_awaiter(this, void 0, void 0, (function*() {
  1020. (null == fromPageNumber || fromPageNumber <= 0) && (Logger.logWarning("fromPageNumber must be greater than 0. Using default 1 instead."),
  1021. fromPageNumber = 1);
  1022. const allFigures = [];
  1023. let running = !0, i = fromPageNumber;
  1024. for (;running; ) {
  1025. const figures = yield SearchRequests.getSearchFigures(i, searchOptions, semaphore);
  1026. let currFigureId;
  1027. 0 !== figures.length && (currFigureId = figures[0].id), undefined === currFigureId ? running = !1 : (allFigures.push(figures),
  1028. i++);
  1029. }
  1030. return allFigures;
  1031. }));
  1032. }
  1033. static getSearchFiguresBetweenPages(fromPageNumber, toPageNumber, searchOptions, semaphore, percentId) {
  1034. return SearchRequests_awaiter(this, void 0, void 0, (function*() {
  1035. (null == fromPageNumber || fromPageNumber <= 0) && (Logger.logWarning("fromPageNumber must be greater than 0. Using default 1 instead."),
  1036. fromPageNumber = 1), (null == toPageNumber || toPageNumber <= 0) && (Logger.logError("toPageNumber must be greater than 0. Using default 1 instead."),
  1037. toPageNumber = 1);
  1038. const allFigures = [], direction = fromPageNumber <= toPageNumber ? 1 : -1, totalPages = Math.abs(toPageNumber - fromPageNumber) + 1;
  1039. let completedPages = 0;
  1040. for (let i = fromPageNumber; i <= toPageNumber; i += direction) {
  1041. const figures = yield SearchRequests.getSearchFigures(i, searchOptions, semaphore);
  1042. 0 !== figures.length && allFigures.push(figures), completedPages++, PercentHelper.updatePercentValue(percentId, completedPages, totalPages);
  1043. }
  1044. return allFigures;
  1045. }));
  1046. }
  1047. static getSearchFigures(pageNumber, searchOptions, semaphore) {
  1048. return SearchRequests_awaiter(this, void 0, void 0, (function*() {
  1049. (null == pageNumber || pageNumber <= 0) && (Logger.logWarning("No pageNumber given. Using default value of 1."),
  1050. pageNumber = 1);
  1051. const galleryDoc = yield Page.getSearchPage(pageNumber, searchOptions, semaphore);
  1052. if (!galleryDoc || !(galleryDoc instanceof Document) || galleryDoc.getElementById("no-images")) return Logger.logMessage(`No images found at search on page "${pageNumber}".`),
  1053. [];
  1054. const figures = galleryDoc.getElementsByTagName("figure");
  1055. return null == figures || 0 === figures.length ? (Logger.logMessage(`No figures found at search on page "${pageNumber}".`),
  1056. []) : Array.from(figures);
  1057. }));
  1058. }
  1059. }
  1060. var Browse_awaiter = function(thisArg, _arguments, P, generator) {
  1061. return new (P || (P = Promise))((function(resolve, reject) {
  1062. function fulfilled(value) {
  1063. try {
  1064. step(generator.next(value));
  1065. } catch (e) {
  1066. reject(e);
  1067. }
  1068. }
  1069. function rejected(value) {
  1070. try {
  1071. step(generator.throw(value));
  1072. } catch (e) {
  1073. reject(e);
  1074. }
  1075. }
  1076. function step(result) {
  1077. result.done ? resolve(result.value) : function adopt(value) {
  1078. return value instanceof P ? value : new P((function(resolve) {
  1079. resolve(value);
  1080. }));
  1081. }(result.value).then(fulfilled, rejected);
  1082. }
  1083. step((generator = generator.apply(thisArg, _arguments || [])).next());
  1084. }));
  1085. };
  1086. class Browse {
  1087. constructor(semaphore) {
  1088. this._semaphore = semaphore;
  1089. }
  1090. static get hardLink() {
  1091. return FuraffinityRequests.fullUrl + "/browse/";
  1092. }
  1093. get newBrowseOptions() {
  1094. return new BrowseOptions;
  1095. }
  1096. static get newBrowseOptions() {
  1097. return new BrowseOptions;
  1098. }
  1099. get BrowseOptions() {
  1100. return BrowseOptions;
  1101. }
  1102. static get BrowseOptions() {
  1103. return BrowseOptions;
  1104. }
  1105. getFiguresBetweenIds(fromId_1, toId_1, browseOptions_1, action_1) {
  1106. return Browse_awaiter(this, arguments, void 0, (function*(fromId, toId, browseOptions, action, delay = 100) {
  1107. return fromId = convertToNumber(fromId), toId = convertToNumber(toId), null == fromId || fromId <= 0 ? yield WaitAndCallAction.callFunctionAsync(SearchRequests.getBrowseFiguresTillId, [ toId, void 0, browseOptions, this._semaphore ], action, delay) : null == toId || toId <= 0 ? yield WaitAndCallAction.callFunctionAsync(SearchRequests.getBrowseFiguresSinceId, [ fromId, void 0, browseOptions, this._semaphore ], action, delay) : yield WaitAndCallAction.callFunctionAsync(SearchRequests.getBrowseFiguresBetweenIds, [ fromId, toId, void 0, void 0, browseOptions, this._semaphore ], action, delay, !0);
  1108. }));
  1109. }
  1110. getFiguresBetweenIdsBetweenPages(fromId_1, toId_1, fromPageNumber_1, toPageNumber_1, browseOptions_1, action_1) {
  1111. return Browse_awaiter(this, arguments, void 0, (function*(fromId, toId, fromPageNumber, toPageNumber, browseOptions, action, delay = 100) {
  1112. return fromId = convertToNumber(fromId), toId = convertToNumber(toId), fromPageNumber = convertToNumber(fromPageNumber),
  1113. toPageNumber = convertToNumber(toPageNumber), null == fromId || fromId <= 0 ? yield WaitAndCallAction.callFunctionAsync(SearchRequests.getBrowseFiguresTillId, [ toId, fromPageNumber, browseOptions, this._semaphore ], action, delay) : null == toId || toId <= 0 ? yield WaitAndCallAction.callFunctionAsync(SearchRequests.getBrowseFiguresSinceId, [ fromId, toPageNumber, browseOptions, this._semaphore ], action, delay) : yield WaitAndCallAction.callFunctionAsync(SearchRequests.getBrowseFiguresBetweenIds, [ fromId, toId, fromPageNumber, toPageNumber, browseOptions, this._semaphore ], action, delay, !0);
  1114. }));
  1115. }
  1116. getFiguresBetweenPages(fromPageNumber_1, toPageNumber_1, browseOptions_1, action_1) {
  1117. return Browse_awaiter(this, arguments, void 0, (function*(fromPageNumber, toPageNumber, browseOptions, action, delay = 100) {
  1118. return fromPageNumber = convertToNumber(fromPageNumber), toPageNumber = convertToNumber(toPageNumber),
  1119. null == fromPageNumber || fromPageNumber <= 0 ? yield WaitAndCallAction.callFunctionAsync(SearchRequests.getBrowseFiguresTillPage, [ toPageNumber, browseOptions, this._semaphore ], action, delay, !0) : null == toPageNumber || toPageNumber <= 0 ? yield WaitAndCallAction.callFunctionAsync(SearchRequests.getBrowseFiguresSincePage, [ fromPageNumber, browseOptions, this._semaphore ], action, delay) : yield WaitAndCallAction.callFunctionAsync(SearchRequests.getBrowseFiguresBetweenPages, [ fromPageNumber, toPageNumber, browseOptions, this._semaphore ], action, delay, !0);
  1120. }));
  1121. }
  1122. getFigures(pageNumber_1, browseOptions_1, action_1) {
  1123. return Browse_awaiter(this, arguments, void 0, (function*(pageNumber, browseOptions, action, delay = 100) {
  1124. return pageNumber = convertToNumber(pageNumber), yield WaitAndCallAction.callFunctionAsync(SearchRequests.getBrowseFigures, [ pageNumber, browseOptions, this._semaphore ], action, delay);
  1125. }));
  1126. }
  1127. getPage(pageNumber_1, browseOptions_1, action_1) {
  1128. return Browse_awaiter(this, arguments, void 0, (function*(pageNumber, browseOptions, action, delay = 100) {
  1129. return pageNumber = convertToNumber(pageNumber), yield WaitAndCallAction.callFunctionAsync(Page.getBrowsePage, [ pageNumber, browseOptions, this._semaphore ], action, delay);
  1130. }));
  1131. }
  1132. }
  1133. class BrowseOptions {
  1134. constructor() {
  1135. this.category = BrowseOptions.category.all, this.type = BrowseOptions.type.all,
  1136. this.species = BrowseOptions.species.any, this.gender = BrowseOptions.gender.any,
  1137. this.results = BrowseOptions.results[72], this.ratingGeneral = !0, this.ratingMature = !0,
  1138. this.ratingAdult = !0;
  1139. }
  1140. static get category() {
  1141. return {
  1142. all: 1,
  1143. "artwork-digital": 2,
  1144. "artwork-traditional": 3,
  1145. "cel-shading": 4,
  1146. crafting: 5,
  1147. designs: 6,
  1148. flash: 7,
  1149. fursuiting: 8,
  1150. icons: 9,
  1151. mosaics: 10,
  1152. photography: 11,
  1153. "food-recipes": 32,
  1154. sculpting: 12,
  1155. story: 13,
  1156. poetry: 14,
  1157. prose: 15,
  1158. music: 16,
  1159. podcasts: 17,
  1160. skins: 18,
  1161. handhelds: 19,
  1162. resources: 20,
  1163. adoptables: 21,
  1164. auctions: 22,
  1165. contests: 23,
  1166. "current-events": 24,
  1167. desktops: 25,
  1168. stockart: 26,
  1169. screenshots: 27,
  1170. scraps: 28,
  1171. wallpaper: 29,
  1172. "ych-sale": 30,
  1173. other: 31
  1174. };
  1175. }
  1176. static get type() {
  1177. return {
  1178. all: 1,
  1179. abstract: 2,
  1180. "animal-related-non-anthro": 3,
  1181. anime: 4,
  1182. comics: 5,
  1183. doodle: 6,
  1184. fanart: 7,
  1185. fantasy: 8,
  1186. human: 9,
  1187. portraits: 10,
  1188. scenery: 11,
  1189. "still-life": 12,
  1190. tutorials: 13,
  1191. miscellaneous: 14,
  1192. "baby-fur": 101,
  1193. bondage: 102,
  1194. digimon: 103,
  1195. "fat-furs": 104,
  1196. "fetish-other": 105,
  1197. fursuit: 106,
  1198. gore: 119,
  1199. hyper: 107,
  1200. hypnosis: 121,
  1201. inflation: 108,
  1202. micro: 109,
  1203. muscle: 110,
  1204. "my-little-pony": 111,
  1205. paw: 112,
  1206. pokemon: 113,
  1207. pregnancy: 114,
  1208. sonic: 115,
  1209. transformation: 116,
  1210. "tf-tg": 120,
  1211. vore: 117,
  1212. "water-sports": 118,
  1213. "general-furry-art": 100,
  1214. techno: 201,
  1215. trance: 202,
  1216. house: 203,
  1217. "90s": 204,
  1218. "80s": 205,
  1219. "70s": 206,
  1220. "60s": 207,
  1221. "pre-60s": 208,
  1222. classical: 209,
  1223. "game-music": 210,
  1224. rock: 211,
  1225. pop: 212,
  1226. rap: 213,
  1227. industrial: 214,
  1228. "other-music": 200
  1229. };
  1230. }
  1231. static get species() {
  1232. return {
  1233. any: 1,
  1234. "airborne-vehicle": 10001,
  1235. alien: 5001,
  1236. amphibian: 1e3,
  1237. aquatic: 2e3,
  1238. avian: 3e3,
  1239. bear: 6002,
  1240. bovine: 6007,
  1241. canine: 6017,
  1242. cervine: 6018,
  1243. dog: 6010,
  1244. dragon: 4e3,
  1245. equine: 10009,
  1246. exotic: 5e3,
  1247. feline: 6030,
  1248. fox: 6075,
  1249. slime: 10007,
  1250. "hybrid-species": 10002,
  1251. inanimate: 10006,
  1252. insect: 8003,
  1253. "land-vehicle": 10003,
  1254. mammal: 6e3,
  1255. marsupial: 6042,
  1256. mustelid: 6051,
  1257. plant: 10008,
  1258. primate: 6058,
  1259. reptilian: 7e3,
  1260. robot: 10004,
  1261. rodent: 6067,
  1262. "sea-vehicle": 10005,
  1263. taur: 5025,
  1264. vulpine: 6015,
  1265. "original-species": 11014,
  1266. character: 11015,
  1267. aeromorph: 11001,
  1268. "angel-dragon": 11002,
  1269. avali: 11012,
  1270. chakat: 5003,
  1271. citra: 5005,
  1272. crux: 5006,
  1273. dracat: 5009,
  1274. dutch: 11003,
  1275. felkin: 11011,
  1276. ferrin: 11004,
  1277. jogauni: 11005,
  1278. langurhali: 5014,
  1279. nevrean: 11006,
  1280. protogen: 11007,
  1281. rexouium: 11016,
  1282. sergal: 5021,
  1283. synx: 11010,
  1284. wickerbeast: 11013,
  1285. yinglet: 11009,
  1286. zorgoia: 11008,
  1287. angel: 12001,
  1288. centaur: 12002,
  1289. cerberus: 12003,
  1290. "shape-shifter": 12038,
  1291. chimera: 12004,
  1292. chupacabra: 12005,
  1293. cockatrice: 12006,
  1294. daemon: 5007,
  1295. demon: 12007,
  1296. "displacer-beast": 12008,
  1297. dragonborn: 12009,
  1298. drow: 12010,
  1299. dwarf: 12011,
  1300. "eastern-dragon": 4001,
  1301. elf: 5011,
  1302. gargoyle: 5012,
  1303. goblin: 12012,
  1304. golem: 12013,
  1305. gryphon: 3007,
  1306. harpy: 12014,
  1307. hellhound: 12015,
  1308. hippogriff: 12016,
  1309. hobbit: 12017,
  1310. hydra: 4002,
  1311. imp: 12018,
  1312. incubus: 12019,
  1313. jackalope: 12020,
  1314. kirin: 12021,
  1315. kitsune: 12022,
  1316. kobold: 12023,
  1317. lamia: 12024,
  1318. manticore: 12025,
  1319. minotaur: 12026,
  1320. naga: 5016,
  1321. nephilim: 12027,
  1322. orc: 5018,
  1323. pegasus: 12028,
  1324. peryton: 12029,
  1325. phoenix: 3010,
  1326. sasquatch: 12030,
  1327. satyr: 5020,
  1328. sphinx: 12031,
  1329. succubus: 12032,
  1330. tiefling: 12033,
  1331. troll: 12034,
  1332. unicorn: 5023,
  1333. "water-dragon": 12035,
  1334. werewolf: 12036,
  1335. "western-dragon": 4004,
  1336. wyvern: 4005,
  1337. yokai: 12037,
  1338. alicorn: 13001,
  1339. argonian: 5002,
  1340. asari: 13002,
  1341. bangaa: 13003,
  1342. "bubble-dragon": 13004,
  1343. burmecian: 13005,
  1344. charr: 13006,
  1345. chiss: 13007,
  1346. chocobo: 5004,
  1347. deathclaw: 13008,
  1348. digimon: 5008,
  1349. draenei: 5010,
  1350. drell: 13009,
  1351. elcor: 13010,
  1352. ewok: 13011,
  1353. hanar: 13012,
  1354. hrothgar: 13013,
  1355. iksar: 5013,
  1356. kaiju: 5015,
  1357. kelpie: 13041,
  1358. kemonomimi: 13014,
  1359. khajiit: 13015,
  1360. koopa: 13016,
  1361. krogan: 13017,
  1362. lombax: 13018,
  1363. mimiga: 13019,
  1364. mobian: 13020,
  1365. moogle: 5017,
  1366. neopet: 13021,
  1367. "nu-mou": 13022,
  1368. pokemon: 5019,
  1369. "pony-mlp": 13023,
  1370. protoss: 13024,
  1371. quarian: 13025,
  1372. ronso: 13026,
  1373. salarian: 13027,
  1374. sangheili: 13028,
  1375. tauntaun: 13029,
  1376. tauren: 13030,
  1377. trandoshan: 13031,
  1378. transformer: 13032,
  1379. turian: 13033,
  1380. twilek: 13034,
  1381. viera: 13035,
  1382. wookiee: 13036,
  1383. xenomorph: 5024,
  1384. yautja: 13037,
  1385. yordle: 13038,
  1386. yoshi: 13039,
  1387. zerg: 13040,
  1388. aardvark: 14001,
  1389. aardwolf: 14002,
  1390. "african-wild-dog": 14003,
  1391. akita: 14004,
  1392. albatross: 14005,
  1393. crocodile: 7001,
  1394. alpaca: 14006,
  1395. anaconda: 14007,
  1396. anteater: 14008,
  1397. antelope: 6004,
  1398. arachnid: 8e3,
  1399. "arctic-fox": 14009,
  1400. armadillo: 14010,
  1401. axolotl: 14011,
  1402. baboon: 14012,
  1403. badger: 6045,
  1404. bat: 6001,
  1405. beaver: 6064,
  1406. bee: 14013,
  1407. binturong: 14014,
  1408. bison: 14015,
  1409. "blue-jay": 14016,
  1410. "border-collie": 14017,
  1411. "brown-bear": 14018,
  1412. buffalo: 14019,
  1413. "buffalo-bison": 14020,
  1414. "bull-terrier": 14021,
  1415. butterfly: 14022,
  1416. caiman: 14023,
  1417. camel: 6074,
  1418. capybara: 14024,
  1419. caribou: 14025,
  1420. caterpillar: 14026,
  1421. cephalopod: 2001,
  1422. chameleon: 14027,
  1423. cheetah: 6021,
  1424. chicken: 14028,
  1425. chimpanzee: 14029,
  1426. chinchilla: 14030,
  1427. chipmunk: 14031,
  1428. civet: 14032,
  1429. "clouded-leopard": 14033,
  1430. coatimundi: 14034,
  1431. cockatiel: 14035,
  1432. corgi: 14036,
  1433. corvid: 3001,
  1434. cougar: 6022,
  1435. cow: 6003,
  1436. coyote: 6008,
  1437. crab: 14037,
  1438. crane: 14038,
  1439. crayfish: 14039,
  1440. crow: 3002,
  1441. crustacean: 14040,
  1442. dalmatian: 14041,
  1443. deer: 14042,
  1444. dhole: 14043,
  1445. dingo: 6011,
  1446. dinosaur: 8001,
  1447. doberman: 6009,
  1448. dolphin: 2002,
  1449. donkey: 6019,
  1450. duck: 3003,
  1451. eagle: 3004,
  1452. eel: 14044,
  1453. elephant: 14045,
  1454. falcon: 3005,
  1455. fennec: 6072,
  1456. ferret: 6046,
  1457. finch: 14046,
  1458. fish: 2005,
  1459. flamingo: 14047,
  1460. fossa: 14048,
  1461. frog: 1001,
  1462. gazelle: 6005,
  1463. gecko: 7003,
  1464. genet: 14049,
  1465. "german-shepherd": 6012,
  1466. gibbon: 14050,
  1467. giraffe: 6031,
  1468. goat: 6006,
  1469. goose: 3006,
  1470. gorilla: 6054,
  1471. "gray-fox": 14051,
  1472. "great-dane": 14052,
  1473. "grizzly-bear": 14053,
  1474. "guinea-pig": 14054,
  1475. hamster: 14055,
  1476. hawk: 3008,
  1477. hedgehog: 6032,
  1478. heron: 14056,
  1479. hippopotamus: 6033,
  1480. honeybee: 14057,
  1481. horse: 6034,
  1482. housecat: 6020,
  1483. human: 6055,
  1484. humanoid: 14058,
  1485. hummingbird: 14059,
  1486. husky: 6014,
  1487. hyena: 6035,
  1488. iguana: 7004,
  1489. impala: 14060,
  1490. jackal: 6013,
  1491. jaguar: 6023,
  1492. kangaroo: 6038,
  1493. "kangaroo-mouse": 14061,
  1494. "kangaroo-rat": 14062,
  1495. kinkajou: 14063,
  1496. "kit-fox": 14064,
  1497. koala: 6039,
  1498. "kodiak-bear": 14065,
  1499. "komodo-dragon": 14066,
  1500. labrador: 14067,
  1501. lemur: 6056,
  1502. leopard: 6024,
  1503. liger: 14068,
  1504. linsang: 14069,
  1505. lion: 6025,
  1506. lizard: 7005,
  1507. llama: 6036,
  1508. lobster: 14070,
  1509. "longhair-cat": 14071,
  1510. lynx: 6026,
  1511. magpie: 14072,
  1512. "maine-coon": 14073,
  1513. malamute: 14074,
  1514. "mammal-feline": 14075,
  1515. "mammal-herd": 14076,
  1516. "mammal-marsupial": 14077,
  1517. "mammal-mustelid": 14078,
  1518. "mammal-other predator": 14079,
  1519. "mammal-prey": 14080,
  1520. "mammal-primate": 14081,
  1521. "mammal-rodent": 14082,
  1522. manatee: 14083,
  1523. mandrill: 14084,
  1524. "maned-wolf": 14085,
  1525. mantid: 8004,
  1526. marmoset: 14086,
  1527. marten: 14087,
  1528. meerkat: 6043,
  1529. mink: 6048,
  1530. mole: 14088,
  1531. mongoose: 6044,
  1532. "monitor-lizard": 14089,
  1533. monkey: 6057,
  1534. moose: 14090,
  1535. moth: 14091,
  1536. mouse: 6065,
  1537. "musk-deer": 14092,
  1538. "musk-ox": 14093,
  1539. newt: 1002,
  1540. ocelot: 6027,
  1541. octopus: 14094,
  1542. okapi: 14095,
  1543. olingo: 14096,
  1544. opossum: 6037,
  1545. orangutan: 14097,
  1546. orca: 14098,
  1547. oryx: 14099,
  1548. ostrich: 14100,
  1549. otter: 6047,
  1550. owl: 3009,
  1551. panda: 6052,
  1552. pangolin: 14101,
  1553. panther: 6028,
  1554. parakeet: 14102,
  1555. parrot: 14103,
  1556. peacock: 14104,
  1557. penguin: 14105,
  1558. "persian-cat": 14106,
  1559. pig: 6053,
  1560. pigeon: 14107,
  1561. pika: 14108,
  1562. "pine-marten": 14109,
  1563. platypus: 14110,
  1564. "polar-bear": 14111,
  1565. pony: 6073,
  1566. poodle: 14112,
  1567. porcupine: 14113,
  1568. porpoise: 2004,
  1569. procyonid: 14114,
  1570. puffin: 14115,
  1571. quoll: 6040,
  1572. rabbit: 6059,
  1573. raccoon: 6060,
  1574. rat: 6061,
  1575. ray: 14116,
  1576. "red-fox": 14117,
  1577. "red-panda": 6062,
  1578. reindeer: 14118,
  1579. reptillian: 14119,
  1580. rhinoceros: 6063,
  1581. robin: 14120,
  1582. rottweiler: 14121,
  1583. sabercats: 14122,
  1584. sabertooth: 14123,
  1585. salamander: 1003,
  1586. scorpion: 8005,
  1587. seagull: 14124,
  1588. seahorse: 14125,
  1589. seal: 6068,
  1590. "secretary-bird": 14126,
  1591. "serpent-dragon": 4003,
  1592. serval: 14127,
  1593. shark: 2006,
  1594. sheep: 14128,
  1595. "shiba-inu": 14129,
  1596. "shorthair-cat": 14130,
  1597. shrew: 14131,
  1598. siamese: 14132,
  1599. sifaka: 14133,
  1600. "silver-fox": 14134,
  1601. skunk: 6069,
  1602. sloth: 14135,
  1603. snail: 14136,
  1604. "snake-serpent": 7006,
  1605. "snow-leopard": 14137,
  1606. sparrow: 14138,
  1607. squid: 14139,
  1608. squirrel: 6070,
  1609. stoat: 14140,
  1610. stork: 14141,
  1611. "sugar-glider": 14142,
  1612. "sun-bear": 14143,
  1613. swan: 3011,
  1614. "swift-fox": 14144,
  1615. tanuki: 5022,
  1616. tapir: 14145,
  1617. "tasmanian-devil": 14146,
  1618. thylacine: 14147,
  1619. tiger: 6029,
  1620. toucan: 14148,
  1621. turtle: 7007,
  1622. vulture: 14149,
  1623. wallaby: 6041,
  1624. walrus: 14150,
  1625. wasp: 14151,
  1626. weasel: 6049,
  1627. whale: 2003,
  1628. wolf: 6016,
  1629. wolverine: 6050,
  1630. zebra: 6071
  1631. };
  1632. }
  1633. static get gender() {
  1634. return {
  1635. any: 0,
  1636. male: 2,
  1637. female: 3,
  1638. herm: 4,
  1639. intersex: 11,
  1640. "trans-male": 8,
  1641. "trans-female": 9,
  1642. "non-binary": 10,
  1643. multiple: 6,
  1644. other: 7,
  1645. "not-specified": 7
  1646. };
  1647. }
  1648. static get results() {
  1649. return {
  1650. 24: 24,
  1651. 48: 48,
  1652. 72: 72,
  1653. 96: 96,
  1654. 128: 128
  1655. };
  1656. }
  1657. }
  1658. function CheckTags(element) {
  1659. var _a;
  1660. if (!("1" === document.body.getAttribute("data-user-logged-in"))) return;
  1661. 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+/);
  1662. let blockReason = "";
  1663. if (null != tags && tags.length > 0 && "" !== tags[0]) {
  1664. const blockedTags = function getBannedTags(tags) {
  1665. var _a;
  1666. const tagsBlocklist = null !== (_a = document.body.getAttribute("data-tag-blocklist")) && void 0 !== _a ? _a : [];
  1667. let bTags = [];
  1668. if (null == tags || 0 === tags.length) return [];
  1669. for (const tag of tags) for (const blockedTag of tagsBlocklist) tag === blockedTag && bTags.push(blockedTag);
  1670. return [ ...new Set(bTags) ];
  1671. }(tags);
  1672. if (blockedTags.length <= 0) setBlockedState(element, !1); else {
  1673. setBlockedState(element, !0), blockReason = "Blocked tags:\n";
  1674. for (const tag of blockedTags) blockReason += "• " + tag + "\n";
  1675. }
  1676. } else setBlockedState(element, tagsHideMissingTags), tagsHideMissingTags && (blockReason = "Content is missing tags.");
  1677. "" !== blockReason && "submissionImg" !== element.id && element.setAttribute("title", blockReason);
  1678. }
  1679. function setBlockedState(element, isBlocked) {
  1680. element.classList[isBlocked ? "add" : "remove"]("blocked-content");
  1681. }
  1682. function CheckTagsAll(doc) {
  1683. if (null == doc) return;
  1684. doc.querySelectorAll("img[data-tags]").forEach((element => CheckTags(element)));
  1685. }
  1686. var Page_awaiter = function(thisArg, _arguments, P, generator) {
  1687. return new (P || (P = Promise))((function(resolve, reject) {
  1688. function fulfilled(value) {
  1689. try {
  1690. step(generator.next(value));
  1691. } catch (e) {
  1692. reject(e);
  1693. }
  1694. }
  1695. function rejected(value) {
  1696. try {
  1697. step(generator.throw(value));
  1698. } catch (e) {
  1699. reject(e);
  1700. }
  1701. }
  1702. function step(result) {
  1703. result.done ? resolve(result.value) : function adopt(value) {
  1704. return value instanceof P ? value : new P((function(resolve) {
  1705. resolve(value);
  1706. }));
  1707. }(result.value).then(fulfilled, rejected);
  1708. }
  1709. step((generator = generator.apply(thisArg, _arguments || [])).next());
  1710. }));
  1711. };
  1712. class Page {
  1713. static getGalleryPage(username, folderId, pageNumber, galleryType, semaphore) {
  1714. return Page_awaiter(this, void 0, void 0, (function*() {
  1715. if (galleryType === GalleryType.FAVORITES) {
  1716. const dataFavId = null != folderId ? folderId : pageNumber;
  1717. return yield Page.getFavoritesPage(username, dataFavId, pageNumber, semaphore);
  1718. }
  1719. if (galleryType === GalleryType.JOURNALS) return yield Page.getJournalsPage(username, pageNumber, semaphore);
  1720. if (galleryType === GalleryType.BROWSE) return yield Page.getBrowsePage(pageNumber, void 0, semaphore);
  1721. if (galleryType === GalleryType.SEARCH) return yield Page.getSearchPage(pageNumber, void 0, semaphore);
  1722. if (null == username) return void Logger.logError("No username given");
  1723. let url;
  1724. switch ((null == pageNumber || pageNumber <= 0) && (Logger.logWarning("No page number given. Using default value of 1."),
  1725. pageNumber = 1), username.endsWith("/") || (username += "/"), galleryType) {
  1726. case GalleryType.GALLERY:
  1727. url = Gallery.hardLink + username;
  1728. break;
  1729.  
  1730. case GalleryType.SCRAPS:
  1731. url = Scraps.hardLink + username;
  1732. }
  1733. null != folderId && -1 !== folderId && (url += `folder/${folderId}/`);
  1734. const page = yield FuraffinityRequests.getHTML(url + pageNumber, semaphore);
  1735. return CheckTagsAll(page), page;
  1736. }));
  1737. }
  1738. static getFavoritesPage(username, dataFavId, direction, semaphore) {
  1739. return Page_awaiter(this, void 0, void 0, (function*() {
  1740. if (null == username) return void Logger.logError("No username given");
  1741. null == direction && (Logger.logWarning("No direction given. Using default 1 instead."),
  1742. direction = 1), username.endsWith("/") || (username += "/");
  1743. let url = Favorites.hardLink;
  1744. null != dataFavId && dataFavId >= 0 ? url += `${username}${dataFavId}/` : (Logger.logWarning("No last data fav id given. Using default 1 instead."),
  1745. url += username), url += direction >= 0 ? "next/" : "prev/";
  1746. const page = yield FuraffinityRequests.getHTML(url, semaphore);
  1747. return CheckTagsAll(page), page;
  1748. }));
  1749. }
  1750. static getJournalsPage(username, pageNumber, semaphore) {
  1751. return Page_awaiter(this, void 0, void 0, (function*() {
  1752. if (null == username) return void Logger.logError("No username given");
  1753. (null == pageNumber || pageNumber <= 0) && (Logger.logWarning("Page number must be greater than 0. Using default 1 instead."),
  1754. pageNumber = 1), username.endsWith("/") || (username += "/");
  1755. const url = Journals.hardLink + username;
  1756. return yield FuraffinityRequests.getHTML(url + pageNumber, semaphore);
  1757. }));
  1758. }
  1759. static getBrowsePage(pageNumber, browseOptions, semaphore) {
  1760. return Page_awaiter(this, void 0, void 0, (function*() {
  1761. (null == pageNumber || pageNumber <= 0) && (Logger.logWarning("Page number must be greater than 0. Using default 1 instead."),
  1762. pageNumber = 1), null == browseOptions && (browseOptions = new BrowseOptions);
  1763. const payload = {
  1764. cat: browseOptions.category,
  1765. atype: browseOptions.type,
  1766. species: browseOptions.species,
  1767. gender: browseOptions.gender,
  1768. perpage: browseOptions.results,
  1769. page: pageNumber,
  1770. rating_general: browseOptions.ratingGeneral ? "on" : "off",
  1771. rating_mature: browseOptions.ratingMature ? "on" : "off",
  1772. rating_adult: browseOptions.ratingAdult ? "on" : "off"
  1773. };
  1774. for (const key in payload) null != payload[key] && 0 !== payload[key] && "off" !== payload[key] || delete payload[key];
  1775. const payloadArray = Object.entries(payload).map((([key, value]) => {
  1776. var _a;
  1777. return [ key, null !== (_a = null == value ? void 0 : value.toString()) && void 0 !== _a ? _a : "" ];
  1778. })), url = Browse.hardLink, page = yield FuraffinityRequests.postHTML(url, payloadArray, semaphore);
  1779. return CheckTagsAll(page), page;
  1780. }));
  1781. }
  1782. static getSearchPage(pageNumber, searchOptions, semaphore) {
  1783. return Page_awaiter(this, void 0, void 0, (function*() {
  1784. (null == pageNumber || pageNumber <= 0) && (Logger.logWarning("Page number must be greater than 0. Using default 1 instead."),
  1785. pageNumber = 1), null == searchOptions && (searchOptions = new SearchOptions);
  1786. const payload = {
  1787. page: pageNumber,
  1788. q: searchOptions.input,
  1789. "order-by": searchOptions.orderBy,
  1790. "order-direction": searchOptions.orderDirection,
  1791. range: searchOptions.range,
  1792. range_from: void 0,
  1793. range_to: void 0,
  1794. "rating-general": searchOptions.ratingGeneral ? 1 : 0,
  1795. "rating-mature": searchOptions.ratingMature ? 1 : 0,
  1796. "rating-adult": searchOptions.ratingAdult ? 1 : 0,
  1797. "type-art": searchOptions.typeArt ? 1 : 0,
  1798. "type-music": searchOptions.typeMusic ? 1 : 0,
  1799. "type-flash": searchOptions.typeFlash ? 1 : 0,
  1800. "type-story": searchOptions.typeStory ? 1 : 0,
  1801. "type-photos": searchOptions.typePhotos ? 1 : 0,
  1802. "type-poetry": searchOptions.typePoetry ? 1 : 0,
  1803. mode: searchOptions.matching
  1804. };
  1805. if (searchOptions.rangeFrom instanceof Date && null != searchOptions.rangeFrom) {
  1806. const formattedDate = `${searchOptions.rangeFrom.getFullYear()}-${(searchOptions.rangeFrom.getMonth() + 1).toString().padStart(2, "0")}-${searchOptions.rangeFrom.getDate().toString().padStart(2, "0")}`;
  1807. payload.range_from = formattedDate;
  1808. } else "string" == typeof searchOptions.rangeFrom && searchOptions.rangeFrom && (payload.range_from = searchOptions.rangeFrom);
  1809. if (searchOptions.rangeTo instanceof Date && null != searchOptions.rangeTo) {
  1810. const formattedDate = `${searchOptions.rangeTo.getFullYear()}-${(searchOptions.rangeTo.getMonth() + 1).toString().padStart(2, "0")}-${searchOptions.rangeTo.getDate().toString().padStart(2, "0")}`;
  1811. payload.range_to = formattedDate;
  1812. } else "string" == typeof searchOptions.rangeTo && searchOptions.rangeTo && (payload.range_to = searchOptions.rangeTo);
  1813. for (const key in payload) null != payload[key] && 0 !== payload[key] && "off" !== payload[key] || delete payload[key];
  1814. const payloadArray = Object.entries(payload).map((([key, value]) => {
  1815. var _a;
  1816. return [ key, null !== (_a = null == value ? void 0 : value.toString()) && void 0 !== _a ? _a : "" ];
  1817. })), url = Search.hardLink, page = yield FuraffinityRequests.postHTML(url, payloadArray, semaphore);
  1818. return CheckTagsAll(page), page;
  1819. }));
  1820. }
  1821. }
  1822. var Gallery_awaiter = function(thisArg, _arguments, P, generator) {
  1823. return new (P || (P = Promise))((function(resolve, reject) {
  1824. function fulfilled(value) {
  1825. try {
  1826. step(generator.next(value));
  1827. } catch (e) {
  1828. reject(e);
  1829. }
  1830. }
  1831. function rejected(value) {
  1832. try {
  1833. step(generator.throw(value));
  1834. } catch (e) {
  1835. reject(e);
  1836. }
  1837. }
  1838. function step(result) {
  1839. result.done ? resolve(result.value) : function adopt(value) {
  1840. return value instanceof P ? value : new P((function(resolve) {
  1841. resolve(value);
  1842. }));
  1843. }(result.value).then(fulfilled, rejected);
  1844. }
  1845. step((generator = generator.apply(thisArg, _arguments || [])).next());
  1846. }));
  1847. };
  1848. class Gallery {
  1849. constructor(semaphore) {
  1850. this._semaphore = semaphore;
  1851. }
  1852. static get hardLink() {
  1853. return FuraffinityRequests.fullUrl + "/gallery/";
  1854. }
  1855. getFiguresBetweenIds(username_1, fromId_1, toId_1, action_1) {
  1856. return Gallery_awaiter(this, arguments, void 0, (function*(username, fromId, toId, action, delay = 100) {
  1857. return fromId = convertToNumber(fromId), toId = convertToNumber(toId), null == fromId || fromId <= 0 ? yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresTillId, [ username, void 0, toId, void 0, GalleryType.GALLERY, this._semaphore ], action, delay) : null == toId || toId <= 0 ? yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresSinceId, [ username, void 0, fromId, void 0, GalleryType.GALLERY, this._semaphore ], action, delay) : yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresBetweenIds, [ username, void 0, fromId, toId, void 0, void 0, GalleryType.GALLERY, this._semaphore ], action, delay, !0);
  1858. }));
  1859. }
  1860. getFiguresInFolderBetweenIds(username_1, folderId_1, fromId_1, toId_1, action_1) {
  1861. return Gallery_awaiter(this, arguments, void 0, (function*(username, folderId, fromId, toId, action, delay = 100) {
  1862. return folderId = convertToNumber(folderId), fromId = convertToNumber(fromId), toId = convertToNumber(toId),
  1863. null == fromId || fromId <= 0 ? yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresTillId, [ username, folderId, toId, void 0, GalleryType.GALLERY, this._semaphore ], action, delay) : null == toId || toId <= 0 ? yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresSinceId, [ username, folderId, fromId, void 0, GalleryType.GALLERY, this._semaphore ], action, delay) : yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresBetweenIds, [ username, folderId, fromId, toId, void 0, void 0, GalleryType.GALLERY, this._semaphore ], action, delay, !0);
  1864. }));
  1865. }
  1866. getFiguresBetweenIdsBetweenPages(username_1, fromId_1, toId_1, fromPageNumber_1, toPageNumber_1, action_1) {
  1867. return Gallery_awaiter(this, arguments, void 0, (function*(username, fromId, toId, fromPageNumber, toPageNumber, action, delay = 100) {
  1868. return fromId = convertToNumber(fromId), toId = convertToNumber(toId), fromPageNumber = convertToNumber(fromPageNumber),
  1869. toPageNumber = convertToNumber(toPageNumber), null == fromId || fromId <= 0 ? yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresTillId, [ username, void 0, toId, fromPageNumber, GalleryType.GALLERY, this._semaphore ], action, delay) : null == toId || toId <= 0 ? yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresSinceId, [ username, void 0, fromId, toPageNumber, GalleryType.GALLERY, this._semaphore ], action, delay) : yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresBetweenIds, [ username, void 0, fromId, toId, fromPageNumber, toPageNumber, GalleryType.GALLERY, this._semaphore ], action, delay, !0);
  1870. }));
  1871. }
  1872. getFiguresInFolderBetweenIdsBetweenPages(username_1, folderId_1, fromId_1, toId_1, fromPageNumber_1, toPageNumber_1, action_1) {
  1873. return Gallery_awaiter(this, arguments, void 0, (function*(username, folderId, fromId, toId, fromPageNumber, toPageNumber, action, delay = 100) {
  1874. return folderId = convertToNumber(folderId), fromId = convertToNumber(fromId), toId = convertToNumber(toId),
  1875. fromPageNumber = convertToNumber(fromPageNumber), toPageNumber = convertToNumber(toPageNumber),
  1876. null == fromId || fromId <= 0 ? yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresTillId, [ username, folderId, toId, fromPageNumber, GalleryType.GALLERY, this._semaphore ], action, delay) : null == toId || toId <= 0 ? yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresSinceId, [ username, folderId, fromId, toPageNumber, GalleryType.GALLERY, this._semaphore ], action, delay) : yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresBetweenIds, [ username, folderId, fromId, toId, fromPageNumber, toPageNumber, GalleryType.GALLERY, this._semaphore ], action, delay, !0);
  1877. }));
  1878. }
  1879. getFiguresBetweenPages(username_1, fromPageNumber_1, toPageNumber_1, action_1) {
  1880. return Gallery_awaiter(this, arguments, void 0, (function*(username, fromPageNumber, toPageNumber, action, delay = 100) {
  1881. return fromPageNumber = convertToNumber(fromPageNumber), toPageNumber = convertToNumber(toPageNumber),
  1882. null == fromPageNumber || fromPageNumber <= 0 ? yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresTillPage, [ username, void 0, toPageNumber, GalleryType.GALLERY, this._semaphore ], action, delay, !0) : null == toPageNumber || toPageNumber <= 0 ? yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresSincePage, [ username, void 0, fromPageNumber, GalleryType.GALLERY, this._semaphore ], action, delay) : yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresBetweenPages, [ username, void 0, fromPageNumber, toPageNumber, GalleryType.GALLERY, this._semaphore ], action, delay, !0);
  1883. }));
  1884. }
  1885. getFiguresInFolderBetweenPages(username_1, folderId_1, fromPageNumber_1, toPageNumber_1, action_1) {
  1886. return Gallery_awaiter(this, arguments, void 0, (function*(username, folderId, fromPageNumber, toPageNumber, action, delay = 100) {
  1887. return folderId = convertToNumber(folderId), fromPageNumber = convertToNumber(fromPageNumber),
  1888. toPageNumber = convertToNumber(toPageNumber), null == fromPageNumber || fromPageNumber <= 0 ? yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresTillPage, [ username, folderId, toPageNumber, GalleryType.GALLERY, this._semaphore ], action, delay, !0) : null == toPageNumber || toPageNumber <= 0 ? yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresSincePage, [ username, folderId, fromPageNumber, GalleryType.GALLERY, this._semaphore ], action, delay) : yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFiguresBetweenPages, [ username, folderId, fromPageNumber, toPageNumber, GalleryType.GALLERY, this._semaphore ], action, delay, !0);
  1889. }));
  1890. }
  1891. getFigures(username_1, pageNumber_1, action_1) {
  1892. return Gallery_awaiter(this, arguments, void 0, (function*(username, pageNumber, action, delay = 100) {
  1893. return pageNumber = convertToNumber(pageNumber), yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFigures, [ username, void 0, pageNumber, GalleryType.GALLERY, this._semaphore ], action, delay);
  1894. }));
  1895. }
  1896. getFiguresInFolder(username_1, folderId_1, pageNumber_1, action_1) {
  1897. return Gallery_awaiter(this, arguments, void 0, (function*(username, folderId, pageNumber, action, delay = 100) {
  1898. return folderId = convertToNumber(folderId), pageNumber = convertToNumber(pageNumber),
  1899. yield WaitAndCallAction.callFunctionAsync(GalleryRequests.getGalleryFigures, [ username, folderId, pageNumber, GalleryType.GALLERY, this._semaphore ], action, delay);
  1900. }));
  1901. }
  1902. getPage(username_1, pageNumber_1, action_1) {
  1903. return Gallery_awaiter(this, arguments, void 0, (function*(username, pageNumber, action, delay = 100) {
  1904. return pageNumber = convertToNumber(pageNumber), yield WaitAndCallAction.callFunctionAsync(Page.getGalleryPage, [ username, void 0, pageNumber, GalleryType.GALLERY, this._semaphore ], action, delay);
  1905. }));
  1906. }
  1907. getPageInFolder(username_1, folderId_1, pageNumber_1, action_1) {
  1908. return Gallery_awaiter(this, arguments, void 0, (function*(username, folderId, pageNumber, action, delay = 100) {
  1909. return folderId = convertToNumber(folderId), pageNumber = convertToNumber(pageNumber),
  1910. yield WaitAndCallAction.callFunctionAsync(Page.getGalleryPage, [ username, folderId, pageNumber, GalleryType.GALLERY, this._semaphore ], action, delay);
  1911. }));
  1912. }
  1913. }
  1914. var GalleryType, GalleryRequests_awaiter = function(thisArg, _arguments, P, generator) {
  1915. return new (P || (P = Promise))((function(resolve, reject) {
  1916. function fulfilled(value) {
  1917. try {
  1918. step(generator.next(value));
  1919. } catch (e) {
  1920. reject(e);
  1921. }
  1922. }
  1923. function rejected(value) {
  1924. try {
  1925. step(generator.throw(value));
  1926. } catch (e) {
  1927. reject(e);
  1928. }
  1929. }
  1930. function step(result) {
  1931. result.done ? resolve(result.value) : function adopt(value) {
  1932. return value instanceof P ? value : new P((function(resolve) {
  1933. resolve(value);
  1934. }));
  1935. }(result.value).then(fulfilled, rejected);
  1936. }
  1937. step((generator = generator.apply(thisArg, _arguments || [])).next());
  1938. }));
  1939. };
  1940. class GalleryRequests {
  1941. constructor(semaphore) {
  1942. this._semaphore = semaphore, this.Gallery = new Gallery(this._semaphore), this.Scraps = new Scraps(this._semaphore),
  1943. this.Favorites = new Favorites(this._semaphore), this.Journals = new Journals(this._semaphore);
  1944. }
  1945. static getGalleryFiguresTillId(username, folderId, toId, fromPage, galleryType, semaphore) {
  1946. return GalleryRequests_awaiter(this, void 0, void 0, (function*() {
  1947. if (null == toId || toId <= 0) return Logger.logError("No toId given"), [];
  1948. const allFigures = [];
  1949. let running = !0, i = 1;
  1950. for (null != fromPage && fromPage >= 1 && (i = fromPage); running; ) {
  1951. const figures = yield GalleryRequests.getGalleryFigures(username, folderId, i, galleryType, semaphore);
  1952. let currFigureId;
  1953. 0 !== figures.length && (currFigureId = figures[0].id), undefined === currFigureId ? running = !1 : IdArray.containsId(figures, toId) ? (allFigures.push(IdArray.getTillId(figures, toId)),
  1954. running = !1) : (allFigures.push(figures), i++);
  1955. }
  1956. return allFigures;
  1957. }));
  1958. }
  1959. static getGalleryFiguresSinceId(username, folderId, fromId, toPage, galleryType, semaphore) {
  1960. return GalleryRequests_awaiter(this, void 0, void 0, (function*() {
  1961. if (null == fromId || fromId <= 0) return Logger.logError("No fromId given"), [];
  1962. const direction = null == toPage || toPage <= 0 ? -1 : 1;
  1963. let lastFigureId, running = !0, i = null == toPage || toPage <= 0 ? 1 : toPage;
  1964. if (null == toPage || toPage <= 0) for (;running; ) {
  1965. const figures = yield GalleryRequests.getGalleryFigures(username, folderId, i, galleryType, semaphore);
  1966. let currFigureId = lastFigureId;
  1967. 0 !== figures.length && (currFigureId = figures[0].id), currFigureId === lastFigureId || IdArray.containsId(figures, fromId) ? running = !1 : i++;
  1968. }
  1969. const allFigures = [];
  1970. for (lastFigureId = void 0, running = !0; running; ) {
  1971. const figures = yield GalleryRequests.getGalleryFigures(username, folderId, i, galleryType, semaphore);
  1972. let currFigureId = lastFigureId;
  1973. if (0 !== figures.length && (currFigureId = figures[0].id), currFigureId === lastFigureId) running = !1; else {
  1974. if (IdArray.containsId(figures, fromId)) {
  1975. const figuresPush = IdArray.getSinceId(figures, fromId);
  1976. direction < 0 && (figuresPush.reverse(), running = !1), allFigures.push(figuresPush);
  1977. } else direction < 0 && figures.reverse(), allFigures.push(figures);
  1978. i += direction;
  1979. }
  1980. }
  1981. return direction < 0 && allFigures.reverse(), allFigures;
  1982. }));
  1983. }
  1984. static getGalleryFiguresBetweenIds(username, folderId, fromId, toId, fromPage, toPage, galleryType, semaphore, percentId) {
  1985. return GalleryRequests_awaiter(this, void 0, void 0, (function*() {
  1986. if (null == fromId || fromId <= 0) return Logger.logError("No fromId given"), [];
  1987. if (null == toId || toId <= 0) return Logger.logError("No toId given"), [];
  1988. (null == fromPage || fromPage <= 0 || null == toPage || toPage <= 1) && (Logger.logWarning("No fromPage or toPage given. Percentages can not be calculated."),
  1989. percentId = void 0);
  1990. let i = 1;
  1991. null != fromPage && fromPage >= 1 && (i = fromPage);
  1992. const allFigures = [];
  1993. let running = !0, completedPages = 0;
  1994. for (;running; ) {
  1995. null != toPage && toPage >= 1 && i >= toPage && (running = !1);
  1996. const figures = yield GalleryRequests.getGalleryFigures(username, folderId, i, galleryType, semaphore);
  1997. let currFigureId;
  1998. 0 !== figures.length && (currFigureId = figures[0].id), undefined === currFigureId ? running = !1 : (IdArray.containsId(figures, fromId) && allFigures.push(IdArray.getSinceId(figures, fromId)),
  1999. IdArray.containsId(figures, toId) ? (allFigures.push(IdArray.getBetweenIds(figures, fromId, toId)),
  2000. running = !1) : (allFigures.push(figures), i++)), completedPages++, null != toPage && toPage >= 1 && PercentHelper.updatePercentValue(percentId, completedPages, toPage);
  2001. }
  2002. return allFigures;
  2003. }));
  2004. }
  2005. static getGalleryFiguresTillPage(username, folderId, toPageNumber, galleryType, semaphore, percentId) {
  2006. return GalleryRequests_awaiter(this, void 0, void 0, (function*() {
  2007. (null == toPageNumber || toPageNumber <= 0) && (Logger.logWarning("toPageNumber must be greater than 0. Using default 1 instead."),
  2008. toPageNumber = 1);
  2009. const allFigures = [];
  2010. let completedPages = 0;
  2011. for (let i = 1; i <= toPageNumber; i++) {
  2012. const figures = yield GalleryRequests.getGalleryFigures(username, folderId, i, galleryType, semaphore);
  2013. 0 !== figures.length && allFigures.push(figures), completedPages++, PercentHelper.updatePercentValue(percentId, completedPages, toPageNumber);
  2014. }
  2015. return allFigures;
  2016. }));
  2017. }
  2018. static getGalleryFiguresSincePage(username, folderId, fromPageNumber, galleryType, semaphore) {
  2019. return GalleryRequests_awaiter(this, void 0, void 0, (function*() {
  2020. (null == fromPageNumber || fromPageNumber <= 0) && (Logger.logWarning("fromPageNumber must be greater than 0. Using default 1 instead."),
  2021. fromPageNumber = 1);
  2022. const allFigures = [];
  2023. let running = !0, i = fromPageNumber;
  2024. for (;running; ) {
  2025. const figures = yield GalleryRequests.getGalleryFigures(username, folderId, i, galleryType, semaphore);
  2026. let currFigureId;
  2027. 0 !== figures.length && (currFigureId = figures[0].id), undefined === currFigureId ? running = !1 : (allFigures.push(figures),
  2028. i++);
  2029. }
  2030. return allFigures;
  2031. }));
  2032. }
  2033. static getGalleryFiguresBetweenPages(username, folderId, fromPageNumber, toPageNumber, galleryType, semaphore, percentId) {
  2034. return GalleryRequests_awaiter(this, void 0, void 0, (function*() {
  2035. (null == fromPageNumber || fromPageNumber <= 0) && (Logger.logWarning("fromPageNumber must be greater than 0. Using default 1 instead."),
  2036. fromPageNumber = 1), (null == toPageNumber || toPageNumber <= 0) && (Logger.logError("toPageNumber must be greater than 0. Using default 1 instead."),
  2037. toPageNumber = 1);
  2038. const allFigures = [], direction = fromPageNumber <= toPageNumber ? 1 : -1, totalPages = Math.abs(toPageNumber - fromPageNumber) + 1;
  2039. let completedPages = 0;
  2040. for (let i = fromPageNumber; i <= toPageNumber; i += direction) {
  2041. const figures = yield GalleryRequests.getGalleryFigures(username, folderId, i, galleryType, semaphore);
  2042. 0 !== figures.length && allFigures.push(figures), completedPages++, PercentHelper.updatePercentValue(percentId, completedPages, totalPages);
  2043. }
  2044. return allFigures;
  2045. }));
  2046. }
  2047. static getGalleryFigures(username, folderId, pageNumber, galleryType, semaphore) {
  2048. return GalleryRequests_awaiter(this, void 0, void 0, (function*() {
  2049. (null == pageNumber || pageNumber <= 0) && (Logger.logWarning("No pageNumber given. Using default value of 1."),
  2050. pageNumber = 1);
  2051. const galleryDoc = yield Page.getGalleryPage(username, folderId, pageNumber, galleryType, semaphore);
  2052. if (!galleryDoc || !(galleryDoc instanceof Document) || galleryDoc.getElementById("no-images")) return Logger.logMessage(`No images found at ${galleryType} of "${username}" on page "${pageNumber}".`),
  2053. [];
  2054. const figures = galleryDoc.getElementsByTagName("figure");
  2055. return null == figures || 0 === figures.length ? (Logger.logMessage(`No figures found at ${galleryType} of "${username}" on page "${pageNumber}".`),
  2056. []) : Array.from(figures);
  2057. }));
  2058. }
  2059. }
  2060. !function(GalleryType) {
  2061. GalleryType.GALLERY = "gallery", GalleryType.FAVORITES = "favorites", GalleryType.SCRAPS = "scraps",
  2062. GalleryType.JOURNALS = "journals", GalleryType.BROWSE = "browse", GalleryType.SEARCH = "search";
  2063. }(GalleryType || (GalleryType = {}));
  2064. var UserRequests_awaiter = function(thisArg, _arguments, P, generator) {
  2065. return new (P || (P = Promise))((function(resolve, reject) {
  2066. function fulfilled(value) {
  2067. try {
  2068. step(generator.next(value));
  2069. } catch (e) {
  2070. reject(e);
  2071. }
  2072. }
  2073. function rejected(value) {
  2074. try {
  2075. step(generator.throw(value));
  2076. } catch (e) {
  2077. reject(e);
  2078. }
  2079. }
  2080. function step(result) {
  2081. result.done ? resolve(result.value) : function adopt(value) {
  2082. return value instanceof P ? value : new P((function(resolve) {
  2083. resolve(value);
  2084. }));
  2085. }(result.value).then(fulfilled, rejected);
  2086. }
  2087. step((generator = generator.apply(thisArg, _arguments || [])).next());
  2088. }));
  2089. };
  2090. class UserRequests {
  2091. constructor(semaphore) {
  2092. this._semaphore = semaphore, this.GalleryRequests = new GalleryRequests(this._semaphore),
  2093. this.SearchRequests = new SearchRequests(this._semaphore);
  2094. }
  2095. static get hardLinks() {
  2096. return {
  2097. user: FuraffinityRequests.fullUrl + "/user/",
  2098. watch: FuraffinityRequests.fullUrl + "/watch/",
  2099. unwatch: FuraffinityRequests.fullUrl + "/unwatch/",
  2100. block: FuraffinityRequests.fullUrl + "/block/",
  2101. unblock: FuraffinityRequests.fullUrl + "/unblock/"
  2102. };
  2103. }
  2104. getUserPage(username_1, action_1) {
  2105. return UserRequests_awaiter(this, arguments, void 0, (function*(username, action, delay = 100) {
  2106. return yield WaitAndCallAction.callFunctionAsync(getUserPageLocal, [ username, this._semaphore ], action, delay);
  2107. }));
  2108. }
  2109. watchUser(username_1, watchKey_1, action_1) {
  2110. return UserRequests_awaiter(this, arguments, void 0, (function*(username, watchKey, action, delay = 100) {
  2111. return yield WaitAndCallAction.callFunctionAsync(watchUserLocal, [ username, watchKey, this._semaphore ], action, delay);
  2112. }));
  2113. }
  2114. unwatchUser(username_1, unwatchKey_1, action_1) {
  2115. return UserRequests_awaiter(this, arguments, void 0, (function*(username, unwatchKey, action, delay = 100) {
  2116. return yield WaitAndCallAction.callFunctionAsync(unwatchUserLocal, [ username, unwatchKey, this._semaphore ], action, delay);
  2117. }));
  2118. }
  2119. blockUser(username_1, blockKey_1, action_1) {
  2120. return UserRequests_awaiter(this, arguments, void 0, (function*(username, blockKey, action, delay = 100) {
  2121. return yield WaitAndCallAction.callFunctionAsync(blockUserLocal, [ username, blockKey, this._semaphore ], action, delay);
  2122. }));
  2123. }
  2124. unblockUser(username_1, unblockKey_1, action_1) {
  2125. return UserRequests_awaiter(this, arguments, void 0, (function*(username, unblockKey, action, delay = 100) {
  2126. return yield WaitAndCallAction.callFunctionAsync(unblockUserLocal, [ username, unblockKey, this._semaphore ], action, delay);
  2127. }));
  2128. }
  2129. }
  2130. function getUserPageLocal(username, semaphore) {
  2131. return UserRequests_awaiter(this, void 0, void 0, (function*() {
  2132. if (null == username) return void Logger.logWarning("No username given");
  2133. const url = UserRequests.hardLinks.user + username;
  2134. return yield FuraffinityRequests.getHTML(url, semaphore);
  2135. }));
  2136. }
  2137. function watchUserLocal(username, watchKey, semaphore) {
  2138. return UserRequests_awaiter(this, void 0, void 0, (function*() {
  2139. if (null == username || "" === username) return Logger.logError("No username given"),
  2140. !1;
  2141. if (null == watchKey || "" === watchKey || -1 === watchKey) return Logger.logError("No watch key given"),
  2142. !1;
  2143. const url = UserRequests.hardLinks.watch + username + "?key=" + watchKey;
  2144. return null == (yield FuraffinityRequests.getHTML(url, semaphore));
  2145. }));
  2146. }
  2147. function unwatchUserLocal(username, unwatchKey, semaphore) {
  2148. return UserRequests_awaiter(this, void 0, void 0, (function*() {
  2149. if (null == username || "" === username) return Logger.logError("No username given"),
  2150. !1;
  2151. if (null == unwatchKey || "" === unwatchKey || -1 === unwatchKey) return Logger.logError("No unwatch key given"),
  2152. !1;
  2153. const url = UserRequests.hardLinks.unwatch + username + "?key=" + unwatchKey;
  2154. return null == (yield FuraffinityRequests.getHTML(url, semaphore));
  2155. }));
  2156. }
  2157. function blockUserLocal(username, blockKey, semaphore) {
  2158. return UserRequests_awaiter(this, void 0, void 0, (function*() {
  2159. if (null == username || "" === username) return Logger.logError("No username given"),
  2160. !1;
  2161. if (null == blockKey || "" === blockKey || -1 === blockKey) return Logger.logError("No block key given"),
  2162. !1;
  2163. const url = UserRequests.hardLinks.block + username + "?key=" + blockKey;
  2164. return null == (yield FuraffinityRequests.getHTML(url, semaphore));
  2165. }));
  2166. }
  2167. function unblockUserLocal(username, unblockKey, semaphore) {
  2168. return UserRequests_awaiter(this, void 0, void 0, (function*() {
  2169. if (null == username || "" === username) return Logger.logError("No username given"),
  2170. !1;
  2171. if (null == unblockKey || "" === unblockKey || -1 === unblockKey) return Logger.logError("No unblock key given"),
  2172. !1;
  2173. const url = UserRequests.hardLinks.unblock + username + "?key=" + unblockKey;
  2174. return null == (yield FuraffinityRequests.getHTML(url, semaphore));
  2175. }));
  2176. }
  2177. var NewSubmissions_awaiter = function(thisArg, _arguments, P, generator) {
  2178. return new (P || (P = Promise))((function(resolve, reject) {
  2179. function fulfilled(value) {
  2180. try {
  2181. step(generator.next(value));
  2182. } catch (e) {
  2183. reject(e);
  2184. }
  2185. }
  2186. function rejected(value) {
  2187. try {
  2188. step(generator.throw(value));
  2189. } catch (e) {
  2190. reject(e);
  2191. }
  2192. }
  2193. function step(result) {
  2194. result.done ? resolve(result.value) : function adopt(value) {
  2195. return value instanceof P ? value : new P((function(resolve) {
  2196. resolve(value);
  2197. }));
  2198. }(result.value).then(fulfilled, rejected);
  2199. }
  2200. step((generator = generator.apply(thisArg, _arguments || [])).next());
  2201. }));
  2202. };
  2203. class NewSubmissions {
  2204. constructor(semaphore) {
  2205. this._semaphore = semaphore;
  2206. }
  2207. static get hardLink() {
  2208. return FuraffinityRequests.fullUrl + "/msg/submissions/";
  2209. }
  2210. getSubmissionsPage(firstSubmissionId_1, action_1) {
  2211. return NewSubmissions_awaiter(this, arguments, void 0, (function*(firstSubmissionId, action, delay = 100) {
  2212. return firstSubmissionId = convertToNumber(firstSubmissionId), yield WaitAndCallAction.callFunctionAsync(getSubmissionsPageLocal, [ firstSubmissionId, this._semaphore ], action, delay);
  2213. }));
  2214. }
  2215. removeSubmissions(submissionIds_1, action_1) {
  2216. return NewSubmissions_awaiter(this, arguments, void 0, (function*(submissionIds, action, delay = 100) {
  2217. return yield WaitAndCallAction.callFunctionAsync(removeSubmissionsLocal, [ submissionIds, this._semaphore ], action, delay);
  2218. }));
  2219. }
  2220. nukeSubmissions(action_1) {
  2221. return NewSubmissions_awaiter(this, arguments, void 0, (function*(action, delay = 100) {
  2222. return yield WaitAndCallAction.callFunctionAsync(nukeSubmissionsLocal, [ this._semaphore ], action, delay);
  2223. }));
  2224. }
  2225. }
  2226. function getSubmissionsPageLocal(firstSubmissionId, semaphore) {
  2227. return NewSubmissions_awaiter(this, void 0, void 0, (function*() {
  2228. return null == firstSubmissionId || firstSubmissionId <= 0 ? yield FuraffinityRequests.getHTML(`${NewSubmissions.hardLink}new@72/`, semaphore) : yield FuraffinityRequests.getHTML(`${NewSubmissions.hardLink}new~${firstSubmissionId}@72/`, semaphore);
  2229. }));
  2230. }
  2231. function removeSubmissionsLocal(submissionIds, semaphore) {
  2232. return NewSubmissions_awaiter(this, void 0, void 0, (function*() {
  2233. if (null == submissionIds || 0 === submissionIds.length) return void Logger.logError("No submission ids to remove");
  2234. const payload = [ [ "messagecenter-action", Message.hardActions.remove ] ];
  2235. for (const submissionId of submissionIds) payload.push([ "submissions", submissionId.toString() ]);
  2236. return yield FuraffinityRequests.postHTML(`${NewSubmissions.hardLink}new@72/`, payload, semaphore);
  2237. }));
  2238. }
  2239. function nukeSubmissionsLocal(semaphore) {
  2240. return NewSubmissions_awaiter(this, void 0, void 0, (function*() {
  2241. const payload = {
  2242. "messagecenter-action": Message.hardActions.nuke
  2243. }, payloadArray = Object.entries(payload).map((([key, value]) => {
  2244. var _a;
  2245. return [ key, null !== (_a = null == value ? void 0 : value.toString()) && void 0 !== _a ? _a : "" ];
  2246. }));
  2247. return yield FuraffinityRequests.postHTML(`${NewSubmissions.hardLink}new@72/`, payloadArray, semaphore);
  2248. }));
  2249. }
  2250. class Message {
  2251. constructor(semaphore) {
  2252. this._semaphore = semaphore, this.NewSubmissions = new NewSubmissions(this._semaphore);
  2253. }
  2254. static get hardActions() {
  2255. return {
  2256. remove: "remove_checked",
  2257. nuke: "nuke_notifications"
  2258. };
  2259. }
  2260. }
  2261. var AccountInformation_awaiter = function(thisArg, _arguments, P, generator) {
  2262. return new (P || (P = Promise))((function(resolve, reject) {
  2263. function fulfilled(value) {
  2264. try {
  2265. step(generator.next(value));
  2266. } catch (e) {
  2267. reject(e);
  2268. }
  2269. }
  2270. function rejected(value) {
  2271. try {
  2272. step(generator.throw(value));
  2273. } catch (e) {
  2274. reject(e);
  2275. }
  2276. }
  2277. function step(result) {
  2278. result.done ? resolve(result.value) : function adopt(value) {
  2279. return value instanceof P ? value : new P((function(resolve) {
  2280. resolve(value);
  2281. }));
  2282. }(result.value).then(fulfilled, rejected);
  2283. }
  2284. step((generator = generator.apply(thisArg, _arguments || [])).next());
  2285. }));
  2286. };
  2287. class AccountInformation {
  2288. constructor(semaphore) {
  2289. this._semaphore = semaphore;
  2290. }
  2291. static get hardLinks() {
  2292. return {
  2293. settings: FuraffinityRequests.fullUrl + "/controls/settings/",
  2294. siteSettings: FuraffinityRequests.fullUrl + "/controls/site-settings/",
  2295. userSettings: FuraffinityRequests.fullUrl + "/controls/user-settings/"
  2296. };
  2297. }
  2298. getSettingsPage(action_1) {
  2299. return AccountInformation_awaiter(this, arguments, void 0, (function*(action, delay = 100) {
  2300. return yield WaitAndCallAction.callFunctionAsync(FuraffinityRequests.getHTML, [ AccountInformation.hardLinks.settings, this._semaphore ], action, delay);
  2301. }));
  2302. }
  2303. getSiteSettingsPage(action_1) {
  2304. return AccountInformation_awaiter(this, arguments, void 0, (function*(action, delay = 100) {
  2305. return yield WaitAndCallAction.callFunctionAsync(FuraffinityRequests.getHTML, [ AccountInformation.hardLinks.siteSettings, this._semaphore ], action, delay);
  2306. }));
  2307. }
  2308. getUserSettingsPage(action_1) {
  2309. return AccountInformation_awaiter(this, arguments, void 0, (function*(action, delay = 100) {
  2310. return yield WaitAndCallAction.callFunctionAsync(FuraffinityRequests.getHTML, [ AccountInformation.hardLinks.userSettings, this._semaphore ], action, delay);
  2311. }));
  2312. }
  2313. }
  2314. var UserProfile_awaiter = function(thisArg, _arguments, P, generator) {
  2315. return new (P || (P = Promise))((function(resolve, reject) {
  2316. function fulfilled(value) {
  2317. try {
  2318. step(generator.next(value));
  2319. } catch (e) {
  2320. reject(e);
  2321. }
  2322. }
  2323. function rejected(value) {
  2324. try {
  2325. step(generator.throw(value));
  2326. } catch (e) {
  2327. reject(e);
  2328. }
  2329. }
  2330. function step(result) {
  2331. result.done ? resolve(result.value) : function adopt(value) {
  2332. return value instanceof P ? value : new P((function(resolve) {
  2333. resolve(value);
  2334. }));
  2335. }(result.value).then(fulfilled, rejected);
  2336. }
  2337. step((generator = generator.apply(thisArg, _arguments || [])).next());
  2338. }));
  2339. };
  2340. class UserProfile {
  2341. constructor(semaphore) {
  2342. this._semaphore = semaphore;
  2343. }
  2344. static get hardLinks() {
  2345. return {
  2346. profile: FuraffinityRequests.fullUrl + "/controls/profile/",
  2347. profilebanner: FuraffinityRequests.fullUrl + "/controls/profilebanner/",
  2348. contacts: FuraffinityRequests.fullUrl + "/controls/contacts/",
  2349. avatar: FuraffinityRequests.fullUrl + "/controls/avatar/"
  2350. };
  2351. }
  2352. getProfilePage(action_1) {
  2353. return UserProfile_awaiter(this, arguments, void 0, (function*(action, delay = 100) {
  2354. return yield WaitAndCallAction.callFunctionAsync(FuraffinityRequests.getHTML, [ UserProfile.hardLinks.profile, this._semaphore ], action, delay);
  2355. }));
  2356. }
  2357. getProfilebannerPage(action_1) {
  2358. return UserProfile_awaiter(this, arguments, void 0, (function*(action, delay = 100) {
  2359. return yield WaitAndCallAction.callFunctionAsync(FuraffinityRequests.getHTML, [ UserProfile.hardLinks.profilebanner, this._semaphore ], action, delay);
  2360. }));
  2361. }
  2362. getContactsPage(action_1) {
  2363. return UserProfile_awaiter(this, arguments, void 0, (function*(action, delay = 100) {
  2364. return yield WaitAndCallAction.callFunctionAsync(FuraffinityRequests.getHTML, [ UserProfile.hardLinks.contacts, this._semaphore ], action, delay);
  2365. }));
  2366. }
  2367. getAvatarPage(action_1) {
  2368. return UserProfile_awaiter(this, arguments, void 0, (function*(action, delay = 100) {
  2369. return yield WaitAndCallAction.callFunctionAsync(FuraffinityRequests.getHTML, [ UserProfile.hardLinks.avatar, this._semaphore ], action, delay);
  2370. }));
  2371. }
  2372. }
  2373. var ManageContent_awaiter = function(thisArg, _arguments, P, generator) {
  2374. return new (P || (P = Promise))((function(resolve, reject) {
  2375. function fulfilled(value) {
  2376. try {
  2377. step(generator.next(value));
  2378. } catch (e) {
  2379. reject(e);
  2380. }
  2381. }
  2382. function rejected(value) {
  2383. try {
  2384. step(generator.throw(value));
  2385. } catch (e) {
  2386. reject(e);
  2387. }
  2388. }
  2389. function step(result) {
  2390. result.done ? resolve(result.value) : function adopt(value) {
  2391. return value instanceof P ? value : new P((function(resolve) {
  2392. resolve(value);
  2393. }));
  2394. }(result.value).then(fulfilled, rejected);
  2395. }
  2396. step((generator = generator.apply(thisArg, _arguments || [])).next());
  2397. }));
  2398. };
  2399. class ManageContent {
  2400. constructor(semaphore) {
  2401. this._semaphore = semaphore;
  2402. }
  2403. static get hardLinks() {
  2404. return {
  2405. submissions: FuraffinityRequests.fullUrl + "/controls/submissions/",
  2406. folders: FuraffinityRequests.fullUrl + "/controls/folders/submissions/",
  2407. journals: FuraffinityRequests.fullUrl + "/controls/journal/",
  2408. favorites: FuraffinityRequests.fullUrl + "/controls/favorites/",
  2409. buddylist: FuraffinityRequests.fullUrl + "/controls/buddylist/",
  2410. shouts: FuraffinityRequests.fullUrl + "/controls/shouts/",
  2411. badges: FuraffinityRequests.fullUrl + "/controls/badges/"
  2412. };
  2413. }
  2414. getFoldersPages(action_1) {
  2415. return ManageContent_awaiter(this, arguments, void 0, (function*(action, delay = 100) {
  2416. return yield WaitAndCallAction.callFunctionAsync(FuraffinityRequests.getHTML, [ ManageContent.hardLinks.folders, this._semaphore ], action, delay);
  2417. }));
  2418. }
  2419. getAllWatchesPages(action_1) {
  2420. return ManageContent_awaiter(this, arguments, void 0, (function*(action, delay = 100) {
  2421. return yield WaitAndCallAction.callFunctionAsync(getContentAllWatchesPagesLocal, [ this._semaphore ], action, delay);
  2422. }));
  2423. }
  2424. getWatchesPage(pageNumber_1, action_1) {
  2425. return ManageContent_awaiter(this, arguments, void 0, (function*(pageNumber, action, delay = 100) {
  2426. return pageNumber = convertToNumber(pageNumber), yield WaitAndCallAction.callFunctionAsync(getWatchesPageLocal, [ pageNumber, this._semaphore ], action, delay);
  2427. }));
  2428. }
  2429. }
  2430. function getContentAllWatchesPagesLocal(semaphore) {
  2431. return ManageContent_awaiter(this, void 0, void 0, (function*() {
  2432. let usersDoc = yield FuraffinityRequests.getHTML(ManageContent.hardLinks.buddylist + "x", semaphore);
  2433. 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 = [];
  2434. if (null != pages) for (let i = 1; i <= pages.length; i++) usersDoc = yield getWatchesPageLocal(i, semaphore),
  2435. usersDoc && userPageDocs.push(usersDoc);
  2436. return userPageDocs;
  2437. }));
  2438. }
  2439. function getWatchesPageLocal(pageNumber, semaphore) {
  2440. return ManageContent_awaiter(this, void 0, void 0, (function*() {
  2441. return (null == pageNumber || pageNumber <= 0) && (Logger.logWarning("No page number given. Using default 1 instead."),
  2442. pageNumber = 1), yield FuraffinityRequests.getHTML(ManageContent.hardLinks.buddylist + pageNumber, semaphore);
  2443. }));
  2444. }
  2445. var Security_awaiter = function(thisArg, _arguments, P, generator) {
  2446. return new (P || (P = Promise))((function(resolve, reject) {
  2447. function fulfilled(value) {
  2448. try {
  2449. step(generator.next(value));
  2450. } catch (e) {
  2451. reject(e);
  2452. }
  2453. }
  2454. function rejected(value) {
  2455. try {
  2456. step(generator.throw(value));
  2457. } catch (e) {
  2458. reject(e);
  2459. }
  2460. }
  2461. function step(result) {
  2462. result.done ? resolve(result.value) : function adopt(value) {
  2463. return value instanceof P ? value : new P((function(resolve) {
  2464. resolve(value);
  2465. }));
  2466. }(result.value).then(fulfilled, rejected);
  2467. }
  2468. step((generator = generator.apply(thisArg, _arguments || [])).next());
  2469. }));
  2470. };
  2471. class Security {
  2472. constructor(semaphore) {
  2473. this._semaphore = semaphore;
  2474. }
  2475. static get hardLinks() {
  2476. return {
  2477. sessions: FuraffinityRequests.fullUrl + "/controls/sessions/logins/",
  2478. logs: FuraffinityRequests.fullUrl + "/controls/logs/",
  2479. labels: FuraffinityRequests.fullUrl + "/controls/labels/"
  2480. };
  2481. }
  2482. getSessionsPage(action_1) {
  2483. return Security_awaiter(this, arguments, void 0, (function*(action, delay = 100) {
  2484. return yield WaitAndCallAction.callFunctionAsync(FuraffinityRequests.getHTML, [ Security.hardLinks.sessions, this._semaphore ], action, delay);
  2485. }));
  2486. }
  2487. getLogsPage(action_1) {
  2488. return Security_awaiter(this, arguments, void 0, (function*(action, delay = 100) {
  2489. return yield WaitAndCallAction.callFunctionAsync(FuraffinityRequests.getHTML, [ Security.hardLinks.logs, this._semaphore ], action, delay);
  2490. }));
  2491. }
  2492. getLabelsPage(action_1) {
  2493. return Security_awaiter(this, arguments, void 0, (function*(action, delay = 100) {
  2494. return yield WaitAndCallAction.callFunctionAsync(FuraffinityRequests.getHTML, [ Security.hardLinks.labels, this._semaphore ], action, delay);
  2495. }));
  2496. }
  2497. }
  2498. class PersonalUserRequests {
  2499. constructor(semaphore) {
  2500. this._semaphore = semaphore, this.MessageRequests = new Message(this._semaphore),
  2501. this.AccountInformation = new AccountInformation(this._semaphore), this.UserProfile = new UserProfile(this._semaphore),
  2502. this.ManageContent = new ManageContent(this._semaphore), this.Security = new Security(this._semaphore);
  2503. }
  2504. }
  2505. var SubmissionRequests_awaiter = function(thisArg, _arguments, P, generator) {
  2506. return new (P || (P = Promise))((function(resolve, reject) {
  2507. function fulfilled(value) {
  2508. try {
  2509. step(generator.next(value));
  2510. } catch (e) {
  2511. reject(e);
  2512. }
  2513. }
  2514. function rejected(value) {
  2515. try {
  2516. step(generator.throw(value));
  2517. } catch (e) {
  2518. reject(e);
  2519. }
  2520. }
  2521. function step(result) {
  2522. result.done ? resolve(result.value) : function adopt(value) {
  2523. return value instanceof P ? value : new P((function(resolve) {
  2524. resolve(value);
  2525. }));
  2526. }(result.value).then(fulfilled, rejected);
  2527. }
  2528. step((generator = generator.apply(thisArg, _arguments || [])).next());
  2529. }));
  2530. };
  2531. class SubmissionRequests {
  2532. constructor(semaphore) {
  2533. this._semaphore = semaphore;
  2534. }
  2535. static get hardLinks() {
  2536. return {
  2537. view: FuraffinityRequests.fullUrl + "/view/",
  2538. fav: FuraffinityRequests.fullUrl + "/fav/",
  2539. unfav: FuraffinityRequests.fullUrl + "/unfav/",
  2540. journal: FuraffinityRequests.fullUrl + "/journal/"
  2541. };
  2542. }
  2543. getSubmissionPage(submissionId_1, action_1) {
  2544. return SubmissionRequests_awaiter(this, arguments, void 0, (function*(submissionId, action, delay = 100) {
  2545. return yield WaitAndCallAction.callFunctionAsync(getSubmissionPageLocal, [ submissionId, this._semaphore ], action, delay);
  2546. }));
  2547. }
  2548. favSubmission(submissionId_1, favKey_1, action_1) {
  2549. return SubmissionRequests_awaiter(this, arguments, void 0, (function*(submissionId, favKey, action, delay = 100) {
  2550. return yield WaitAndCallAction.callFunctionAsync(favSubmissionLocal, [ submissionId, favKey, this._semaphore ], action, delay);
  2551. }));
  2552. }
  2553. unfavSubmission(submissionId_1, unfavKey_1, action_1) {
  2554. return SubmissionRequests_awaiter(this, arguments, void 0, (function*(submissionId, unfavKey, action, delay = 100) {
  2555. return yield WaitAndCallAction.callFunctionAsync(unfavSubmissionLocal, [ submissionId, unfavKey, this._semaphore ], action, delay);
  2556. }));
  2557. }
  2558. getJournalPage(journalId_1, action_1) {
  2559. return SubmissionRequests_awaiter(this, arguments, void 0, (function*(journalId, action, delay = 100) {
  2560. return yield WaitAndCallAction.callFunctionAsync(getJournalPageLocal, [ journalId, this._semaphore ], action, delay);
  2561. }));
  2562. }
  2563. }
  2564. function getSubmissionPageLocal(submissionId, semaphore) {
  2565. return SubmissionRequests_awaiter(this, void 0, void 0, (function*() {
  2566. if (null == submissionId || "" === submissionId || -1 === submissionId) return void Logger.logError("No submissionId given");
  2567. const url = SubmissionRequests.hardLinks.view + submissionId;
  2568. return yield FuraffinityRequests.getHTML(url, semaphore);
  2569. }));
  2570. }
  2571. function favSubmissionLocal(submissionId, favKey, semaphore) {
  2572. return SubmissionRequests_awaiter(this, void 0, void 0, (function*() {
  2573. var _a, _b;
  2574. if (null == submissionId || "" === submissionId || -1 === submissionId) return void Logger.logError("No submissionId given");
  2575. if (null == favKey || "" === favKey || -1 === favKey) return void Logger.logError("No favKey given");
  2576. const url = SubmissionRequests.hardLinks.fav + submissionId + "?key=" + favKey, resultDoc = yield FuraffinityRequests.getHTML(url, semaphore);
  2577. if (null != resultDoc) try {
  2578. const standardpage = resultDoc.getElementById("standardpage");
  2579. if (standardpage) {
  2580. const blocked = standardpage.querySelector('div[class="redirect-message"]');
  2581. if (null !== (_b = null === (_a = null == blocked ? void 0 : blocked.textContent) || void 0 === _a ? void 0 : _a.includes("blocked")) && void 0 !== _b && _b) return;
  2582. }
  2583. return getFavKeyLocal(resultDoc);
  2584. } catch (_c) {}
  2585. }));
  2586. }
  2587. function unfavSubmissionLocal(submissionId, unfavKey, semaphore) {
  2588. return SubmissionRequests_awaiter(this, void 0, void 0, (function*() {
  2589. if (null == submissionId || "" === submissionId || -1 === submissionId) return void Logger.logError("No submissionId given");
  2590. if (null == unfavKey || "" === unfavKey || -1 === unfavKey) return void Logger.logError("No unfavKey given");
  2591. const url = SubmissionRequests.hardLinks.unfav + submissionId + "?key=" + unfavKey, resultDoc = yield FuraffinityRequests.getHTML(url, semaphore);
  2592. if (resultDoc) {
  2593. return getFavKeyLocal(resultDoc);
  2594. }
  2595. }));
  2596. }
  2597. function getJournalPageLocal(journalId, semaphore) {
  2598. return SubmissionRequests_awaiter(this, void 0, void 0, (function*() {
  2599. if (null == journalId || "" === journalId || -1 === journalId) return void Logger.logError("No journalId given");
  2600. const url = SubmissionRequests.hardLinks.journal + journalId;
  2601. return yield FuraffinityRequests.getHTML(url, semaphore);
  2602. }));
  2603. }
  2604. function getFavKeyLocal(doc) {
  2605. var _a, _b, _c;
  2606. 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]');
  2607. if (!buttons || 0 === buttons.length) return;
  2608. let favButton;
  2609. for (const button of Array.from(buttons)) null !== (_b = null === (_a = null == button ? void 0 : button.textContent) || void 0 === _a ? void 0 : _a.toLowerCase().includes("fav")) && void 0 !== _b && _b && (favButton = button);
  2610. if (null != favButton) {
  2611. return null === (_c = favButton.getAttribute("href")) || void 0 === _c ? void 0 : _c.split("?key=")[1];
  2612. }
  2613. }
  2614. var FuraffinityRequests_awaiter = function(thisArg, _arguments, P, generator) {
  2615. return new (P || (P = Promise))((function(resolve, reject) {
  2616. function fulfilled(value) {
  2617. try {
  2618. step(generator.next(value));
  2619. } catch (e) {
  2620. reject(e);
  2621. }
  2622. }
  2623. function rejected(value) {
  2624. try {
  2625. step(generator.throw(value));
  2626. } catch (e) {
  2627. reject(e);
  2628. }
  2629. }
  2630. function step(result) {
  2631. result.done ? resolve(result.value) : function adopt(value) {
  2632. return value instanceof P ? value : new P((function(resolve) {
  2633. resolve(value);
  2634. }));
  2635. }(result.value).then(fulfilled, rejected);
  2636. }
  2637. step((generator = generator.apply(thisArg, _arguments || [])).next());
  2638. }));
  2639. };
  2640. class FuraffinityRequests {
  2641. constructor(maxAmountRequests = 2) {
  2642. this._semaphore = new Semaphore(maxAmountRequests), this.UserRequests = new UserRequests(this._semaphore),
  2643. this.PersonalUserRequests = new PersonalUserRequests(this._semaphore), this.SubmissionRequests = new SubmissionRequests(this._semaphore);
  2644. }
  2645. set maxAmountRequests(value) {
  2646. this._semaphore.maxConcurrency !== value && (this._semaphore.maxConcurrency = value);
  2647. }
  2648. get maxAmountRequests() {
  2649. return this._semaphore.maxConcurrency;
  2650. }
  2651. static set useHttps(value) {
  2652. FuraffinityRequests._useHttps !== value && (FuraffinityRequests._useHttps = value,
  2653. FuraffinityRequests._httpsString = value ? "https://" : "http://");
  2654. }
  2655. static get useHttps() {
  2656. return FuraffinityRequests._useHttps;
  2657. }
  2658. static get fullUrl() {
  2659. return FuraffinityRequests._httpsString + FuraffinityRequests._domain;
  2660. }
  2661. static getHTML(url_1, semaphore_1, action_1) {
  2662. return FuraffinityRequests_awaiter(this, arguments, void 0, (function*(url, semaphore, action, delay = 100) {
  2663. if (null != url && "" !== url) return yield WaitAndCallAction.callFunctionAsync(getHTMLLocal, [ url, semaphore ], action, delay);
  2664. Logger.logError("No url given");
  2665. }));
  2666. }
  2667. static postHTML(url_1, payload_1, semaphore_1, action_1) {
  2668. return FuraffinityRequests_awaiter(this, arguments, void 0, (function*(url, payload, semaphore, action, delay = 100) {
  2669. if (null != url && "" !== url) return yield WaitAndCallAction.callFunctionAsync(postHTMLLocal, [ url, payload, semaphore ], action, delay);
  2670. Logger.logError("No url given");
  2671. }));
  2672. }
  2673. }
  2674. function getHTMLLocal(url, semaphore) {
  2675. return FuraffinityRequests_awaiter(this, void 0, void 0, (function*() {
  2676. Logger.logMessage(`Requesting '${url}'`);
  2677. const semaphoreActive = null != semaphore && semaphore.maxConcurrency > 0;
  2678. semaphoreActive && (yield semaphore.acquire());
  2679. try {
  2680. const response = yield fetch(url), html = yield response.text(), parser = new DOMParser;
  2681. return parser.parseFromString(html, "text/html");
  2682. } catch (error) {
  2683. Logger.logError(error);
  2684. } finally {
  2685. semaphoreActive && semaphore.release();
  2686. }
  2687. }));
  2688. }
  2689. function postHTMLLocal(url, payload, semaphore) {
  2690. return FuraffinityRequests_awaiter(this, void 0, void 0, (function*() {
  2691. const semaphoreActive = null != semaphore && semaphore.maxConcurrency > 0;
  2692. semaphoreActive && (yield semaphore.acquire());
  2693. try {
  2694. const response = yield fetch(url, {
  2695. method: "POST",
  2696. body: new URLSearchParams(payload).toString(),
  2697. headers: {
  2698. "Content-Type": "application/x-www-form-urlencoded"
  2699. }
  2700. });
  2701. if (!response.ok) return void Logger.logError(`HTTP error! Status: ${response.status}`);
  2702. const responseData = yield response.text();
  2703. try {
  2704. const parser = new DOMParser;
  2705. return parser.parseFromString(responseData, "text/html");
  2706. } catch (_a) {
  2707. Logger.logError(`Failed to parse response data as HTML: ${responseData}`);
  2708. }
  2709. } catch (error) {
  2710. Logger.logError(error);
  2711. } finally {
  2712. semaphoreActive && semaphore.release();
  2713. }
  2714. }));
  2715. }
  2716. FuraffinityRequests.logLevel = 1, FuraffinityRequests.Types = {
  2717. BrowseOptions,
  2718. SearchOptions
  2719. }, FuraffinityRequests._useHttps = !0, FuraffinityRequests._httpsString = "https://",
  2720. FuraffinityRequests._domain = "www.furaffinity.net", Object.defineProperties(window, {
  2721. FARequestHelper: {
  2722. get: () => FuraffinityRequests
  2723. }
  2724. });
  2725. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址