nothing-browser 0.0.21 → 0.1.1

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 (68) hide show
  1. package/LICENSE +1 -1
  2. package/dist/human/index.js +25 -1
  3. package/dist/piggy/captcha/index.d.ts +39 -0
  4. package/dist/piggy/captcha/index.d.ts.map +1 -0
  5. package/dist/piggy/capture/index.d.ts +48 -0
  6. package/dist/piggy/capture/index.d.ts.map +1 -0
  7. package/dist/piggy/dialog/index.d.ts +28 -0
  8. package/dist/piggy/dialog/index.d.ts.map +1 -0
  9. package/dist/piggy/export/index.d.ts +62 -0
  10. package/dist/piggy/export/index.d.ts.map +1 -0
  11. package/dist/piggy/find/index.d.ts +52 -0
  12. package/dist/piggy/find/index.d.ts.map +1 -0
  13. package/dist/piggy/http/index.d.ts +14 -0
  14. package/dist/piggy/http/index.d.ts.map +1 -0
  15. package/dist/piggy/human/index.d.ts +36 -4
  16. package/dist/piggy/human/index.d.ts.map +1 -1
  17. package/dist/piggy/iframe/index.d.ts +53 -0
  18. package/dist/piggy/iframe/index.d.ts.map +1 -0
  19. package/dist/piggy/interactions/index.d.ts +24 -0
  20. package/dist/piggy/interactions/index.d.ts.map +1 -0
  21. package/dist/piggy/media/index.d.ts +11 -0
  22. package/dist/piggy/media/index.d.ts.map +1 -0
  23. package/dist/piggy/navigation/index.d.ts +16 -0
  24. package/dist/piggy/navigation/index.d.ts.map +1 -0
  25. package/dist/piggy/provide/index.d.ts +98 -0
  26. package/dist/piggy/provide/index.d.ts.map +1 -0
  27. package/dist/piggy/proxy/index.d.ts +94 -0
  28. package/dist/piggy/proxy/index.d.ts.map +1 -0
  29. package/dist/piggy/register/index.d.ts.map +1 -1
  30. package/dist/piggy/router/index.d.ts +38 -0
  31. package/dist/piggy/router/index.d.ts.map +1 -0
  32. package/dist/piggy/session/index.d.ts +27 -0
  33. package/dist/piggy/session/index.d.ts.map +1 -0
  34. package/dist/piggy/tabs/index.d.ts +10 -0
  35. package/dist/piggy/tabs/index.d.ts.map +1 -0
  36. package/dist/piggy/wait/index.d.ts +28 -0
  37. package/dist/piggy/wait/index.d.ts.map +1 -0
  38. package/dist/piggy.d.ts.map +1 -1
  39. package/dist/piggy.js +898 -181
  40. package/dist/register/index.js +39 -86
  41. package/package.json +1 -1
  42. package/piggy/captcha/index.d.ts +35 -0
  43. package/piggy/captcha/index.ts +93 -0
  44. package/piggy/capture/index.ts +76 -0
  45. package/piggy/dialog/index.d.ts +29 -0
  46. package/piggy/dialog/index.ts +85 -0
  47. package/piggy/export/index.d.ts +117 -0
  48. package/piggy/export/index.ts +147 -0
  49. package/piggy/find/index.ts +118 -0
  50. package/piggy/http/index.ts +65 -0
  51. package/piggy/human/index.ts +115 -53
  52. package/piggy/iframe/index.ts +79 -0
  53. package/piggy/interactions/index.ts +79 -0
  54. package/piggy/media/index.ts +46 -0
  55. package/piggy/navigation/index.ts +52 -0
  56. package/piggy/provide/index.ts +170 -0
  57. package/piggy/proxy/index.ts +154 -0
  58. package/piggy/register/index.ts +41 -59
  59. package/piggy/router/index.ts +69 -0
  60. package/piggy/session/index.ts +76 -0
  61. package/piggy/tabs/index.ts +22 -0
  62. package/piggy/wait/index.ts +90 -0
  63. package/piggy.ts +94 -39
  64. package/dist/piggy/open/index.d.ts +0 -4
  65. package/dist/piggy/open/index.d.ts.map +0 -1
  66. package/piggy/open/index.d.ts +0 -4
  67. package/piggy/open/index.d.ts.map +0 -1
  68. package/piggy/open/index.ts +0 -5
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2025 BunElysiaReact
3
+ Copyright (c) 2026 BunElysiaReact
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -52,7 +52,31 @@ function humanTypeSequence(text) {
52
52
  }
53
53
  return actions;
54
54
  }
55
+
56
+ class HumanClient {
57
+ client;
58
+ constructor(client) {
59
+ this.client = client;
60
+ }
61
+ set(opts, tabId = "default") {
62
+ return this.client.send("human.set", { ...opts, tabId });
63
+ }
64
+ get(tabId = "default") {
65
+ return this.client.send("human.get", { tabId });
66
+ }
67
+ type(opts, tabId = "default") {
68
+ return this.client.send("human.type", { ...opts, tabId });
69
+ }
70
+ click(opts, tabId = "default") {
71
+ return this.client.send("human.click", { ...opts, tabId });
72
+ }
73
+ }
74
+ function createHumanAPI(client) {
75
+ return new HumanClient(client);
76
+ }
55
77
  export {
56
78
  randomDelay,
57
- humanTypeSequence
79
+ humanTypeSequence,
80
+ createHumanAPI,
81
+ HumanClient
58
82
  };
@@ -0,0 +1,39 @@
1
+ import { PiggyClient } from "../client";
2
+ export interface CaptchaState {
3
+ detected: boolean;
4
+ paused: boolean;
5
+ type: string;
6
+ }
7
+ export interface BlockState {
8
+ detected: boolean;
9
+ type: string;
10
+ }
11
+ export declare class CaptchaClient {
12
+ private client;
13
+ constructor(client: PiggyClient);
14
+ status(tabId?: string): Promise<CaptchaState>;
15
+ resolve(tabId?: string): Promise<void>;
16
+ pause(tabId?: string): Promise<void>;
17
+ check(tabId?: string): Promise<void>;
18
+ setAutoRetry(enabled: boolean): Promise<void>;
19
+ blockStatus(tabId?: string): Promise<BlockState>;
20
+ blockRetry(tabId?: string): Promise<void>;
21
+ onCaptcha(tabId: string, handler: (data: {
22
+ captchaType: string;
23
+ tabId: string;
24
+ }) => void): () => void;
25
+ onCaptchaResolved(tabId: string, handler: (data: {
26
+ tabId: string;
27
+ }) => void): () => void;
28
+ onBlocked(tabId: string, handler: (data: {
29
+ blockType: string;
30
+ tabId: string;
31
+ }) => void): () => void;
32
+ onBlockRetry(tabId: string, handler: (data: {
33
+ tabId: string;
34
+ proxy: string;
35
+ }) => void): () => void;
36
+ waitForResolution(tabId?: string, timeoutMs?: number): Promise<void>;
37
+ }
38
+ export declare function createCaptchaAPI(client: PiggyClient): CaptchaClient;
39
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../piggy/captcha/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGxC,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,aAAa;IACZ,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAIvC,MAAM,CAAC,KAAK,SAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAIhD,OAAO,CAAC,KAAK,SAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzC,KAAK,CAAC,KAAK,SAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC,KAAK,CAAC,KAAK,SAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAM7C,WAAW,CAAC,KAAK,SAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IAInD,UAAU,CAAC,KAAK,SAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5C,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,MAAM,IAAI;IAIrG,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,MAAM,IAAI;IAIxF,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,MAAM,IAAI;IAInG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,MAAM,IAAI;IAMlG,iBAAiB,CAAC,KAAK,SAAY,EAAE,SAAS,SAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAgBzE;AAID,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,aAAa,CAEnE"}
@@ -0,0 +1,48 @@
1
+ import { PiggyClient } from "../client";
2
+ export interface CapturedRequest {
3
+ method: string;
4
+ url: string;
5
+ status: string;
6
+ type: string;
7
+ mime: string;
8
+ reqHeaders: string;
9
+ reqBody: string;
10
+ resHeaders: string;
11
+ resBody: string;
12
+ size: number;
13
+ timestamp: string;
14
+ }
15
+ export interface WebSocketFrame {
16
+ connectionId: string;
17
+ url: string;
18
+ direction: string;
19
+ data: string;
20
+ binary: boolean;
21
+ timestamp: string;
22
+ }
23
+ export interface CapturedCookie {
24
+ name: string;
25
+ value: string;
26
+ domain: string;
27
+ path: string;
28
+ httpOnly: boolean;
29
+ secure: boolean;
30
+ expires: string;
31
+ }
32
+ export interface StorageEntry {
33
+ key: string;
34
+ value: string;
35
+ }
36
+ export declare class CaptureClient {
37
+ private client;
38
+ constructor(client: PiggyClient);
39
+ start(tabId?: string): Promise<void>;
40
+ stop(tabId?: string): Promise<void>;
41
+ requests(tabId?: string): Promise<CapturedRequest[]>;
42
+ ws(tabId?: string): Promise<WebSocketFrame[]>;
43
+ cookies(tabId?: string): Promise<CapturedCookie[]>;
44
+ storage(tabId?: string): Promise<StorageEntry[]>;
45
+ clear(tabId?: string): Promise<void>;
46
+ }
47
+ export declare function createCaptureAPI(client: PiggyClient): CaptureClient;
48
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../piggy/capture/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,aAAa;IACZ,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAEvC,KAAK,CAAC,KAAK,SAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC,IAAI,CAAC,KAAK,SAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAItC,QAAQ,CAAC,KAAK,SAAY,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAIvD,EAAE,CAAC,KAAK,SAAY,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAIhD,OAAO,CAAC,KAAK,SAAY,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAIrD,OAAO,CAAC,KAAK,SAAY,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAInD,KAAK,CAAC,KAAK,SAAY,GAAG,OAAO,CAAC,IAAI,CAAC;CAGxC;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,aAAa,CAEnE"}
@@ -0,0 +1,28 @@
1
+ import { PiggyClient } from "../client";
2
+ export interface DialogState {
3
+ pending: boolean;
4
+ type: string;
5
+ message: string;
6
+ defaultValue: string;
7
+ }
8
+ interface DialogEventData {
9
+ dialogType: string;
10
+ message: string;
11
+ defaultValue: string;
12
+ tabId: string;
13
+ }
14
+ export declare class DialogClient {
15
+ private client;
16
+ constructor(client: PiggyClient);
17
+ accept(tabId?: string, text?: string): Promise<void>;
18
+ dismiss(tabId?: string): Promise<void>;
19
+ status(tabId?: string): Promise<DialogState>;
20
+ setAutoAction(tabId: string | undefined, action: "accept" | "dismiss" | ""): Promise<void>;
21
+ upload(selector: string, filePath: string, tabId?: string): Promise<void>;
22
+ onDialog(tabId: string, handler: (data: DialogEventData) => void): () => void;
23
+ waitAndAccept(tabId?: string, text?: string, timeoutMs?: number): Promise<DialogEventData>;
24
+ waitAndDismiss(tabId?: string, timeoutMs?: number): Promise<DialogEventData>;
25
+ }
26
+ export declare function createDialogAPI(client: PiggyClient): DialogClient;
27
+ export {};
28
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../piggy/dialog/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGxC,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AAGD,UAAU,eAAe;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,YAAY;IACX,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAEvC,MAAM,CAAC,KAAK,SAAY,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD,OAAO,CAAC,KAAK,SAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzC,MAAM,CAAC,KAAK,SAAY,GAAG,OAAO,CAAC,WAAW,CAAC;IAI/C,aAAa,CAAC,KAAK,oBAAY,EAAE,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlF,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5E,QAAQ,CACN,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,GACvC,MAAM,IAAI;IAIb,aAAa,CAAC,KAAK,SAAY,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,SAAS,GAAG,OAAO,CAAC,eAAe,CAAC;IAgB7F,cAAc,CAAC,KAAK,SAAY,EAAE,SAAS,SAAS,GAAG,OAAO,CAAC,eAAe,CAAC;CAehF;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,YAAY,CAEjE"}
@@ -0,0 +1,62 @@
1
+ import { PiggyClient } from "../client";
2
+ import type { CapturedRequest, WebSocketFrame, CapturedCookie } from "../capture";
3
+ import type { SessionPaths } from "../session";
4
+ export interface InterceptRule {
5
+ pattern: string;
6
+ block?: boolean;
7
+ redirect?: string;
8
+ setHeaders?: Record<string, string>;
9
+ removeHeaders?: string[];
10
+ }
11
+ export interface CookieSetOptions {
12
+ name: string;
13
+ value: string;
14
+ domain: string;
15
+ path?: string;
16
+ httpOnly?: boolean;
17
+ secure?: boolean;
18
+ expiry?: number;
19
+ }
20
+ export interface CookieDeleteOptions {
21
+ name: string;
22
+ domain: string;
23
+ }
24
+ export type { CapturedRequest, WebSocketFrame, CapturedCookie, SessionPaths };
25
+ export interface SessionExport {
26
+ url: string;
27
+ requests: CapturedRequest[];
28
+ ws: WebSocketFrame[];
29
+ cookies: CapturedCookie[];
30
+ }
31
+ export interface ExposedFunctionCall {
32
+ name: string;
33
+ callId: string;
34
+ data: string;
35
+ tabId: string;
36
+ }
37
+ export declare class ExportClient {
38
+ private client;
39
+ constructor(client: PiggyClient);
40
+ searchCss(query: string, tabId?: string): Promise<any>;
41
+ searchId(query: string, tabId?: string): Promise<any>;
42
+ setCookie(opts: CookieSetOptions, tabId?: string): Promise<void>;
43
+ deleteCookie(opts: CookieDeleteOptions, tabId?: string): Promise<void>;
44
+ sessionReload(tabId?: string): Promise<void>;
45
+ cookiesPath(): Promise<string>;
46
+ profilePath(): Promise<string>;
47
+ wsPath(): Promise<string>;
48
+ pingsPath(): Promise<string>;
49
+ sessionPaths(): Promise<SessionPaths>;
50
+ setWsSave(enabled: boolean): Promise<void>;
51
+ setPingsSave(enabled: boolean): Promise<void>;
52
+ addInterceptRule(rule: InterceptRule, tabId?: string): Promise<void>;
53
+ clearInterceptRules(tabId?: string): Promise<void>;
54
+ exportSession(tabId?: string): Promise<SessionExport>;
55
+ importSession(data: SessionExport, tabId?: string): Promise<void>;
56
+ exposeFunction(name: string, tabId?: string): Promise<void>;
57
+ resolveExposed(callId: string, result: string, isError?: boolean, tabId?: string): Promise<void>;
58
+ addInitScript(js: string, tabId?: string): Promise<void>;
59
+ onExposedFunctionCalled(tabId: string, handler: (call: ExposedFunctionCall) => void): () => void;
60
+ }
61
+ export declare function createExportAPI(client: PiggyClient): ExportClient;
62
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../piggy/export/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import { PiggyClient } from "../client";
2
+ export interface ElementDescriptor {
3
+ tag: string;
4
+ id: string;
5
+ cls: string;
6
+ /** First 400 chars of innerText */
7
+ text: string;
8
+ /** First 800 chars of innerHTML */
9
+ html: string;
10
+ href: string;
11
+ src: string;
12
+ value: string;
13
+ attrs: Record<string, string>;
14
+ }
15
+ export declare class FindClient {
16
+ private client;
17
+ constructor(client: PiggyClient);
18
+ /** querySelectorAll — returns all matching elements. */
19
+ css(selector: string, tabId?: string): Promise<ElementDescriptor[]>;
20
+ /** Alias for css(). */
21
+ all(selector: string, tabId?: string): Promise<ElementDescriptor[]>;
22
+ /** querySelector — returns a single-element array or []. */
23
+ first(selector: string, tabId?: string): Promise<ElementDescriptor[]>;
24
+ /** Find elements whose innerText contains the given text. */
25
+ byText(text: string, tabId?: string): Promise<ElementDescriptor[]>;
26
+ /** Find elements by attribute name (and optional value). */
27
+ byAttr(attr: string, value?: string, tabId?: string): Promise<ElementDescriptor[]>;
28
+ /** getElementsByTagName. */
29
+ byTag(tag: string, tabId?: string): Promise<ElementDescriptor[]>;
30
+ /** Find inputs/textareas whose placeholder contains the given text. */
31
+ byPlaceholder(text: string, tabId?: string): Promise<ElementDescriptor[]>;
32
+ /** Find elements by ARIA role, optionally filtered by accessible name. */
33
+ byRole(role: string, name?: string, tabId?: string): Promise<ElementDescriptor[]>;
34
+ /** Direct children of the matched element. */
35
+ children(selector: string, tabId?: string): Promise<ElementDescriptor[]>;
36
+ /** parentElement of the matched element. */
37
+ parent(selector: string, tabId?: string): Promise<ElementDescriptor[]>;
38
+ /** Walk up the DOM from selector until ancestor matches. */
39
+ closest(selector: string, ancestor: string, tabId?: string): Promise<ElementDescriptor[]>;
40
+ /** Number of elements matching the selector. */
41
+ count(selector: string, tabId?: string): Promise<number>;
42
+ /** True if at least one element matches. */
43
+ exists(selector: string, tabId?: string): Promise<boolean>;
44
+ /** True if the first matched element is visible. */
45
+ visible(selector: string, tabId?: string): Promise<boolean>;
46
+ /** True if the first matched element is not disabled. */
47
+ enabled(selector: string, tabId?: string): Promise<boolean>;
48
+ /** True if the first matched checkbox/radio is checked. */
49
+ checked(selector: string, tabId?: string): Promise<boolean>;
50
+ }
51
+ export declare function createFindAPI(client: PiggyClient): FindClient;
52
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../piggy/find/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAKxC,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAI,MAAM,CAAC;IACd,EAAE,EAAK,MAAM,CAAC;IACd,GAAG,EAAI,MAAM,CAAC;IACd,mCAAmC;IACnC,IAAI,EAAG,MAAM,CAAC;IACd,mCAAmC;IACnC,IAAI,EAAG,MAAM,CAAC;IACd,IAAI,EAAG,MAAM,CAAC;IACd,GAAG,EAAI,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAOD,qBAAa,UAAU;IACT,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAIvC,wDAAwD;IACxD,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAItE,uBAAuB;IACvB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAItE,4DAA4D;IAC5D,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAIxE,6DAA6D;IAC7D,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAIrE,4DAA4D;IAC5D,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAIrF,4BAA4B;IAC5B,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAInE,uEAAuE;IACvE,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAI5E,0EAA0E;IAC1E,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAIpF,8CAA8C;IAC9C,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAI3E,4CAA4C;IAC5C,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAIzE,4DAA4D;IAC5D,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAM5F,gDAAgD;IAChD,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAI3D,4CAA4C;IAC5C,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAI7D,oDAAoD;IACpD,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAI9D,yDAAyD;IACzD,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAI9D,2DAA2D;IAC3D,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,OAAO,CAAC;CAG/D;AAID,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,UAAU,CAE7D"}
@@ -0,0 +1,14 @@
1
+ export interface HttpClientOptions {
2
+ host?: string;
3
+ port?: number;
4
+ key: string;
5
+ }
6
+ export declare class PiggyHttpClient {
7
+ private baseUrl;
8
+ private key;
9
+ constructor(opts: HttpClientOptions);
10
+ ping(): Promise<boolean>;
11
+ send<T = any>(cmd: string, payload?: Record<string, any>): Promise<T>;
12
+ }
13
+ export declare function createHttpClient(opts: HttpClientOptions): PiggyHttpClient;
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../piggy/http/index.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,GAAG,CAAS;gBAER,IAAI,EAAE,iBAAiB;IAS7B,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAmBxB,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,OAAO,CAAC,CAAC,CAAC;CAkBhF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,GAAG,eAAe,CAEzE"}
@@ -1,7 +1,39 @@
1
+ import { PiggyClient } from "../client";
1
2
  export declare function randomDelay(min: number, max: number): Promise<void>;
2
- /**
3
- * Simulates human typing by introducing ~2 random typos and correcting them.
4
- * Returns an array of { char, isBackspace } actions to replay.
5
- */
6
3
  export declare function humanTypeSequence(text: string): string[];
4
+ export type TypingSpeed = "slow" | "normal" | "fast";
5
+ export type ClickDelay = "cautious" | "normal" | "fast";
6
+ export type ScrollSpeed = "slow" | "normal" | "fast";
7
+ export interface HumanProfile {
8
+ typingSpeed: TypingSpeed;
9
+ clickDelay: ClickDelay;
10
+ scrollSpeed: ScrollSpeed;
11
+ mouseWiggle: boolean;
12
+ }
13
+ export interface HumanSetOptions {
14
+ typingSpeed?: TypingSpeed;
15
+ clickDelay?: ClickDelay;
16
+ scrollSpeed?: ScrollSpeed;
17
+ mouseWiggle?: boolean;
18
+ }
19
+ export interface HumanTypeOptions {
20
+ selector: string;
21
+ text: string;
22
+ clear?: boolean;
23
+ speed?: number;
24
+ }
25
+ export interface HumanClickOptions {
26
+ selector: string;
27
+ force?: boolean;
28
+ delay?: number;
29
+ }
30
+ export declare class HumanClient {
31
+ private client;
32
+ constructor(client: PiggyClient);
33
+ set(opts: HumanSetOptions, tabId?: string): Promise<HumanProfile>;
34
+ get(tabId?: string): Promise<HumanProfile>;
35
+ type(opts: HumanTypeOptions, tabId?: string): Promise<void>;
36
+ click(opts: HumanClickOptions, tabId?: string): Promise<void>;
37
+ }
38
+ export declare function createHumanAPI(client: PiggyClient): HumanClient;
7
39
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../piggy/human/index.ts"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CA0CxD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../piggy/human/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAIxC,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAyCxD;AAID,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AACrD,MAAM,MAAM,UAAU,GAAI,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;AACzD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAErD,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAG,UAAU,CAAC;IACxB,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,CAAC,EAAG,UAAU,CAAC;IACzB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAM,MAAM,CAAC;IACjB,KAAK,CAAC,EAAI,OAAO,CAAC;IAClB,KAAK,CAAC,EAAI,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAI,OAAO,CAAC;IAClB,KAAK,CAAC,EAAI,MAAM,CAAC;CAClB;AAKD,qBAAa,WAAW;IACV,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAGvC,GAAG,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAKpE,GAAG,CAAC,KAAK,SAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAK7C,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9D,KAAK,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,IAAI,CAAC;CAGjE;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAE/D"}
@@ -0,0 +1,53 @@
1
+ import { PiggyClient } from "../client";
2
+ export interface IframeDescriptor {
3
+ index: number;
4
+ src: string;
5
+ id: string;
6
+ name: string;
7
+ }
8
+ /** Target an iframe by its index or src. One must be provided. */
9
+ export type IframeTarget = {
10
+ index: number;
11
+ src?: never;
12
+ } | {
13
+ src: string;
14
+ index?: never;
15
+ };
16
+ export type IframeEvaluateOptions = IframeTarget & {
17
+ js: string;
18
+ };
19
+ export type IframeClickOptions = IframeTarget & {
20
+ sel: string;
21
+ };
22
+ export type IframeTypeOptions = IframeTarget & {
23
+ sel: string;
24
+ text: string;
25
+ };
26
+ export type IframeTextOptions = IframeTarget & {
27
+ sel: string;
28
+ };
29
+ export type IframeHtmlOptions = IframeTarget;
30
+ export type IframeWaitSelOptions = IframeTarget & {
31
+ sel: string;
32
+ timeout?: number;
33
+ };
34
+ export declare class IframeClient {
35
+ private client;
36
+ constructor(client: PiggyClient);
37
+ /** List all iframes on the page: index, src, id, name. */
38
+ list(tabId?: string): Promise<IframeDescriptor[]>;
39
+ /** Run arbitrary JS inside the targeted iframe. Returns whatever the script returns. */
40
+ evaluate(opts: IframeEvaluateOptions, tabId?: string): Promise<unknown>;
41
+ /** Click a selector inside the targeted iframe. */
42
+ click(opts: IframeClickOptions, tabId?: string): Promise<boolean>;
43
+ /** Type text into a selector inside the targeted iframe. */
44
+ type(opts: IframeTypeOptions, tabId?: string): Promise<boolean>;
45
+ /** Get innerText of a selector inside the targeted iframe. */
46
+ text(opts: IframeTextOptions, tabId?: string): Promise<string>;
47
+ /** Get the full HTML of the targeted iframe. */
48
+ html(opts: IframeHtmlOptions, tabId?: string): Promise<string>;
49
+ /** Wait until a selector appears inside the targeted iframe. */
50
+ waitSel(opts: IframeWaitSelOptions, tabId?: string): Promise<boolean>;
51
+ }
52
+ export declare function createIframeAPI(client: PiggyClient): IframeClient;
53
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../piggy/iframe/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAIxC,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAI,MAAM,CAAC;IACd,EAAE,EAAK,MAAM,CAAC;IACd,IAAI,EAAG,MAAM,CAAC;CACf;AAID,kEAAkE;AAClE,MAAM,MAAM,YAAY,GACpB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,KAAK,CAAA;CAAE,GAC9B;IAAE,GAAG,EAAE,MAAM,CAAC;IAAE,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAEpC,MAAM,MAAM,qBAAqB,GAAG,YAAY,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAClE,MAAM,MAAM,kBAAkB,GAAM,YAAY,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AACnE,MAAM,MAAM,iBAAiB,GAAO,YAAY,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AACjF,MAAM,MAAM,iBAAiB,GAAO,YAAY,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AACnE,MAAM,MAAM,iBAAiB,GAAO,YAAY,CAAC;AACjD,MAAM,MAAM,oBAAoB,GAAI,YAAY,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAIrF,qBAAa,YAAY;IACX,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAEvC,0DAA0D;IAC1D,IAAI,CAAC,KAAK,SAAY,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAIpD,wFAAwF;IACxF,QAAQ,CAAC,IAAI,EAAE,qBAAqB,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAI1E,mDAAmD;IACnD,KAAK,CAAC,IAAI,EAAE,kBAAkB,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAIpE,4DAA4D;IAC5D,IAAI,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAIlE,8DAA8D;IAC9D,IAAI,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAIjE,gDAAgD;IAChD,IAAI,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAIjE,gEAAgE;IAChE,OAAO,CAAC,IAAI,EAAE,oBAAoB,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,OAAO,CAAC;CAGzE;AAID,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,YAAY,CAEjE"}
@@ -0,0 +1,24 @@
1
+ import { PiggyClient } from "../client";
2
+ export interface MousePosition {
3
+ x: number;
4
+ y: number;
5
+ }
6
+ export declare class InteractionsClient {
7
+ private client;
8
+ constructor(client: PiggyClient);
9
+ click(selector: string, tabId?: string): Promise<boolean>;
10
+ dblclick(selector: string, tabId?: string): Promise<boolean>;
11
+ hover(selector: string, tabId?: string): Promise<boolean>;
12
+ type(selector: string, text: string, tabId?: string): Promise<boolean>;
13
+ typeClear(selector: string, text: string, tabId?: string): Promise<boolean>;
14
+ select(selector: string, value: string, tabId?: string): Promise<boolean>;
15
+ scrollTo(selector: string, tabId?: string): Promise<boolean>;
16
+ scrollBy(px: number, tabId?: string): Promise<boolean>;
17
+ keyPress(key: string, tabId?: string): Promise<boolean>;
18
+ keyCombo(combo: string, tabId?: string): Promise<boolean>;
19
+ mouseMove(x: number, y: number, tabId?: string): Promise<boolean>;
20
+ mouseDrag(from: MousePosition, to: MousePosition, tabId?: string): Promise<boolean>;
21
+ evaluate(js: string, tabId?: string): Promise<unknown>;
22
+ }
23
+ export declare function createInteractionsAPI(client: PiggyClient): InteractionsClient;
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../piggy/interactions/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,WAAW,aAAa;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,qBAAa,kBAAkB;IACjB,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAIvC,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAI5D,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAI/D,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAM5D,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAIzE,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAI9E,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAM5E,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAI/D,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAMzD,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAI1D,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAM5D,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAIpE,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAMtF,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,OAAO,CAAC;CAG1D;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,WAAW,GAAG,kBAAkB,CAE7E"}
@@ -0,0 +1,11 @@
1
+ import { PiggyClient } from "../client";
2
+ export declare class MediaClient {
3
+ private client;
4
+ constructor(client: PiggyClient);
5
+ screenshot(filePath?: string, tabId?: string): Promise<string>;
6
+ pdf(filePath?: string, tabId?: string): Promise<string>;
7
+ blockImages(tabId?: string): Promise<void>;
8
+ unblockImages(tabId?: string): Promise<void>;
9
+ }
10
+ export declare function createMediaAPI(client: PiggyClient): MediaClient;
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../piggy/media/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAIxC,qBAAa,WAAW;IACV,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAIjC,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAYjE,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAYhE,WAAW,CAAC,KAAK,SAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C,aAAa,CAAC,KAAK,SAAY,GAAG,OAAO,CAAC,IAAI,CAAC;CAGhD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAE/D"}
@@ -0,0 +1,16 @@
1
+ import { PiggyClient } from "../client";
2
+ export declare class NavigationClient {
3
+ private client;
4
+ constructor(client: PiggyClient);
5
+ navigate(url: string, tabId?: string): Promise<void>;
6
+ reload(tabId?: string): Promise<void>;
7
+ goBack(tabId?: string): Promise<void>;
8
+ goForward(tabId?: string): Promise<void>;
9
+ url(tabId?: string): Promise<string>;
10
+ title(tabId?: string): Promise<string>;
11
+ content(tabId?: string): Promise<string>;
12
+ waitForNavigation(tabId?: string): Promise<void>;
13
+ waitForSelector(selector: string, timeout?: number, tabId?: string): Promise<void>;
14
+ }
15
+ export declare function createNavigationAPI(client: PiggyClient): NavigationClient;
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../piggy/navigation/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,qBAAa,gBAAgB;IACf,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAIvC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD,MAAM,CAAC,KAAK,SAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC,MAAM,CAAC,KAAK,SAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC,SAAS,CAAC,KAAK,SAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3C,GAAG,CAAC,KAAK,SAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAIvC,KAAK,CAAC,KAAK,SAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAIzC,OAAO,CAAC,KAAK,SAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAM3C,iBAAiB,CAAC,KAAK,SAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAInD,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,SAAQ,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,IAAI,CAAC;CAGrF;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,gBAAgB,CAEzE"}
@@ -0,0 +1,98 @@
1
+ import { PiggyClient } from "../client";
2
+ export interface ProvideOptions {
3
+ /** CSS selector for the target element(s). */
4
+ selector: string;
5
+ /**
6
+ * Optional parent selector to scope the query under.
7
+ * Equivalent to: parent.querySelector(selector)
8
+ */
9
+ parent?: string;
10
+ }
11
+ export interface ProvideAttrOptions extends ProvideOptions {
12
+ /** The attribute name to extract. */
13
+ attr: string;
14
+ }
15
+ export interface ProvideListOptions extends ProvideOptions {
16
+ /** Optional child selector to scope list items. */
17
+ itemSel?: string;
18
+ }
19
+ export interface ProvideTable {
20
+ headers: string[];
21
+ rows: string[][];
22
+ }
23
+ export interface ProvideLink {
24
+ text: string;
25
+ href: string;
26
+ }
27
+ export interface ProvideImage {
28
+ alt: string;
29
+ src: string;
30
+ }
31
+ export interface ProvideForm {
32
+ [name: string]: string;
33
+ }
34
+ export interface ProvidePage {
35
+ title: string;
36
+ url: string;
37
+ html: string;
38
+ text: string;
39
+ }
40
+ export interface ProvideDiv {
41
+ tag: string;
42
+ id: string;
43
+ cls: string;
44
+ text: string;
45
+ html: string;
46
+ children: ProvideDiv[];
47
+ }
48
+ export interface ProvideMeta {
49
+ [name: string]: string;
50
+ }
51
+ export interface ProvideSelectOption {
52
+ text: string;
53
+ value: string;
54
+ selected: boolean;
55
+ }
56
+ export interface ProvideSelect {
57
+ value: string;
58
+ options: ProvideSelectOption[];
59
+ }
60
+ export declare class ProvideClient {
61
+ private client;
62
+ constructor(client: PiggyClient);
63
+ /** innerText of the first matched element. */
64
+ text(opts: ProvideOptions, tabId?: string): Promise<string>;
65
+ /** innerText of all matched elements. */
66
+ textAll(opts: ProvideOptions, tabId?: string): Promise<string[]>;
67
+ /** Single attribute value from the first matched element. */
68
+ attr(opts: ProvideAttrOptions, tabId?: string): Promise<string>;
69
+ /** Attribute value from all matched elements. */
70
+ attrAll(opts: ProvideAttrOptions, tabId?: string): Promise<string[]>;
71
+ /** innerHTML of the first matched element. */
72
+ html(opts: ProvideOptions, tabId?: string): Promise<string>;
73
+ /** Extract a table into headers + rows. */
74
+ table(opts: ProvideOptions, tabId?: string): Promise<ProvideTable>;
75
+ /** Extract a list of text items, optionally scoped to child items. */
76
+ list(opts: ProvideListOptions, tabId?: string): Promise<string[]>;
77
+ /** All links inside the matched selector. */
78
+ links(opts: ProvideOptions, tabId?: string): Promise<ProvideLink[]>;
79
+ /** All images inside the matched selector. */
80
+ images(opts: ProvideOptions, tabId?: string): Promise<ProvideImage[]>;
81
+ /** Form field name→value map. */
82
+ form(opts: ProvideOptions, tabId?: string): Promise<ProvideForm>;
83
+ /** Full page info: title, url, html, text. No selector needed. */
84
+ page(tabId?: string): Promise<ProvidePage>;
85
+ /** Structured div tree: tag, id, cls, text, html, children[]. */
86
+ div(opts: ProvideOptions, tabId?: string): Promise<ProvideDiv>;
87
+ /** All <meta> name→content pairs. No selector needed. */
88
+ meta(tabId?: string): Promise<ProvideMeta>;
89
+ /** <select> current value + all options. */
90
+ select(opts: ProvideOptions, tabId?: string): Promise<ProvideSelect>;
91
+ /**
92
+ * Parse JSON from element innerText or script[type=application/json].
93
+ * selector is optional — defaults to the first matching JSON script tag.
94
+ */
95
+ json(opts?: Partial<ProvideOptions>, tabId?: string): Promise<unknown>;
96
+ }
97
+ export declare function createProvideAPI(client: PiggyClient): ProvideClient;
98
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../piggy/provide/index.ts"],"names":[],"mappings":"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"}