pervert-monkey 1.0.18 → 1.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/core/pervertmonkey.core.es.d.ts +8 -11
  2. package/dist/core/pervertmonkey.core.es.js +31 -35
  3. package/dist/core/pervertmonkey.core.es.js.map +1 -1
  4. package/dist/core/pervertmonkey.core.umd.js +31 -35
  5. package/dist/core/pervertmonkey.core.umd.js.map +1 -1
  6. package/dist/test/test.user.js +10301 -0
  7. package/dist/userscripts/3hentai.user.js +2 -2
  8. package/dist/userscripts/camgirlfinder.user.js +2 -2
  9. package/dist/userscripts/camwhores.user.js +2 -2
  10. package/dist/userscripts/e-hentai.user.js +2 -2
  11. package/dist/userscripts/ebalka.user.js +2 -2
  12. package/dist/userscripts/eporner.user.js +2 -2
  13. package/dist/userscripts/erome.user.js +2 -2
  14. package/dist/userscripts/eroprofile.user.js +2 -2
  15. package/dist/userscripts/javhdporn.user.js +2 -2
  16. package/dist/userscripts/missav.user.js +2 -2
  17. package/dist/userscripts/motherless.user.js +2 -2
  18. package/dist/userscripts/namethatporn.user.js +2 -2
  19. package/dist/userscripts/nhentai.user.js +2 -2
  20. package/dist/userscripts/obmenvsem.user.js +3 -3
  21. package/dist/userscripts/pornhub.user.js +2 -2
  22. package/dist/userscripts/spankbang.user.js +2 -2
  23. package/dist/userscripts/thisvid.user.js +33 -27
  24. package/dist/userscripts/xhamster.user.js +3 -3
  25. package/dist/userscripts/xvideos.user.js +3 -3
  26. package/package.json +4 -4
  27. package/src/core/data-handler/data-filter.ts +4 -4
  28. package/src/core/infinite-scroll/index.ts +2 -9
  29. package/src/core/parsers/thumb-data-parser.ts +4 -3
  30. package/src/core/parsers/thumbs-parser.ts +9 -10
  31. package/src/core/rules/index.ts +6 -7
  32. package/src/userscripts/index.ts +1 -1
  33. package/src/userscripts/scripts/3hentai.ts +1 -1
  34. package/src/userscripts/scripts/camgirlfinder.ts +1 -1
  35. package/src/userscripts/scripts/camwhores.ts +1 -1
  36. package/src/userscripts/scripts/e-hentai.ts +1 -1
  37. package/src/userscripts/scripts/ebalka.ts +1 -1
  38. package/src/userscripts/scripts/eporner.ts +1 -1
  39. package/src/userscripts/scripts/erome.ts +1 -1
  40. package/src/userscripts/scripts/eroprofile.ts +1 -1
  41. package/src/userscripts/scripts/javhdporn.ts +1 -1
  42. package/src/userscripts/scripts/missav.ts +1 -1
  43. package/src/userscripts/scripts/motherless.ts +1 -1
  44. package/src/userscripts/scripts/namethatporn.ts +1 -1
  45. package/src/userscripts/scripts/nhentai.ts +1 -2
  46. package/src/userscripts/scripts/obmenvsem.ts +2 -2
  47. package/src/userscripts/scripts/pornhub.ts +1 -1
  48. package/src/userscripts/scripts/spankbang.ts +1 -1
  49. package/src/userscripts/scripts/thisvid.ts +43 -35
  50. package/src/userscripts/scripts/xhamster.ts +2 -2
  51. package/src/userscripts/scripts/xvideos.ts +2 -2
  52. package/src/utils/dom/index.ts +14 -10
  53. package/src/utils/parsers/index.ts +1 -1
@@ -175,15 +175,19 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
175
175
  observer.observe(element, options);
176
176
  return observer;
177
177
  }
178
- function findSelfOrChild(element, selector) {
179
- if (element.matches(selector)) {
178
+ function querySelectorOrSelf(element, selector) {
179
+ var _a3;
180
+ if ((_a3 = element.matches) == null ? void 0 : _a3.call(element, selector)) {
180
181
  return element;
181
182
  }
182
183
  return element.querySelector(selector);
183
184
  }
184
185
  function querySelectorLast(root = document, selector) {
185
186
  const nodes = root.querySelectorAll(selector);
186
- return nodes.length > 0 ? nodes[nodes.length - 1] : void 0;
187
+ if (nodes.length < 1) {
188
+ return querySelectorOrSelf(root, selector) || void 0;
189
+ }
190
+ return nodes[nodes.length - 1];
187
191
  }
188
192
  function querySelectorLastNumber(selector, e = document) {
189
193
  var _a3;
@@ -193,7 +197,7 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
193
197
  function querySelectorText(e, selector) {
194
198
  var _a3;
195
199
  if (typeof selector !== "string") return "";
196
- const text = ((_a3 = e.querySelector(selector)) == null ? void 0 : _a3.innerText) || "";
200
+ const text = ((_a3 = querySelectorOrSelf(e, selector)) == null ? void 0 : _a3.innerText) || "";
197
201
  return sanitizeStr(text);
198
202
  }
199
203
  function parseHtml(html) {
@@ -229,8 +233,7 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
229
233
  });
230
234
  }
231
235
  function getCommonParents(elements) {
232
- const parents = Array.from(elements).map((e) => e.parentElement).filter((parent) => parent !== null);
233
- return [...new Set(parents)];
236
+ return Map.groupBy(elements, (e) => e.parentElement).keys().filter((e) => e !== null).toArray();
234
237
  }
235
238
  function findNextSibling(e) {
236
239
  if (e.nextElementSibling) return e.nextElementSibling;
@@ -440,7 +443,7 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
440
443
  const num = Number(n);
441
444
  return Number.isSafeInteger(num) ? num : or2;
442
445
  }
443
- function parseNumberWithLetter(str) {
446
+ function parseNumericAbbreviation(str) {
444
447
  var _a3;
445
448
  const multipliers = { k: 1e3, m: 1e6 };
446
449
  const match = str.trim().match(/([\d., ]+)(\w)?/);
@@ -555,7 +558,7 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
555
558
  class DataFilter {
556
559
  constructor(rules) {
557
560
  __publicField(this, "filters", /* @__PURE__ */ new Map());
558
- __publicField(this, "filterMapping", {});
561
+ __publicField(this, "filterDepsMapping", {});
559
562
  __publicField(this, "customDataFilterFns", {});
560
563
  this.rules = rules;
561
564
  this.registerFilters(rules.customDataFilterFns);
@@ -586,12 +589,12 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
586
589
  );
587
590
  dataFilterFn.deps.push(customSelectorName);
588
591
  dataFilterFn.deps.forEach((name) => {
589
- Object.assign(this.filterMapping, { [name]: customSelectorName });
592
+ Object.assign(this.filterDepsMapping, { [name]: customSelectorName });
590
593
  });
591
594
  this.filters.set(customSelectorName, dataFilterFn.renderFn(this.rules.store.state));
592
595
  }
593
596
  selectFilters(filters) {
594
- const selectedFilters = Object.keys(filters).filter((k2) => k2 in this.filterMapping).map((k2) => this.filterMapping[k2]).map((k2) => this.filters.get(k2));
597
+ const selectedFilters = Object.keys(filters).filter((k2) => k2 in this.filterDepsMapping).map((k2) => this.filterDepsMapping[k2]).map((k2) => this.filters.get(k2));
595
598
  return selectedFilters;
596
599
  }
597
600
  }
@@ -1957,14 +1960,13 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
1957
1960
  }
1958
1961
  class InfiniteScroller {
1959
1962
  constructor(options) {
1960
- __publicField(this, "enabled", true);
1961
1963
  __publicField(this, "paginationOffset", 1);
1962
1964
  __publicField(this, "rules");
1963
1965
  __publicField(this, "observer");
1964
1966
  __publicField(this, "paginationGenerator");
1965
1967
  __publicField(this, "subject", new Subject());
1966
1968
  __publicField(this, "generatorConsumer", async () => {
1967
- if (!this.enabled) return false;
1969
+ if (!this.rules.store.state.infiniteScrollEnabled) return true;
1968
1970
  const { value, done } = await this.paginationGenerator.next();
1969
1971
  if (done) return false;
1970
1972
  const { url, offset } = value;
@@ -2030,9 +2032,8 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
2030
2032
  }
2031
2033
  }
2032
2034
  static create(rules) {
2033
- const enabled = rules.store.state.infiniteScrollEnabled;
2034
2035
  rules.store.state.$paginationLast = rules.paginationStrategy.getPaginationLast();
2035
- const infiniteScroller = new InfiniteScroller({ enabled, rules });
2036
+ const infiniteScroller = new InfiniteScroller({ rules });
2036
2037
  rules.store.state.$paginationOffset = infiniteScroller.paginationOffset;
2037
2038
  infiniteScroller.subject.subscribe((x2) => {
2038
2039
  if (x2.type === "scroll") {
@@ -2043,9 +2044,6 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
2043
2044
  });
2044
2045
  }
2045
2046
  });
2046
- rules.store.stateSubject.subscribe(() => {
2047
- infiniteScroller.enabled = rules.store.state.infiniteScrollEnabled;
2048
- });
2049
2047
  return infiniteScroller;
2050
2048
  }
2051
2049
  }
@@ -3104,7 +3102,7 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
3104
3102
  getThumbDataWith(thumb, { type, selector }) {
3105
3103
  var _a3;
3106
3104
  if (type === "boolean") {
3107
- return !!thumb.querySelector(selector);
3105
+ return !!querySelectorOrSelf(thumb, selector);
3108
3106
  }
3109
3107
  if (type === "string") {
3110
3108
  return sanitizeStr(((_a3 = querySelectorLast(thumb, selector)) == null ? void 0 : _a3.innerText) || "");
@@ -3114,7 +3112,7 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
3114
3112
  }
3115
3113
  if (type === "float") {
3116
3114
  const value = querySelectorText(thumb, selector);
3117
- return parseNumberWithLetter(value);
3115
+ return parseNumericAbbreviation(value);
3118
3116
  }
3119
3117
  return Number.parseInt(querySelectorText(thumb, selector));
3120
3118
  }
@@ -3183,24 +3181,21 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
3183
3181
  }
3184
3182
  }
3185
3183
  class ThumbsParser {
3186
- constructor(containerSelector) {
3184
+ constructor() {
3187
3185
  __publicField(this, "selector", ".thumb");
3188
3186
  __publicField(this, "strategy", "default");
3189
3187
  __publicField(this, "transform");
3190
- this.containerSelector = containerSelector;
3191
3188
  }
3192
- static create(options = {}, containerSelector) {
3193
- return Object.assign(new ThumbsParser(containerSelector), options);
3189
+ static create(options = {}) {
3190
+ return Object.assign(new ThumbsParser(), options);
3194
3191
  }
3195
- getThumbs(html) {
3196
- if (!html) return [];
3197
- let thumbs;
3192
+ getThumbs(container) {
3193
+ if (!container) return [];
3198
3194
  if (this.strategy === "auto") {
3199
3195
  if (typeof this.selector !== "string") return [];
3200
- const container = html.querySelector(this.containerSelector);
3201
- thumbs = [...(container == null ? void 0 : container.children) || []];
3196
+ return [...(container == null ? void 0 : container.children) || []];
3202
3197
  }
3203
- thumbs = Array.from(html.querySelectorAll(this.selector));
3198
+ const thumbs = Array.from(container.querySelectorAll(this.selector));
3204
3199
  if (typeof this.transform === "function") {
3205
3200
  thumbs.forEach(this.transform);
3206
3201
  }
@@ -9900,7 +9895,7 @@ Expected function or array of functions, received type ${typeof t}.`
9900
9895
  Object.assign(this, options);
9901
9896
  this.thumbDataParser = ThumbDataParser.create(this.thumb);
9902
9897
  this.thumbImgParser = ThumbImgParser.create(this.thumbImg);
9903
- this.thumbsParser = ThumbsParser.create(this.thumbs, this.containerSelector);
9898
+ this.thumbsParser = ThumbsParser.create(this.thumbs);
9904
9899
  this.paginationStrategy = getPaginationStrategy(this.paginationStrategyOptions);
9905
9900
  this.store = this.createStore();
9906
9901
  this.gui = this.createGui();
@@ -9911,15 +9906,16 @@ Expected function or array of functions, received type ${typeof t}.`
9911
9906
  }
9912
9907
  get container() {
9913
9908
  if (typeof this.containerSelectorLast === "string") {
9914
- return querySelectorLast(document, this.containerSelectorLast);
9909
+ return querySelectorLast(document.body, this.containerSelectorLast);
9915
9910
  }
9916
9911
  if (typeof this.containerSelector === "string") {
9917
- return document.querySelector(this.containerSelector);
9912
+ return querySelectorOrSelf(document.body, this.containerSelector);
9918
9913
  }
9919
9914
  return this.containerSelector();
9920
9915
  }
9921
9916
  get intersectionObservable() {
9922
- return this.intersectionObservableSelector && document.querySelector(this.intersectionObservableSelector);
9917
+ if (!this.intersectionObservableSelector) return void 0;
9918
+ return document.querySelector(this.intersectionObservableSelector);
9923
9919
  }
9924
9920
  get observable() {
9925
9921
  return this.intersectionObservable || this.paginationStrategy.getPaginationElement();
@@ -10024,7 +10020,6 @@ Expected function or array of functions, received type ${typeof t}.`
10024
10020
  exports2.fetchText = fetchText;
10025
10021
  exports2.fetchWith = fetchWith;
10026
10022
  exports2.findNextSibling = findNextSibling;
10027
- exports2.findSelfOrChild = findSelfOrChild;
10028
10023
  exports2.formatTimeToHHMMSS = formatTimeToHHMMSS;
10029
10024
  exports2.getCommonParents = getCommonParents;
10030
10025
  exports2.getPaginationStrategy = getPaginationStrategy;
@@ -10036,10 +10031,11 @@ Expected function or array of functions, received type ${typeof t}.`
10036
10031
  exports2.parseDataParams = parseDataParams;
10037
10032
  exports2.parseHtml = parseHtml;
10038
10033
  exports2.parseIntegerOr = parseIntegerOr;
10039
- exports2.parseNumberWithLetter = parseNumberWithLetter;
10034
+ exports2.parseNumericAbbreviation = parseNumericAbbreviation;
10040
10035
  exports2.parseUrl = parseUrl;
10041
10036
  exports2.querySelectorLast = querySelectorLast;
10042
10037
  exports2.querySelectorLastNumber = querySelectorLastNumber;
10038
+ exports2.querySelectorOrSelf = querySelectorOrSelf;
10043
10039
  exports2.querySelectorText = querySelectorText;
10044
10040
  exports2.range = range;
10045
10041
  exports2.removeClassesAndDataAttributes = removeClassesAndDataAttributes;