pervert-monkey 1.0.25 → 1.0.27

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 (62) hide show
  1. package/README.md +5 -2
  2. package/dist/core/pervertmonkey.core.es.d.ts +2 -541
  3. package/dist/core/pervertmonkey.core.es.js +8005 -9281
  4. package/dist/core/pervertmonkey.core.es.js.map +1 -1
  5. package/dist/core/pervertmonkey.core.umd.js +8833 -10051
  6. package/dist/core/pervertmonkey.core.umd.js.map +1 -1
  7. package/dist/userscripts/3hentai.user.js +40 -46
  8. package/dist/userscripts/camgirlfinder.user.js +56 -49
  9. package/dist/userscripts/camwhores.user.js +286 -343
  10. package/dist/userscripts/e-hentai.user.js +54 -57
  11. package/dist/userscripts/ebalka.user.js +52 -55
  12. package/dist/userscripts/eporner.user.js +76 -68
  13. package/dist/userscripts/erome.user.js +79 -84
  14. package/dist/userscripts/eroprofile.user.js +28 -29
  15. package/dist/userscripts/javhdporn.user.js +28 -22
  16. package/dist/userscripts/missav.user.js +22 -23
  17. package/dist/userscripts/motherless.user.js +141 -152
  18. package/dist/userscripts/namethatporn.user.js +49 -58
  19. package/dist/userscripts/nhentai.user.js +104 -99
  20. package/dist/userscripts/obmenvsem.user.js +61 -69
  21. package/dist/userscripts/pornhub.user.js +50 -47
  22. package/dist/userscripts/simpcity.user.js +82 -24
  23. package/dist/userscripts/socialmediagirls.user.js +26 -22
  24. package/dist/userscripts/spankbang.user.js +62 -44
  25. package/dist/userscripts/thisvid.user.js +1269 -1366
  26. package/dist/userscripts/xhamster.user.js +119 -132
  27. package/dist/userscripts/xmegadrive.user.js +82 -0
  28. package/dist/userscripts/xvideos.user.js +115 -91
  29. package/package.json +10 -6
  30. package/src/core/data-handler/data-filter.ts +3 -3
  31. package/src/core/data-handler/data-manager.ts +11 -3
  32. package/src/core/parsers/pagination-parser/index.ts +0 -4
  33. package/src/core/parsers/pagination-parser/pagination-strategies/PaginationStrategyPathnameParams.ts +36 -1
  34. package/src/core/rules/index.ts +3 -3
  35. package/src/userscripts/index.ts +1 -1
  36. package/src/userscripts/meta.json +1 -1
  37. package/src/userscripts/scripts/3hentai.ts +1 -1
  38. package/src/userscripts/scripts/camgirlfinder.ts +1 -1
  39. package/src/userscripts/scripts/camwhores.ts +2 -2
  40. package/src/userscripts/scripts/e-hentai.ts +1 -1
  41. package/src/userscripts/scripts/ebalka.ts +2 -2
  42. package/src/userscripts/scripts/eporner.ts +41 -15
  43. package/src/userscripts/scripts/erome.ts +1 -1
  44. package/src/userscripts/scripts/eroprofile.ts +6 -6
  45. package/src/userscripts/scripts/javhdporn.ts +1 -1
  46. package/src/userscripts/scripts/missav.ts +1 -1
  47. package/src/userscripts/scripts/motherless.ts +28 -19
  48. package/src/userscripts/scripts/namethatporn.ts +1 -1
  49. package/src/userscripts/scripts/nhentai.ts +1 -1
  50. package/src/userscripts/scripts/obmenvsem.ts +1 -1
  51. package/src/userscripts/scripts/pornhub.ts +4 -2
  52. package/src/userscripts/scripts/simpcity.ts +72 -5
  53. package/src/userscripts/scripts/{socialmediagirls copy.ts → socialmediagirls.ts} +1 -1
  54. package/src/userscripts/scripts/spankbang.ts +20 -4
  55. package/src/userscripts/scripts/thisvid.ts +8 -21
  56. package/src/userscripts/scripts/xhamster.ts +12 -4
  57. package/src/userscripts/scripts/xmegadrive.ts +78 -0
  58. package/src/userscripts/scripts/xvideos.ts +26 -7
  59. package/src/utils/fetch/index.ts +2 -0
  60. package/src/utils/objects/memoize.ts +1 -9
  61. package/dist/test/test.user.js +0 -10301
  62. package/dist/userscripts/socialmediagirls copy.user.js +0 -41
package/README.md CHANGED
@@ -1,12 +1,15 @@
1
1
  <h1 align="center">PervertMonkey</h1>
2
2
 
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">
3
+ <p align="center">
4
+ <img alt="Static Badge" src="https://img.shields.io/badge/Tampermonkey-OK-aliceblue?labelColor=lightblue">
5
+ <img alt="Static Badge" src="https://img.shields.io/badge/Violentmonkey-OK-slategray?labelColor=skyblue">
6
+ <a href="https://deepwiki.com/smartacephale/sleazy-fork"><img src="https://deepwiki.com/badge.svg" alt="Ask DeepWiki"></a>
4
7
  </p>
5
8
 
6
9
  <p align="center"><code>install scripts:</code> https://sleazyfork.org/en/scripts?set=590816</p>
7
10
 
8
11
  ## Userscripts
9
- ```shell
12
+ ```shell<a href="https://deepwiki.com/smartacephale/sleazy-fork"><img src="https://deepwiki.com/badge.svg" alt="Ask DeepWiki"></a>
10
13
  src/userscripts/scripts # dev
11
14
  dist/userscripts # build
12
15
  ```
@@ -1,541 +1,2 @@
1
- import { JabronioGUI } from 'jabroni-outfit';
2
- import { JabronioStore } from 'jabroni-outfit';
3
- import { JabroniTypes } from 'jabroni-outfit';
4
- import { setupScheme } from 'jabroni-outfit';
5
- import { StoreState } from 'jabroni-outfit';
6
- import { Subject } from 'rxjs';
7
-
8
- declare type AnyFunction = (...args: any[]) => any;
9
-
10
- export declare function areElementsAlike<T extends HTMLElement>(a: T, b: T, options: {
11
- id?: boolean;
12
- className?: boolean;
13
- }): boolean;
14
-
15
- export declare function chunks<T>(arr: T[], size: number): T[][];
16
-
17
- export declare function circularShift(n: number, c?: number, s?: number): number;
18
-
19
- export declare function containMutation(container: HTMLElement, mutation: () => void): Promise<void>;
20
-
21
- export declare function copyAttributes<T extends Element = HTMLElement>(target: T, source: T): void;
22
-
23
- export declare type DataElement = {
24
- element: HTMLElement;
25
- [key: string]: HTMLElement | string | number | boolean;
26
- };
27
-
28
- export declare class DataFilter {
29
- private rules;
30
- filters: Map<string, () => DataFilterFnRendered>;
31
- filterDepsMapping: Record<string, string>;
32
- constructor(rules: Rules);
33
- static isFiltered(e: HTMLElement): boolean;
34
- createCssFilters(wrapper?: (cssRule: string) => string): void;
35
- customDataFilterFns: Record<string, DataFilterFnFrom<any>>;
36
- registerFilters(customFilters: (Record<string, DataFilterFnFrom<any>> | string)[]): void;
37
- registerFilter(customSelectorName: string): void;
38
- selectFilters(filters: {
39
- [key: string]: boolean;
40
- }): (() => DataFilterFnRendered)[];
41
- }
42
-
43
- declare class DataFilterFn<R> {
44
- handle: DataFilterFnHandle<R>;
45
- deps: string[];
46
- name: string;
47
- $preDefine?: ((state: StoreState) => R) | undefined;
48
- static prefix: string;
49
- static setPrefix(name: string): string;
50
- constructor(handle: DataFilterFnHandle<R>, deps: string[] | undefined, name: string, $preDefine?: ((state: StoreState) => R) | undefined);
51
- static from<R>(options: DataFilterFnFrom<R>, name: string): DataFilterFn<R>;
52
- renderFn(state: StoreState): () => DataFilterFnRendered;
53
- }
54
-
55
- declare type DataFilterFnFrom<R> = Partial<DataFilterFn<R>> | DataFilterFnHandle<R>;
56
-
57
- declare type DataFilterFnHandle<R> = (el: DataElement, state: StoreState, $preDefineResult?: R) => boolean;
58
-
59
- declare type DataFilterFnRendered = (v: DataElement) => DataFilterFnRenderedResult;
60
-
61
- declare type DataFilterFnRenderedResult = {
62
- name: string;
63
- condition: boolean;
64
- };
65
-
66
- export declare class DataManager {
67
- private rules;
68
- private containerHomogenity?;
69
- data: Map<string, DataElement>;
70
- private lazyImgLoader;
71
- dataFilter: DataFilter;
72
- constructor(rules: Rules, containerHomogenity?: Parameters<typeof areElementsAlike>[2] | undefined);
73
- applyFilters(filters?: Record<string, boolean>, offset?: number): Promise<void>;
74
- filterAll(offset?: number): Promise<void>;
75
- parseData(html: HTMLElement, container?: HTMLElement, removeDuplicates?: boolean, shouldLazify?: boolean): Promise<void>;
76
- private optimize;
77
- sortBy<K extends keyof DataElement>(key: K, direction?: boolean): Promise<void>;
78
- }
79
-
80
- declare const DefaultScheme: [{
81
- readonly title: "Title Filter";
82
- readonly collapsed: true;
83
- readonly content: [{
84
- readonly filterExclude: false;
85
- readonly label: "exclude";
86
- }, {
87
- readonly filterExcludeWords: "";
88
- readonly label: "keywords";
89
- readonly watch: "filterExclude";
90
- readonly placeholder: "word, f:full_word, r:RegEx...";
91
- }, {
92
- readonly filterInclude: false;
93
- readonly label: "include";
94
- }, {
95
- readonly filterIncludeWords: "";
96
- readonly label: "keywords";
97
- readonly watch: "filterInclude";
98
- readonly placeholder: "word, f:full_word, r:RegEx...";
99
- }];
100
- }, {
101
- readonly title: "Uploader Filter";
102
- readonly collapsed: true;
103
- readonly content: [{
104
- readonly filterUploaderExclude: false;
105
- readonly label: "exclude";
106
- }, {
107
- readonly filterUploaderExcludeWords: "";
108
- readonly label: "keywords";
109
- readonly watch: "filterUploaderExclude";
110
- readonly placeholder: "word, f:full_word, r:RegEx...";
111
- }, {
112
- readonly filterUploaderInclude: false;
113
- readonly label: "include";
114
- }, {
115
- readonly filterUploaderIncludeWords: "";
116
- readonly label: "keywords";
117
- readonly watch: "filterUploaderInclude";
118
- readonly placeholder: "word, f:full_word, r:RegEx...";
119
- }];
120
- }, {
121
- readonly title: "Duration Filter";
122
- readonly collapsed: true;
123
- readonly content: [{
124
- readonly filterDuration: false;
125
- readonly label: "enable";
126
- }, {
127
- readonly filterDurationFrom: 0;
128
- readonly watch: "filterDuration";
129
- readonly label: "from";
130
- readonly type: "time";
131
- }, {
132
- readonly filterDurationTo: 600;
133
- readonly watch: "filterDuration";
134
- readonly label: "to";
135
- readonly type: "time";
136
- }];
137
- }, {
138
- readonly title: "Sort By";
139
- readonly collapsed: true;
140
- readonly content: [{
141
- readonly 'sort by views': () => void;
142
- }, {
143
- readonly 'sort by duration': () => void;
144
- }];
145
- }, {
146
- readonly title: "Sort By Duration";
147
- readonly collapsed: true;
148
- readonly content: [{
149
- readonly 'sort by duration': () => void;
150
- }];
151
- }, {
152
- readonly title: "Sort By Views";
153
- readonly collapsed: true;
154
- readonly content: [{
155
- readonly 'sort by views': () => void;
156
- }];
157
- }, {
158
- readonly title: "Privacy Filter";
159
- readonly collapsed: true;
160
- readonly content: [{
161
- readonly filterPrivate: false;
162
- readonly label: "private";
163
- }, {
164
- readonly filterPublic: false;
165
- readonly label: "public";
166
- }, {
167
- readonly 'check access \uD83D\uDD13': () => void;
168
- }];
169
- }, {
170
- readonly title: "HD Filter";
171
- readonly content: [{
172
- readonly filterHD: false;
173
- readonly label: "hd";
174
- }, {
175
- readonly filterNonHD: false;
176
- readonly label: "non-hd";
177
- }];
178
- }, {
179
- readonly title: "Advanced";
180
- readonly collapsed: true;
181
- readonly content: [{
182
- readonly infiniteScrollEnabled: true;
183
- readonly label: "infinite scroll";
184
- }, {
185
- readonly autoScroll: false;
186
- readonly label: "auto scroll";
187
- }, {
188
- readonly delay: 250;
189
- readonly label: "scroll delay";
190
- }, {
191
- readonly writeHistory: false;
192
- readonly label: "write history";
193
- }, {
194
- readonly reset: () => void;
195
- }];
196
- }, {
197
- readonly title: "Badge";
198
- readonly content: [{
199
- readonly text: "return `${state.$paginationOffset}/${state.$paginationLast}`";
200
- readonly vif: "return state.$paginationLast > 1";
201
- }];
202
- }];
203
-
204
- export declare function downloader(options: {
205
- append?: string;
206
- after?: string;
207
- buttonHtml: string;
208
- doBefore?: () => void;
209
- }): void;
210
-
211
- export declare function exterminateVideo(video: HTMLVideoElement): void;
212
-
213
- export declare const fetchHtml: (input: RequestInfo | URL) => Promise<HTMLElement>;
214
-
215
- export declare const fetchJson: (input: RequestInfo | URL) => Promise<JSON>;
216
-
217
- export declare const fetchText: (input: RequestInfo | URL) => Promise<string>;
218
-
219
- export declare function fetchWith<T extends JSON | string | HTMLElement>(input: RequestInfo | URL, options: {
220
- init?: RequestInit;
221
- type: 'json' | 'html' | 'text';
222
- mobile?: boolean;
223
- }): Promise<T>;
224
-
225
- export declare function findNextSibling<T extends Element = HTMLElement>(e: T): Element | null;
226
-
227
- /**
228
- * Converts a duration string (e.g., "1h 22min 3sec") to HH:MM:SS format.
229
- * @param timeStr - The duration string to format.
230
- * @returns A string in the format HH:MM:SS.
231
- */
232
- export declare function formatTimeToHHMMSS(timeStr: string): string;
233
-
234
- declare type GeneratorResult = {
235
- url: string;
236
- offset: number;
237
- };
238
-
239
- export declare function getCommonParents<T extends HTMLElement>(elements: Iterable<T>): HTMLElement[];
240
-
241
- export declare function getPaginationStrategy(options: Partial<PaginationStrategy>): PaginationStrategy;
242
-
243
- export declare class InfiniteScroller {
244
- paginationOffset: number;
245
- rules: Rules;
246
- private observer?;
247
- private paginationGenerator;
248
- constructor(options: InfiniteScrollerOptions);
249
- dispose(): void;
250
- setObserver(observable: HTMLElement): this;
251
- subject: Subject<IScrollerSubject>;
252
- private setAutoScroll;
253
- generatorConsumer: () => Promise<boolean>;
254
- private getPaginationData;
255
- doScroll(url: string, offset: number): Promise<void>;
256
- static generatorForPaginationStrategy(pstrategy: PaginationStrategy): OffsetGenerator;
257
- static create(rules: Rules): InfiniteScroller;
258
- }
259
-
260
- declare type InfiniteScrollerOptions = Pick<InfiniteScroller, 'rules'> & Partial<InfiniteScroller>;
261
-
262
- export declare function instantiateTemplate(sourceSelector: string, attributeUpdates: Record<string, string>, contentUpdates: Record<string, string>): string;
263
-
264
- export declare function irange(start?: number, step?: number): Generator<number, void, unknown>;
265
-
266
- declare type IScrollerSubject = {
267
- type: 'scroll';
268
- scroller: InfiniteScroller;
269
- page: HTMLElement;
270
- };
271
-
272
- declare class JabronioGuiController {
273
- private store;
274
- private dataManager;
275
- constructor(store: JabronioStore, dataManager: DataManager);
276
- private readonly destroy$;
277
- dispose(): void;
278
- private directionalEventObservable$?;
279
- private directionalEvent;
280
- private readonly eventsMap;
281
- private setupStoreListeners;
282
- }
283
-
284
- export declare class LazyImgLoader<T extends Element = HTMLElement> {
285
- private attributeName;
286
- private lazyImgObserver;
287
- constructor(shouldDelazify: (target: T) => boolean, attributeName?: string);
288
- lazify(img?: HTMLImageElement, imgSrc?: string): void;
289
- private unlazify;
290
- }
291
-
292
- export declare function memoize<T extends AnyFunction>(fn: T): MemoizedFunction<T>;
293
-
294
- declare interface MemoizedFunction<T extends AnyFunction> extends CallableFunction {
295
- (...args: Parameters<T>): ReturnType<T>;
296
- clear: () => void;
297
- }
298
-
299
- export declare const MOBILE_UA: {
300
- readonly 'User-Agent': string;
301
- };
302
-
303
- export declare function objectToFormData<T extends {}>(obj: T): FormData;
304
-
305
- export declare class Observer<T extends Element = HTMLElement> {
306
- private callback;
307
- private timeout?;
308
- private observer;
309
- constructor(callback: (entry: T) => void);
310
- observe(target: T): void;
311
- unobserve(target: T): void;
312
- private throttle;
313
- private handleIntersection;
314
- dispose(): void;
315
- static observeWhile<T extends Element = HTMLElement>(target: T, callback: () => Promise<boolean> | boolean, throttleTime: number): Observer<T>;
316
- }
317
-
318
- export declare type OffsetGenerator<T = GeneratorResult> = Generator<T> | AsyncGenerator<T>;
319
-
320
- export declare class OnHover {
321
- private container;
322
- private targetSelector;
323
- private onOver;
324
- private handleLeave;
325
- private handleHover;
326
- private target?;
327
- private onOverCallback?;
328
- constructor(container: HTMLElement, targetSelector: string, onOver: (target: HTMLElement) => void | (() => void));
329
- static create(...args: ConstructorParameters<typeof OnHover>): OnHover;
330
- }
331
-
332
- export declare class PaginationStrategy {
333
- doc: Document;
334
- url: URL;
335
- paginationSelector: string;
336
- searchParamSelector: string;
337
- static _pathnameSelector: RegExp;
338
- pathnameSelector: RegExp;
339
- dataparamSelector: string;
340
- overwritePaginationLast?: (n: number, offset?: number) => number;
341
- offsetMin: number;
342
- constructor(options?: Partial<PaginationStrategy>);
343
- getPaginationElement(): HTMLElement | null;
344
- get hasPagination(): boolean;
345
- getPaginationOffset(): number;
346
- getPaginationLast(): number;
347
- getPaginationUrlGenerator(): (offset: number) => string | Promise<string>;
348
- }
349
-
350
- export declare class PaginationStrategyDataParams extends PaginationStrategy {
351
- getPaginationLast(): number;
352
- getPaginationOffset(): number;
353
- getPaginationUrlGenerator(): (n: number) => string;
354
- static testLinks(doc?: HTMLElement | Document): boolean;
355
- }
356
-
357
- export declare class PaginationStrategyPathnameParams extends PaginationStrategy {
358
- extractPage: (a: HTMLAnchorElement | Location | string) => number;
359
- static checkLink(link: URL, pathnameSelector?: RegExp): boolean;
360
- static testLinks(links: URL[], options: Partial<PaginationStrategy>): boolean;
361
- getPaginationLast(): number;
362
- getPaginationOffset(): number;
363
- getPaginationUrlGenerator(url_?: URL): (offset: number) => string;
364
- }
365
-
366
- export declare class PaginationStrategySearchParams extends PaginationStrategy {
367
- extractPage: (a: HTMLAnchorElement | Location | URL | string) => number;
368
- getPaginationLast(): number;
369
- getPaginationOffset(): number;
370
- getPaginationUrlGenerator(): (offset: number) => string;
371
- static checkLink(link: URL, searchParamSelector?: string): boolean;
372
- static testLinks(links: URL[], searchParamSelector?: string): boolean;
373
- }
374
-
375
- export declare function parseCssUrl(s: string): string;
376
-
377
- export declare function parseDataParams(str: string): Record<string, string>;
378
-
379
- export declare function parseHtml(html: string): HTMLElement;
380
-
381
- export declare function parseIntegerOr(n: string | number, or: number): number;
382
-
383
- export declare function parseNumericAbbreviation(str: string): number;
384
-
385
- export declare function parseUrl(s: HTMLAnchorElement | Location | URL | string): URL;
386
-
387
- declare type Primitive = string | number | boolean;
388
-
389
- export declare function querySelectorLast<T extends Element = HTMLElement>(root: ParentNode | undefined, selector: string): T | undefined;
390
-
391
- export declare function querySelectorLastNumber(selector: string, e?: ParentNode): number;
392
-
393
- export declare function querySelectorOrSelf<T extends Element = HTMLElement>(element: T, selector: string): T | null;
394
-
395
- export declare function querySelectorText(e: ParentNode, selector?: string): string;
396
-
397
- export declare function range(size: number, start?: number, step?: number): number[];
398
-
399
- export declare class RegexFilter {
400
- private regexes;
401
- constructor(str: string, flags?: string);
402
- private compileSearchRegex;
403
- hasEvery(str: string): boolean;
404
- hasNone(str: string): boolean;
405
- }
406
-
407
- export declare function removeClassesAndDataAttributes(element: HTMLElement, keyword: string): void;
408
-
409
- export declare function replaceElementTag(e: HTMLElement, tagName: string): HTMLElement;
410
-
411
- export declare class Rules {
412
- thumbs: Parameters<typeof ThumbsParser.create>[0];
413
- thumbsParser: ThumbsParser;
414
- thumb: Parameters<typeof ThumbDataParser.create>[0];
415
- thumbDataParser: ThumbDataParser;
416
- thumbImg: Parameters<typeof ThumbImgParser.create>[0];
417
- thumbImgParser: ThumbImgParser;
418
- containerSelector: string | (() => HTMLElement);
419
- containerSelectorLast?: string;
420
- get container(): HTMLElement;
421
- intersectionObservableSelector?: string;
422
- get intersectionObservable(): HTMLElement | null | undefined;
423
- get observable(): HTMLElement;
424
- paginationStrategyOptions: Partial<PaginationStrategy>;
425
- paginationStrategy: PaginationStrategy;
426
- dataManager: DataManager;
427
- containerHomogenity: ConstructorParameters<typeof DataManager>[1];
428
- customDataFilterFns: (Record<string, DataFilterFnFrom<any>> | string)[];
429
- private hookDataFilterFns;
430
- animatePreview?: (doc: HTMLElement) => void;
431
- storeOptions?: JabroniTypes.StoreStateOptions;
432
- schemeOptions: SchemeOptions;
433
- store: JabronioStore;
434
- gui: JabronioGUI;
435
- inputController: JabronioGuiController;
436
- private createStore;
437
- private createGui;
438
- customGenerator?: OffsetGenerator;
439
- infiniteScroller?: InfiniteScroller;
440
- getPaginationData?: InfiniteScroller['getPaginationData'];
441
- private resetInfiniteScroller;
442
- gropeStrategy: 'all-in-one' | 'all-in-all';
443
- gropeInit(): void;
444
- get isEmbedded(): boolean;
445
- containMutationEnabled: boolean;
446
- private mutationObservers;
447
- resetOnPaginationOrContainerDeath: boolean;
448
- private resetOn;
449
- onResetCallback?: () => void;
450
- private reset;
451
- constructor(options: Partial<Rules>);
452
- }
453
-
454
- export declare function runIdleJob<T>(iterator: Iterator<T>, job: (v: T) => void): Promise<unknown>;
455
-
456
- export declare function sanitizeStr(s: string): string;
457
-
458
- declare type SchemeKeys = JabroniTypes.ExtractValuesByKey<typeof DefaultScheme, 'title'>;
459
-
460
- declare type SchemeOptions = (Parameters<typeof setupScheme>[0][0] | SchemeKeys)[];
461
-
462
- export declare function splitWith(s: string, c?: string): Array<string>;
463
-
464
- declare type ThumbData = Record<string, Primitive>;
465
-
466
- export declare class ThumbDataParser {
467
- strategy: 'manual' | 'auto-select' | 'auto-text';
468
- selectors: ThumbDataSelectorsRaw;
469
- callback?: ((thumb: HTMLElement, thumbData: ThumbData) => void) | undefined;
470
- getUrlSelector: string;
471
- private autoParseText;
472
- getUrl(thumb: HTMLElement | HTMLAnchorElement): string;
473
- private preprocessCustomThumbDataSelectors;
474
- private thumbDataSelectors;
475
- private readonly defaultThumbDataSelectors;
476
- private getThumbDataWith;
477
- constructor(strategy?: 'manual' | 'auto-select' | 'auto-text', selectors?: ThumbDataSelectorsRaw, callback?: ((thumb: HTMLElement, thumbData: ThumbData) => void) | undefined, getUrlSelector?: string);
478
- static create(o?: Partial<Pick<ThumbDataParser, 'strategy' | 'selectors' | 'callback' | 'getUrlSelector'>>): ThumbDataParser;
479
- getThumbData(thumb: HTMLElement): ThumbData;
480
- }
481
-
482
- declare type ThumbDataSelector = {
483
- name: string;
484
- selector: string;
485
- type: 'boolean' | 'string' | 'number' | 'float' | 'duration';
486
- };
487
-
488
- declare type ThumbDataSelectorsRaw = Record<string, string | Pick<ThumbDataSelector, 'selector' | 'type'>>;
489
-
490
- export declare class ThumbImgParser {
491
- selector?: string | string[] | ((img: HTMLImageElement) => string);
492
- remove?: 'auto' | string;
493
- strategy: 'default' | 'auto';
494
- static create(options?: Partial<Pick<ThumbImgParser, 'selector' | 'remove' | 'strategy' | 'getImgData'>>): ThumbImgParser & Partial<Pick<ThumbImgParser, "selector" | "strategy" | "remove" | "getImgData">>;
495
- private removeAttrs;
496
- private getImgSrc;
497
- getImgData(thumb: HTMLElement): {
498
- img?: undefined;
499
- imgSrc?: undefined;
500
- } | {
501
- img: HTMLImageElement;
502
- imgSrc: string;
503
- };
504
- }
505
-
506
- export declare class ThumbsParser {
507
- selector: string;
508
- strategy: 'default' | 'auto';
509
- transform?: (thumb: HTMLElement) => void;
510
- static create(options?: Partial<Pick<ThumbsParser, 'selector' | 'strategy' | 'transform'>>): ThumbsParser & Partial<Pick<ThumbsParser, "selector" | "strategy" | "transform">>;
511
- getThumbs(container: HTMLElement): HTMLElement[];
512
- }
513
-
514
- export declare class Tick {
515
- private delay;
516
- private startImmediate;
517
- private tick?;
518
- private callbackFinal?;
519
- constructor(delay: number, startImmediate?: boolean);
520
- start(callback: () => void, callbackFinal?: () => void): void;
521
- stop(): void;
522
- }
523
-
524
- /**
525
- * Converts a time string (HH:MM:SS or duration format) to total seconds.
526
- * @param timeStr - The time string to convert.
527
- * @returns The total number of seconds.
528
- */
529
- export declare function timeToSeconds(timeStr: string): number;
530
-
531
- export declare function wait(milliseconds: number): Promise<unknown>;
532
-
533
- export declare function waitForElementToAppear(parent: ParentNode, selector: string, callback: (el: Element) => void): MutationObserver;
534
-
535
- export declare function waitForElementToDisappear(observable: HTMLElement, callback: () => void): MutationObserver;
536
-
537
- export declare function watchDomChangesWithThrottle(element: HTMLElement, callback: () => void, throttle?: number, times?: number, options?: MutationObserverInit): MutationObserver;
538
-
539
- export declare function watchElementChildrenCount(element: ParentNode, callback: (observer: MutationObserver, count: number) => void): MutationObserver;
540
-
541
- export { }
1
+ export * from './index.js'
2
+ export {}