pervert-monkey 1.0.13 → 1.0.15
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 +82 -29
- package/dist/core/pervertmonkey.core.es.js +233 -115
- package/dist/core/pervertmonkey.core.es.js.map +1 -1
- package/dist/core/pervertmonkey.core.umd.js +233 -115
- package/dist/core/pervertmonkey.core.umd.js.map +1 -1
- package/dist/userscripts/3hentai.user.js +4 -11
- package/dist/userscripts/camgirlfinder.user.js +2 -2
- package/dist/userscripts/camwhores.user.js +7 -16
- package/dist/userscripts/e-hentai.user.js +3 -4
- package/dist/userscripts/ebalka.user.js +13 -5
- package/dist/userscripts/eporner.user.js +21 -41
- package/dist/userscripts/erome.user.js +9 -8
- package/dist/userscripts/eroprofile.user.js +5 -14
- package/dist/userscripts/javhdporn.user.js +6 -5
- package/dist/userscripts/missav.user.js +10 -4
- package/dist/userscripts/motherless.user.js +12 -5
- package/dist/userscripts/namethatporn.user.js +8 -14
- package/dist/userscripts/nhentai.user.js +5 -13
- package/dist/userscripts/obmenvsem.user.js +10 -4
- package/dist/userscripts/pornhub.user.js +14 -6
- package/dist/userscripts/spankbang.user.js +28 -7
- package/dist/userscripts/thisvid.user.js +12 -30
- package/dist/userscripts/xhamster.user.js +9 -14
- package/dist/userscripts/xvideos.user.js +33 -5
- package/package.json +1 -1
- package/src/core/data-handler/data-filter-fn-defaults.ts +52 -0
- package/src/core/data-handler/data-filter-fn.ts +60 -0
- package/src/core/data-handler/data-filter.ts +22 -96
- package/src/core/data-handler/data-manager.ts +75 -26
- package/src/core/jabroni-config/default-scheme.ts +54 -5
- package/src/core/jabroni-config/index.ts +1 -0
- package/src/core/jabroni-config/jabroni-gui-controller.ts +1 -1
- package/src/core/jabroni-config/scheme-selectors-mapping.ts +12 -0
- package/src/core/parsers/thumb-data-parser.ts +4 -15
- package/src/core/rules/index.ts +15 -9
- package/src/userscripts/index.ts +1 -1
- package/src/userscripts/scripts/3hentai.ts +3 -6
- package/src/userscripts/scripts/camgirlfinder.ts +1 -1
- package/src/userscripts/scripts/camwhores.ts +5 -14
- package/src/userscripts/scripts/e-hentai.ts +4 -6
- package/src/userscripts/scripts/ebalka.ts +11 -3
- package/src/userscripts/scripts/eporner.ts +20 -39
- package/src/userscripts/scripts/erome.ts +9 -7
- package/src/userscripts/scripts/eroprofile.ts +4 -12
- package/src/userscripts/scripts/javhdporn.ts +7 -8
- package/src/userscripts/scripts/missav.ts +10 -4
- package/src/userscripts/scripts/motherless.ts +11 -6
- package/src/userscripts/scripts/namethatporn.ts +8 -15
- package/src/userscripts/scripts/nhentai.ts +6 -13
- package/src/userscripts/scripts/obmenvsem.ts +9 -3
- package/src/userscripts/scripts/pornhub.ts +13 -4
- package/src/userscripts/scripts/spankbang.ts +29 -5
- package/src/userscripts/scripts/thisvid.ts +14 -29
- package/src/userscripts/scripts/xhamster.ts +9 -14
- package/src/userscripts/scripts/xvideos.ts +32 -3
- package/src/utils/parsers/index.ts +5 -2
|
@@ -18,57 +18,63 @@ export declare function circularShift(n: number, c?: number, s?: number): number
|
|
|
18
18
|
|
|
19
19
|
export declare function copyAttributes<T extends Element = HTMLElement>(target: T, source: T): void;
|
|
20
20
|
|
|
21
|
-
export declare type DataElement =
|
|
21
|
+
export declare type DataElement = {
|
|
22
|
+
element: HTMLElement;
|
|
23
|
+
[key: string]: HTMLElement | string | number | boolean;
|
|
24
|
+
};
|
|
22
25
|
|
|
23
26
|
export declare class DataFilter {
|
|
24
27
|
private rules;
|
|
25
|
-
filters: Map<string, () =>
|
|
28
|
+
filters: Map<string, () => DataFilterFnRendered>;
|
|
26
29
|
constructor(rules: Rules);
|
|
27
30
|
static isFiltered(el: HTMLElement): boolean;
|
|
28
31
|
applyCSSFilters(wrapper?: (cssRule: string) => string): void;
|
|
29
|
-
|
|
30
|
-
registerFilters(customFilters: (Record<string,
|
|
31
|
-
private customSelectorParser;
|
|
32
|
+
customDataFilterFns: Record<string, DataFilterFnFrom<any>>;
|
|
33
|
+
registerFilters(customFilters: (Record<string, DataFilterFnFrom<any>> | string)[]): void;
|
|
32
34
|
registerFilter(customSelectorName: string): void;
|
|
33
35
|
filterMapping: Record<string, string>;
|
|
34
36
|
selectFilters(filters: {
|
|
35
37
|
[key: string]: boolean;
|
|
36
|
-
}): (() =>
|
|
37
|
-
|
|
38
|
+
}): (() => DataFilterFnRendered)[];
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
declare class DataFilterFn<R> {
|
|
42
|
+
handle: DataFilterFnHandle<R>;
|
|
43
|
+
deps: string[];
|
|
44
|
+
name: string;
|
|
45
|
+
$preDefine?: ((state: StoreState) => R) | undefined;
|
|
46
|
+
private tag;
|
|
47
|
+
constructor(handle: DataFilterFnHandle<R>, deps: string[] | undefined, name: string, $preDefine?: ((state: StoreState) => R) | undefined);
|
|
48
|
+
static from<R>(options: DataFilterFnFrom<R>, name: string): DataFilterFn<R>;
|
|
49
|
+
renderFn(state: StoreState): () => DataFilterFnRendered;
|
|
38
50
|
}
|
|
39
51
|
|
|
40
|
-
|
|
52
|
+
declare type DataFilterFnFrom<R> = Partial<DataFilterFn<R>> | DataFilterFnHandle<R>;
|
|
53
|
+
|
|
54
|
+
declare type DataFilterFnHandle<R> = (el: DataElement, state: StoreState, $preDefineResult?: R) => boolean;
|
|
55
|
+
|
|
56
|
+
declare type DataFilterFnRendered = (v: DataElement) => DataFilterFnRenderedResult;
|
|
41
57
|
|
|
42
|
-
declare
|
|
58
|
+
declare type DataFilterFnRenderedResult = {
|
|
43
59
|
tag: string;
|
|
44
60
|
condition: boolean;
|
|
45
|
-
}
|
|
61
|
+
};
|
|
46
62
|
|
|
47
63
|
export declare class DataManager {
|
|
48
64
|
private rules;
|
|
49
|
-
private
|
|
65
|
+
private containerHomogenity?;
|
|
50
66
|
data: Map<string, DataElement>;
|
|
51
67
|
private lazyImgLoader;
|
|
52
68
|
dataFilter: DataFilter;
|
|
53
|
-
constructor(rules: Rules,
|
|
69
|
+
constructor(rules: Rules, containerHomogenity?: Parameters<typeof checkHomogenity>[2] | undefined);
|
|
54
70
|
applyFilters: (filters?: Record<string, boolean>, offset?: number) => Promise<void>;
|
|
55
71
|
filterAll: (offset?: number) => Promise<void>;
|
|
56
72
|
parseData: (html: HTMLElement, container?: HTMLElement, removeDuplicates?: boolean, shouldLazify?: boolean) => void;
|
|
57
73
|
sortBy<K extends keyof DataElement>(key: K, direction?: boolean): void;
|
|
58
74
|
}
|
|
59
75
|
|
|
60
|
-
export declare type DataSelectorFn<R> = DataSelectorFnAdvanced<R> | DataSelectorFnShort;
|
|
61
|
-
|
|
62
|
-
export declare type DataSelectorFnAdvanced<R> = {
|
|
63
|
-
handle: (el: DataElement, state: StoreState, $preDefineResult?: R) => boolean;
|
|
64
|
-
$preDefine?: (state: StoreState) => R;
|
|
65
|
-
deps?: string[];
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
export declare type DataSelectorFnShort = (e: DataElement, state: StoreState) => boolean;
|
|
69
|
-
|
|
70
76
|
declare const DefaultScheme: [{
|
|
71
|
-
readonly title: "
|
|
77
|
+
readonly title: "Title Filter";
|
|
72
78
|
readonly collapsed: true;
|
|
73
79
|
readonly content: [{
|
|
74
80
|
readonly filterExclude: false;
|
|
@@ -87,6 +93,26 @@ declare const DefaultScheme: [{
|
|
|
87
93
|
readonly watch: "filterInclude";
|
|
88
94
|
readonly placeholder: "word, f:full_word, r:RegEx...";
|
|
89
95
|
}];
|
|
96
|
+
}, {
|
|
97
|
+
readonly title: "Uploader Filter";
|
|
98
|
+
readonly collapsed: true;
|
|
99
|
+
readonly content: [{
|
|
100
|
+
readonly filterUploaderExclude: false;
|
|
101
|
+
readonly label: "exclude";
|
|
102
|
+
}, {
|
|
103
|
+
readonly filterUploaderExcludeWords: "";
|
|
104
|
+
readonly label: "keywords";
|
|
105
|
+
readonly watch: "filterUploaderExclude";
|
|
106
|
+
readonly placeholder: "word, f:full_word, r:RegEx...";
|
|
107
|
+
}, {
|
|
108
|
+
readonly filterUploaderInclude: false;
|
|
109
|
+
readonly label: "include";
|
|
110
|
+
}, {
|
|
111
|
+
readonly filterUploaderIncludeWords: "";
|
|
112
|
+
readonly label: "keywords";
|
|
113
|
+
readonly watch: "filterUploaderInclude";
|
|
114
|
+
readonly placeholder: "word, f:full_word, r:RegEx...";
|
|
115
|
+
}];
|
|
90
116
|
}, {
|
|
91
117
|
readonly title: "Duration Filter";
|
|
92
118
|
readonly collapsed: true;
|
|
@@ -106,13 +132,27 @@ declare const DefaultScheme: [{
|
|
|
106
132
|
}];
|
|
107
133
|
}, {
|
|
108
134
|
readonly title: "Sort By";
|
|
135
|
+
readonly collapsed: true;
|
|
109
136
|
readonly content: [{
|
|
110
137
|
readonly 'sort by views': () => void;
|
|
111
138
|
}, {
|
|
112
139
|
readonly 'sort by duration': () => void;
|
|
113
140
|
}];
|
|
141
|
+
}, {
|
|
142
|
+
readonly title: "Sort By Duration";
|
|
143
|
+
readonly collapsed: true;
|
|
144
|
+
readonly content: [{
|
|
145
|
+
readonly 'sort by duration': () => void;
|
|
146
|
+
}];
|
|
147
|
+
}, {
|
|
148
|
+
readonly title: "Sort By Views";
|
|
149
|
+
readonly collapsed: true;
|
|
150
|
+
readonly content: [{
|
|
151
|
+
readonly 'sort by views': () => void;
|
|
152
|
+
}];
|
|
114
153
|
}, {
|
|
115
154
|
readonly title: "Privacy Filter";
|
|
155
|
+
readonly collapsed: true;
|
|
116
156
|
readonly content: [{
|
|
117
157
|
readonly filterPrivate: false;
|
|
118
158
|
readonly label: "private";
|
|
@@ -122,6 +162,15 @@ declare const DefaultScheme: [{
|
|
|
122
162
|
}, {
|
|
123
163
|
readonly 'check access \uD83D\uDD13': () => void;
|
|
124
164
|
}];
|
|
165
|
+
}, {
|
|
166
|
+
readonly title: "HD Filter";
|
|
167
|
+
readonly content: [{
|
|
168
|
+
readonly filterHD: false;
|
|
169
|
+
readonly label: "hd";
|
|
170
|
+
}, {
|
|
171
|
+
readonly filterNonHD: false;
|
|
172
|
+
readonly label: "non-hd";
|
|
173
|
+
}];
|
|
125
174
|
}, {
|
|
126
175
|
readonly title: "Advanced";
|
|
127
176
|
readonly collapsed: true;
|
|
@@ -137,6 +186,8 @@ declare const DefaultScheme: [{
|
|
|
137
186
|
}, {
|
|
138
187
|
readonly writeHistory: false;
|
|
139
188
|
readonly label: "write history";
|
|
189
|
+
}, {
|
|
190
|
+
readonly reset: () => void;
|
|
140
191
|
}];
|
|
141
192
|
}, {
|
|
142
193
|
readonly title: "Badge";
|
|
@@ -367,8 +418,9 @@ export declare class Rules {
|
|
|
367
418
|
paginationStrategyOptions: Partial<PaginationStrategy>;
|
|
368
419
|
paginationStrategy: PaginationStrategy;
|
|
369
420
|
dataManager: DataManager;
|
|
370
|
-
|
|
371
|
-
|
|
421
|
+
containerHomogenity: ConstructorParameters<typeof DataManager>[1];
|
|
422
|
+
customDataFilterFns: (Record<string, DataFilterFnFrom<any>> | string)[];
|
|
423
|
+
private hookDataFilterFns;
|
|
372
424
|
animatePreview?: (doc: HTMLElement) => void;
|
|
373
425
|
storeOptions?: JabroniTypes.StoreStateOptions;
|
|
374
426
|
schemeOptions: SchemeOptions;
|
|
@@ -394,7 +446,9 @@ export declare class Rules {
|
|
|
394
446
|
|
|
395
447
|
export declare function sanitizeStr(s: string): string;
|
|
396
448
|
|
|
397
|
-
declare type
|
|
449
|
+
declare type SchemeKeys = JabroniTypes.ExtractValuesByKey<typeof DefaultScheme, 'title'>;
|
|
450
|
+
|
|
451
|
+
declare type SchemeOptions = (Parameters<typeof setupScheme>[0][0] | SchemeKeys)[];
|
|
398
452
|
|
|
399
453
|
export declare function splitWith(s: string, c?: string): Array<string>;
|
|
400
454
|
|
|
@@ -404,15 +458,14 @@ export declare class ThumbDataParser {
|
|
|
404
458
|
strategy: 'manual' | 'auto-select' | 'auto-text';
|
|
405
459
|
selectors: ThumbDataSelectorsRaw;
|
|
406
460
|
callback?: ((thumb: HTMLElement, thumbData: ThumbData) => void) | undefined;
|
|
407
|
-
stringsMeltInTitle: boolean;
|
|
408
461
|
private autoParseText;
|
|
409
462
|
getUrl(thumb: HTMLElement | HTMLAnchorElement): string;
|
|
410
463
|
private preprocessCustomThumbDataSelectors;
|
|
411
464
|
private thumbDataSelectors;
|
|
412
465
|
private readonly defaultThumbDataSelectors;
|
|
413
466
|
private getThumbDataWith;
|
|
414
|
-
constructor(strategy?: 'manual' | 'auto-select' | 'auto-text', selectors?: ThumbDataSelectorsRaw, callback?: ((thumb: HTMLElement, thumbData: ThumbData) => void) | undefined
|
|
415
|
-
static create(o?: Partial<Pick<ThumbDataParser, 'strategy' | 'selectors' | 'callback'
|
|
467
|
+
constructor(strategy?: 'manual' | 'auto-select' | 'auto-text', selectors?: ThumbDataSelectorsRaw, callback?: ((thumb: HTMLElement, thumbData: ThumbData) => void) | undefined);
|
|
468
|
+
static create(o?: Partial<Pick<ThumbDataParser, 'strategy' | 'selectors' | 'callback'>>): ThumbDataParser;
|
|
416
469
|
getThumbData(thumb: HTMLElement): ThumbData;
|
|
417
470
|
}
|
|
418
471
|
|