pervert-monkey 1.0.10 → 1.0.12

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 (58) hide show
  1. package/README.md +22 -11
  2. package/dist/core/pervertmonkey.core.es.d.ts +31 -19
  3. package/dist/core/pervertmonkey.core.es.js +752 -120
  4. package/dist/core/pervertmonkey.core.es.js.map +1 -1
  5. package/dist/core/pervertmonkey.core.umd.js +752 -120
  6. package/dist/core/pervertmonkey.core.umd.js.map +1 -1
  7. package/dist/userscripts/3hentai.user.js +19 -26
  8. package/dist/userscripts/camgirlfinder.user.js +2 -2
  9. package/dist/userscripts/camwhores.user.js +12 -16
  10. package/dist/userscripts/e-hentai.user.js +3 -4
  11. package/dist/userscripts/ebalka.user.js +6 -11
  12. package/dist/userscripts/eporner.user.js +11 -16
  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 +19 -40
  18. package/dist/userscripts/namethatporn.user.js +5 -4
  19. package/dist/userscripts/nhentai.user.js +3 -3
  20. package/dist/userscripts/obmenvsem.user.js +18 -4
  21. package/dist/userscripts/pornhub.user.js +9 -12
  22. package/dist/userscripts/spankbang.user.js +6 -38
  23. package/dist/userscripts/thisvid.user.js +20 -22
  24. package/dist/userscripts/xhamster.user.js +20 -16
  25. package/dist/userscripts/xvideos.user.js +7 -12
  26. package/package.json +2 -1
  27. package/src/core/data-handler/data-manager.ts +4 -4
  28. package/src/core/infinite-scroll/index.ts +9 -9
  29. package/src/core/jabroni-config/index.ts +3 -2
  30. package/src/core/jabroni-config/jabroni-gui-controller.ts +60 -0
  31. package/src/core/parsers/thumb-data-parser.ts +36 -13
  32. package/src/core/parsers/thumb-img-parser.ts +49 -46
  33. package/src/core/rules/index.ts +12 -39
  34. package/src/userscripts/index.ts +1 -1
  35. package/src/userscripts/scripts/3hentai.ts +21 -25
  36. package/src/userscripts/scripts/camgirlfinder.ts +1 -1
  37. package/src/userscripts/scripts/camwhores.ts +10 -18
  38. package/src/userscripts/scripts/e-hentai.ts +1 -2
  39. package/src/userscripts/scripts/ebalka.ts +7 -12
  40. package/src/userscripts/scripts/eporner.ts +10 -16
  41. package/src/userscripts/scripts/erome.ts +1 -1
  42. package/src/userscripts/scripts/eroprofile.ts +1 -1
  43. package/src/userscripts/scripts/javhdporn.ts +1 -1
  44. package/src/userscripts/scripts/missav.ts +1 -1
  45. package/src/userscripts/scripts/motherless.ts +19 -49
  46. package/src/userscripts/scripts/namethatporn.ts +7 -6
  47. package/src/userscripts/scripts/nhentai.ts +2 -2
  48. package/src/userscripts/scripts/obmenvsem.ts +19 -4
  49. package/src/userscripts/scripts/pornhub.ts +10 -14
  50. package/src/userscripts/scripts/spankbang.ts +2 -38
  51. package/src/userscripts/scripts/thisvid.ts +26 -26
  52. package/src/userscripts/scripts/xhamster.ts +20 -23
  53. package/src/userscripts/scripts/xvideos.ts +8 -13
  54. package/src/utils/dom/index.ts +10 -0
  55. package/src/utils/events/on-hover.ts +17 -25
  56. package/src/utils/events/tick.ts +1 -3
  57. package/src/utils/observers/index.ts +8 -4
  58. package/src/utils/parsers/time-parser.ts +2 -2
package/README.md CHANGED
@@ -1,12 +1,14 @@
1
- # PervertMonkey
1
+ <h1 align="center">PervertMonkey</h1>
2
2
 
3
- <img alt="Static Badge" src="https://img.shields.io/badge/Tampermonkey-OK-aliceblue?labelColor=lightblue"> <img alt="Static Badge" src="https://img.shields.io/badge/Violentmonkey-OK-slategray?labelColor=skyblue">
3
+ <p align="center"><img alt="Static Badge" src="https://img.shields.io/badge/Tampermonkey-OK-aliceblue?labelColor=lightblue"> <img alt="Static Badge" src="https://img.shields.io/badge/Violentmonkey-OK-slategray?labelColor=skyblue">
4
+ </p>
4
5
 
5
- ```install scripts:``` https://sleazyfork.org/en/scripts?set=590816
6
+ <p align="center"><code>install scripts:</code> https://sleazyfork.org/en/scripts?set=590816</p>
6
7
 
7
8
  ## Userscripts
8
9
  ```shell
9
- src/userscripts/scripts
10
+ src/userscripts/scripts # dev
11
+ dist/userscripts # build
10
12
  ```
11
13
 
12
14
  ## Build
@@ -22,21 +24,30 @@ npm run dev
22
24
  ```
23
25
 
24
26
  ## How it works
27
+ <p align="center"><img src="https://i.makeagif.com/media/5-30-2015/-SdGmN.gif"></p>
28
+
25
29
  #### So... Listen to this!
26
- If you are lucky, you can build your own userscript with infinite scroller and content filters with just this setup:
30
+ If you are lucky monkey, you can build your own userscript with infinite scroller and content filters with just this setup:
27
31
 
28
32
  ```typescript
29
33
  // replace with selectors of your own
30
- const rules = new RulesGlobal({
31
- containerSelector: 'div:has(> article)',
32
- thumbsSelector: 'article.thumb-block',
33
- titleSelector: 'header.entry-header',
34
- durationSelector: '.duration',
34
+ const rules = new Rules({
35
+ containerSelector: '.content',
36
+ thumbs: {
37
+ selector: '.thumb',
38
+ },
39
+ thumb: {
40
+ selectors: {
41
+ title: '.title',
42
+ duration: '.duration'
43
+ },
44
+ },
35
45
  schemeOptions: ['Text Filter', 'Badge', 'Duration Filter', 'Advanced'],
36
46
  });
37
47
  ```
38
48
 
39
- Use `RulesGlobal` from `src/core/rules` as documentation.
49
+ > [!TIP]
50
+ > Use `Rules` from `src/core/rules` as documentation
40
51
 
41
52
  _see you space cowboy 😘_
42
53
 
@@ -46,11 +46,11 @@ declare interface DataFilterResult {
46
46
 
47
47
  export declare class DataManager {
48
48
  private rules;
49
- private parseDataParentHomogenity?;
49
+ private parentHomogenity?;
50
50
  data: Map<string, DataElement>;
51
51
  private lazyImgLoader;
52
52
  dataFilter: DataFilter;
53
- constructor(rules: Rules, parseDataParentHomogenity?: Parameters<typeof checkHomogenity>[2] | undefined);
53
+ constructor(rules: Rules, parentHomogenity?: Parameters<typeof checkHomogenity>[2] | undefined);
54
54
  applyFilters: (filters?: Record<string, boolean>, offset?: number) => Promise<void>;
55
55
  filterAll: (offset?: number) => Promise<void>;
56
56
  parseData: (html: HTMLElement, container?: HTMLElement, removeDuplicates?: boolean, shouldLazify?: boolean) => void;
@@ -213,6 +213,18 @@ declare type IScrollerSubject = {
213
213
  page: HTMLElement;
214
214
  };
215
215
 
216
+ declare class JabronioGuiController {
217
+ private store;
218
+ private dataManager;
219
+ constructor(store: JabronioStore, dataManager: DataManager);
220
+ private readonly destroy$;
221
+ dispose(): void;
222
+ private directionalEventObservable$?;
223
+ private directionalEvent;
224
+ private readonly eventsMap;
225
+ private setupStoreListeners;
226
+ }
227
+
216
228
  export declare class LazyImgLoader {
217
229
  lazyImgObserver: Observer;
218
230
  private attributeName;
@@ -250,18 +262,13 @@ export declare type OffsetGenerator<T = GeneratorResult> = Generator<T> | AsyncG
250
262
 
251
263
  export declare class OnHover {
252
264
  private container;
253
- private subjectSelector;
265
+ private targetSelector;
254
266
  private onOver;
255
- private onLeave?;
256
- private handleLeaveEvent;
257
- private handleEvent;
258
- private target;
259
- private leaveSubject;
260
- private onOverFinally;
261
- constructor(container: HTMLElement, subjectSelector: (target: HTMLElement) => boolean, onOver: (target: HTMLElement) => void | {
262
- onOverCallback?: () => void;
263
- leaveTarget?: HTMLElement;
264
- }, onLeave?: ((target: HTMLElement) => void) | undefined);
267
+ private handleLeave;
268
+ private handleHover;
269
+ private target?;
270
+ private onOverCallback?;
271
+ constructor(container: HTMLElement, targetSelector: string, onOver: (target: HTMLElement) => void | (() => void));
265
272
  static create(...args: ConstructorParameters<typeof OnHover>): OnHover;
266
273
  }
267
274
 
@@ -343,7 +350,6 @@ export declare function removeClassesAndDataAttributes(element: HTMLElement, key
343
350
  export declare function replaceElementTag(e: HTMLElement, tagName: string): HTMLElement;
344
351
 
345
352
  export declare class Rules {
346
- getThumbUrl(thumb: HTMLElement | HTMLAnchorElement): string;
347
353
  thumb: Parameters<typeof ThumbDataParser.create>[0];
348
354
  thumbDataParser: ThumbDataParser;
349
355
  thumbImg: Parameters<typeof ThumbImgParser.create>[0];
@@ -366,6 +372,7 @@ export declare class Rules {
366
372
  schemeOptions: SchemeOptions;
367
373
  store: JabronioStore;
368
374
  gui: JabronioGUI;
375
+ inputController: JabronioGuiController;
369
376
  private createStore;
370
377
  private createGui;
371
378
  customGenerator?: OffsetGenerator;
@@ -375,7 +382,6 @@ export declare class Rules {
375
382
  gropeStrategy: 'all-in-one' | 'all-in-all';
376
383
  gropeInit(): void;
377
384
  get isEmbedded(): boolean;
378
- private setupStoreListeners;
379
385
  private mutationObservers;
380
386
  resetOnPaginationOrContainerDeath: boolean;
381
387
  private resetOn;
@@ -398,6 +404,7 @@ export declare class ThumbDataParser {
398
404
  callback?: ((thumb: HTMLElement, thumbData: ThumbData) => void) | undefined;
399
405
  stringsMeltInTitle: boolean;
400
406
  private autoParseText;
407
+ getUrl(thumb: HTMLElement | HTMLAnchorElement): string;
401
408
  private preprocessCustomThumbDataSelectors;
402
409
  private thumbDataSelectors;
403
410
  private readonly defaultThumbDataSelectors;
@@ -417,12 +424,17 @@ declare type ThumbDataSelectorsRaw = Record<string, string | Pick<ThumbDataSelec
417
424
 
418
425
  export declare class ThumbImgParser {
419
426
  selector?: string | string[] | ((img: HTMLImageElement) => string);
420
- shouldDelete?: 'auto' | string;
427
+ remove?: 'auto' | string;
421
428
  strategy: 'default' | 'auto';
422
- static create(options?: Partial<Pick<ThumbImgParser, 'selector' | 'shouldDelete' | 'strategy' | 'getImgData'>>): ThumbImgParser & Partial<Pick<ThumbImgParser, "selector" | "strategy" | "shouldDelete" | "getImgData">>;
429
+ static create(options?: Partial<Pick<ThumbImgParser, 'selector' | 'remove' | 'strategy' | 'getImgData'>>): ThumbImgParser & Partial<Pick<ThumbImgParser, "selector" | "strategy" | "remove" | "getImgData">>;
430
+ private removeAttrs;
431
+ private getImgSrc;
423
432
  getImgData(thumb: HTMLElement): {
424
- img?: HTMLImageElement;
425
- imgSrc?: string;
433
+ img?: undefined;
434
+ imgSrc?: undefined;
435
+ } | {
436
+ img: HTMLImageElement;
437
+ imgSrc: string;
426
438
  };
427
439
  }
428
440