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.
- package/dist/core/pervertmonkey.core.es.d.ts +8 -11
- package/dist/core/pervertmonkey.core.es.js +31 -35
- package/dist/core/pervertmonkey.core.es.js.map +1 -1
- package/dist/core/pervertmonkey.core.umd.js +31 -35
- package/dist/core/pervertmonkey.core.umd.js.map +1 -1
- package/dist/test/test.user.js +10301 -0
- package/dist/userscripts/3hentai.user.js +2 -2
- package/dist/userscripts/camgirlfinder.user.js +2 -2
- package/dist/userscripts/camwhores.user.js +2 -2
- package/dist/userscripts/e-hentai.user.js +2 -2
- package/dist/userscripts/ebalka.user.js +2 -2
- package/dist/userscripts/eporner.user.js +2 -2
- package/dist/userscripts/erome.user.js +2 -2
- package/dist/userscripts/eroprofile.user.js +2 -2
- package/dist/userscripts/javhdporn.user.js +2 -2
- package/dist/userscripts/missav.user.js +2 -2
- package/dist/userscripts/motherless.user.js +2 -2
- package/dist/userscripts/namethatporn.user.js +2 -2
- package/dist/userscripts/nhentai.user.js +2 -2
- package/dist/userscripts/obmenvsem.user.js +3 -3
- package/dist/userscripts/pornhub.user.js +2 -2
- package/dist/userscripts/spankbang.user.js +2 -2
- package/dist/userscripts/thisvid.user.js +33 -27
- package/dist/userscripts/xhamster.user.js +3 -3
- package/dist/userscripts/xvideos.user.js +3 -3
- package/package.json +4 -4
- package/src/core/data-handler/data-filter.ts +4 -4
- package/src/core/infinite-scroll/index.ts +2 -9
- package/src/core/parsers/thumb-data-parser.ts +4 -3
- package/src/core/parsers/thumbs-parser.ts +9 -10
- package/src/core/rules/index.ts +6 -7
- package/src/userscripts/index.ts +1 -1
- package/src/userscripts/scripts/3hentai.ts +1 -1
- package/src/userscripts/scripts/camgirlfinder.ts +1 -1
- package/src/userscripts/scripts/camwhores.ts +1 -1
- package/src/userscripts/scripts/e-hentai.ts +1 -1
- package/src/userscripts/scripts/ebalka.ts +1 -1
- package/src/userscripts/scripts/eporner.ts +1 -1
- package/src/userscripts/scripts/erome.ts +1 -1
- package/src/userscripts/scripts/eroprofile.ts +1 -1
- package/src/userscripts/scripts/javhdporn.ts +1 -1
- package/src/userscripts/scripts/missav.ts +1 -1
- package/src/userscripts/scripts/motherless.ts +1 -1
- package/src/userscripts/scripts/namethatporn.ts +1 -1
- package/src/userscripts/scripts/nhentai.ts +1 -2
- package/src/userscripts/scripts/obmenvsem.ts +2 -2
- package/src/userscripts/scripts/pornhub.ts +1 -1
- package/src/userscripts/scripts/spankbang.ts +1 -1
- package/src/userscripts/scripts/thisvid.ts +43 -35
- package/src/userscripts/scripts/xhamster.ts +2 -2
- package/src/userscripts/scripts/xvideos.ts +2 -2
- package/src/utils/dom/index.ts +14 -10
- 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
|
|
179
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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, "
|
|
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.
|
|
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.
|
|
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.
|
|
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({
|
|
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
|
|
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
|
|
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(
|
|
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 = {}
|
|
3193
|
-
return Object.assign(new ThumbsParser(
|
|
3189
|
+
static create(options = {}) {
|
|
3190
|
+
return Object.assign(new ThumbsParser(), options);
|
|
3194
3191
|
}
|
|
3195
|
-
getThumbs(
|
|
3196
|
-
if (!
|
|
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
|
-
|
|
3201
|
-
thumbs = [...(container == null ? void 0 : container.children) || []];
|
|
3196
|
+
return [...(container == null ? void 0 : container.children) || []];
|
|
3202
3197
|
}
|
|
3203
|
-
thumbs = Array.from(
|
|
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
|
|
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.
|
|
9912
|
+
return querySelectorOrSelf(document.body, this.containerSelector);
|
|
9918
9913
|
}
|
|
9919
9914
|
return this.containerSelector();
|
|
9920
9915
|
}
|
|
9921
9916
|
get intersectionObservable() {
|
|
9922
|
-
|
|
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.
|
|
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;
|