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.
Files changed (56) hide show
  1. package/dist/core/pervertmonkey.core.es.d.ts +82 -29
  2. package/dist/core/pervertmonkey.core.es.js +233 -115
  3. package/dist/core/pervertmonkey.core.es.js.map +1 -1
  4. package/dist/core/pervertmonkey.core.umd.js +233 -115
  5. package/dist/core/pervertmonkey.core.umd.js.map +1 -1
  6. package/dist/userscripts/3hentai.user.js +4 -11
  7. package/dist/userscripts/camgirlfinder.user.js +2 -2
  8. package/dist/userscripts/camwhores.user.js +7 -16
  9. package/dist/userscripts/e-hentai.user.js +3 -4
  10. package/dist/userscripts/ebalka.user.js +13 -5
  11. package/dist/userscripts/eporner.user.js +21 -41
  12. package/dist/userscripts/erome.user.js +9 -8
  13. package/dist/userscripts/eroprofile.user.js +5 -14
  14. package/dist/userscripts/javhdporn.user.js +6 -5
  15. package/dist/userscripts/missav.user.js +10 -4
  16. package/dist/userscripts/motherless.user.js +12 -5
  17. package/dist/userscripts/namethatporn.user.js +8 -14
  18. package/dist/userscripts/nhentai.user.js +5 -13
  19. package/dist/userscripts/obmenvsem.user.js +10 -4
  20. package/dist/userscripts/pornhub.user.js +14 -6
  21. package/dist/userscripts/spankbang.user.js +28 -7
  22. package/dist/userscripts/thisvid.user.js +12 -30
  23. package/dist/userscripts/xhamster.user.js +9 -14
  24. package/dist/userscripts/xvideos.user.js +33 -5
  25. package/package.json +1 -1
  26. package/src/core/data-handler/data-filter-fn-defaults.ts +52 -0
  27. package/src/core/data-handler/data-filter-fn.ts +60 -0
  28. package/src/core/data-handler/data-filter.ts +22 -96
  29. package/src/core/data-handler/data-manager.ts +75 -26
  30. package/src/core/jabroni-config/default-scheme.ts +54 -5
  31. package/src/core/jabroni-config/index.ts +1 -0
  32. package/src/core/jabroni-config/jabroni-gui-controller.ts +1 -1
  33. package/src/core/jabroni-config/scheme-selectors-mapping.ts +12 -0
  34. package/src/core/parsers/thumb-data-parser.ts +4 -15
  35. package/src/core/rules/index.ts +15 -9
  36. package/src/userscripts/index.ts +1 -1
  37. package/src/userscripts/scripts/3hentai.ts +3 -6
  38. package/src/userscripts/scripts/camgirlfinder.ts +1 -1
  39. package/src/userscripts/scripts/camwhores.ts +5 -14
  40. package/src/userscripts/scripts/e-hentai.ts +4 -6
  41. package/src/userscripts/scripts/ebalka.ts +11 -3
  42. package/src/userscripts/scripts/eporner.ts +20 -39
  43. package/src/userscripts/scripts/erome.ts +9 -7
  44. package/src/userscripts/scripts/eroprofile.ts +4 -12
  45. package/src/userscripts/scripts/javhdporn.ts +7 -8
  46. package/src/userscripts/scripts/missav.ts +10 -4
  47. package/src/userscripts/scripts/motherless.ts +11 -6
  48. package/src/userscripts/scripts/namethatporn.ts +8 -15
  49. package/src/userscripts/scripts/nhentai.ts +6 -13
  50. package/src/userscripts/scripts/obmenvsem.ts +9 -3
  51. package/src/userscripts/scripts/pornhub.ts +13 -4
  52. package/src/userscripts/scripts/spankbang.ts +29 -5
  53. package/src/userscripts/scripts/thisvid.ts +14 -29
  54. package/src/userscripts/scripts/xhamster.ts +9 -14
  55. package/src/userscripts/scripts/xvideos.ts +32 -3
  56. 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 = Record<string, string | number | boolean | HTMLElement>;
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, () => DataFilterFn>;
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
- customDataSelectorFns: Record<string, DataSelectorFn<any>>;
30
- registerFilters(customFilters: (Record<string, DataSelectorFn<any>> | string)[]): void;
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
- }): (() => DataFilterFn)[];
37
- static customDataSelectorFnsDefault: Record<string, DataSelectorFn<any>>;
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
- export declare type DataFilterFn = (v: DataElement) => DataFilterResult;
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 interface DataFilterResult {
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 parentHomogenity?;
65
+ private containerHomogenity?;
50
66
  data: Map<string, DataElement>;
51
67
  private lazyImgLoader;
52
68
  dataFilter: DataFilter;
53
- constructor(rules: Rules, parentHomogenity?: Parameters<typeof checkHomogenity>[2] | undefined);
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: "Text Filter";
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
- dataHomogenity: ConstructorParameters<typeof DataManager>[1];
371
- customDataSelectorFns: (Record<string, DataSelectorFn<any>> | string)[];
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 SchemeOptions = (Parameters<typeof setupScheme>[0][0] | JabroniTypes.ExtractValuesByKey<typeof DefaultScheme, 'title'>)[];
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, stringsMeltInTitle?: boolean);
415
- static create(o?: Partial<Pick<ThumbDataParser, 'strategy' | 'selectors' | 'callback' | 'stringsMeltInTitle'>>): ThumbDataParser;
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