nothing-browser 0.0.20 → 0.1.0

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 (76) hide show
  1. package/LICENSE +1 -1
  2. package/dist/human/index.js +25 -1
  3. package/dist/launch/detect.js +13 -0
  4. package/dist/launch/spawn.js +13 -0
  5. package/dist/piggy/captcha/index.d.ts +39 -0
  6. package/dist/piggy/captcha/index.d.ts.map +1 -0
  7. package/dist/piggy/capture/index.d.ts +48 -0
  8. package/dist/piggy/capture/index.d.ts.map +1 -0
  9. package/dist/piggy/dialog/index.d.ts +28 -0
  10. package/dist/piggy/dialog/index.d.ts.map +1 -0
  11. package/dist/piggy/export/index.d.ts +62 -0
  12. package/dist/piggy/export/index.d.ts.map +1 -0
  13. package/dist/piggy/find/index.d.ts +90 -0
  14. package/dist/piggy/find/index.d.ts.map +1 -0
  15. package/dist/piggy/http/index.d.ts +14 -0
  16. package/dist/piggy/http/index.d.ts.map +1 -0
  17. package/dist/piggy/human/index.d.ts +36 -4
  18. package/dist/piggy/human/index.d.ts.map +1 -1
  19. package/dist/piggy/iframe/index.d.ts +53 -0
  20. package/dist/piggy/iframe/index.d.ts.map +1 -0
  21. package/dist/piggy/interactions/index.d.ts +24 -0
  22. package/dist/piggy/interactions/index.d.ts.map +1 -0
  23. package/dist/piggy/launch/detect.d.ts +1 -1
  24. package/dist/piggy/launch/detect.d.ts.map +1 -1
  25. package/dist/piggy/launch/spawn.d.ts.map +1 -1
  26. package/dist/piggy/media/index.d.ts +11 -0
  27. package/dist/piggy/media/index.d.ts.map +1 -0
  28. package/dist/piggy/navigation/index.d.ts +16 -0
  29. package/dist/piggy/navigation/index.d.ts.map +1 -0
  30. package/dist/piggy/provide/index.d.ts +81 -0
  31. package/dist/piggy/provide/index.d.ts.map +1 -0
  32. package/dist/piggy/proxy/index.d.ts +94 -0
  33. package/dist/piggy/proxy/index.d.ts.map +1 -0
  34. package/dist/piggy/register/index.d.ts.map +1 -1
  35. package/dist/piggy/router/index.d.ts +38 -0
  36. package/dist/piggy/router/index.d.ts.map +1 -0
  37. package/dist/piggy/session/index.d.ts +27 -0
  38. package/dist/piggy/session/index.d.ts.map +1 -0
  39. package/dist/piggy/tabs/index.d.ts +10 -0
  40. package/dist/piggy/tabs/index.d.ts.map +1 -0
  41. package/dist/piggy/wait/index.d.ts +28 -0
  42. package/dist/piggy/wait/index.d.ts.map +1 -0
  43. package/dist/piggy.d.ts.map +1 -1
  44. package/dist/piggy.js +914 -181
  45. package/dist/register/index.js +39 -86
  46. package/package.json +1 -1
  47. package/piggy/captcha/index.d.ts +35 -0
  48. package/piggy/captcha/index.ts +93 -0
  49. package/piggy/capture/index.ts +76 -0
  50. package/piggy/dialog/index.d.ts +29 -0
  51. package/piggy/dialog/index.ts +85 -0
  52. package/piggy/export/index.d.ts +117 -0
  53. package/piggy/export/index.ts +147 -0
  54. package/piggy/find/index.d.ts +79 -0
  55. package/piggy/find/index.ts +165 -0
  56. package/piggy/http/index.ts +65 -0
  57. package/piggy/human/index.ts +115 -53
  58. package/piggy/iframe/index.ts +79 -0
  59. package/piggy/interactions/index.ts +79 -0
  60. package/piggy/launch/detect.ts +19 -2
  61. package/piggy/launch/spawn.ts +1 -8
  62. package/piggy/media/index.ts +46 -0
  63. package/piggy/navigation/index.ts +52 -0
  64. package/piggy/provide/index.ts +144 -0
  65. package/piggy/proxy/index.ts +154 -0
  66. package/piggy/register/index.ts +41 -59
  67. package/piggy/router/index.ts +69 -0
  68. package/piggy/session/index.ts +76 -0
  69. package/piggy/tabs/index.ts +22 -0
  70. package/piggy/wait/index.ts +90 -0
  71. package/piggy.ts +94 -39
  72. package/dist/piggy/open/index.d.ts +0 -4
  73. package/dist/piggy/open/index.d.ts.map +0 -1
  74. package/piggy/open/index.d.ts +0 -4
  75. package/piggy/open/index.d.ts.map +0 -1
  76. 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
  };
@@ -740,6 +740,19 @@ var BINARY_NAMES = {
740
740
  };
741
741
  function detectBinary(mode = "headless") {
742
742
  const cwd = process.cwd();
743
+ if (mode !== "headless" && mode !== "headful") {
744
+ if (existsSync(mode)) {
745
+ logger_default.success(`Binary found (custom path): ${mode}`);
746
+ return mode;
747
+ }
748
+ const abs = join(cwd, mode);
749
+ if (existsSync(abs)) {
750
+ logger_default.success(`Binary found (custom path): ${abs}`);
751
+ return abs;
752
+ }
753
+ logger_default.error(`Binary not found at custom path: ${mode}`);
754
+ return null;
755
+ }
743
756
  const name = BINARY_NAMES[mode];
744
757
  if (process.platform === "win32") {
745
758
  const p2 = join(cwd, `${name}.exe`);
@@ -745,6 +745,19 @@ var BINARY_NAMES = {
745
745
  };
746
746
  function detectBinary(mode = "headless") {
747
747
  const cwd = process.cwd();
748
+ if (mode !== "headless" && mode !== "headful") {
749
+ if (existsSync(mode)) {
750
+ logger_default.success(`Binary found (custom path): ${mode}`);
751
+ return mode;
752
+ }
753
+ const abs = join(cwd, mode);
754
+ if (existsSync(abs)) {
755
+ logger_default.success(`Binary found (custom path): ${abs}`);
756
+ return abs;
757
+ }
758
+ logger_default.error(`Binary not found at custom path: ${mode}`);
759
+ return null;
760
+ }
748
761
  const name = BINARY_NAMES[mode];
749
762
  if (process.platform === "win32") {
750
763
  const p2 = join(cwd, `${name}.exe`);
@@ -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,90 @@
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 interface FindByTextOptions {
16
+ text: string;
17
+ /** Narrow the search to descendants of this CSS selector. */
18
+ selector?: string;
19
+ /** If true, innerText must match exactly (trimmed). Default: false. */
20
+ exact?: boolean;
21
+ }
22
+ export interface FindByAttrOptions {
23
+ attr: string;
24
+ /** If omitted, matches any element that has the attribute at all. */
25
+ value?: string;
26
+ /** Optionally scope to a parent selector. */
27
+ selector?: string;
28
+ }
29
+ export interface FindByRoleOptions {
30
+ role: string;
31
+ /** Filter by aria-label or innerText containing this string. */
32
+ name?: string;
33
+ }
34
+ export interface FindClosestOptions {
35
+ /** CSS selector for the starting element. */
36
+ selector: string;
37
+ /** CSS selector for the ancestor to climb to. */
38
+ ancestor: string;
39
+ }
40
+ export interface FindFilterOptions {
41
+ selector: string;
42
+ attr: string;
43
+ value: string;
44
+ }
45
+ export declare class FindClient {
46
+ private client;
47
+ constructor(client: PiggyClient);
48
+ /** querySelectorAll — returns all matching elements. */
49
+ css(selector: string, tabId?: string): Promise<ElementDescriptor[]>;
50
+ /** Alias for css() — querySelectorAll. */
51
+ all(selector: string, tabId?: string): Promise<ElementDescriptor[]>;
52
+ /** querySelector — returns a single-element array or []. */
53
+ first(selector: string, tabId?: string): Promise<ElementDescriptor[]>;
54
+ /** Find elements whose innerText contains (or exactly matches) the given text. */
55
+ byText(opts: FindByTextOptions, tabId?: string): Promise<ElementDescriptor[]>;
56
+ /** Find elements by attribute name and optional value. */
57
+ byAttr(opts: FindByAttrOptions, tabId?: string): Promise<ElementDescriptor[]>;
58
+ /** getElementsByTagName. */
59
+ byTag(tag: string, tabId?: string): Promise<ElementDescriptor[]>;
60
+ /** Find inputs/textareas whose placeholder contains the given text. */
61
+ byPlaceholder(text: string, tabId?: string): Promise<ElementDescriptor[]>;
62
+ /** Find elements by ARIA role, optionally filtered by aria-label / innerText. */
63
+ byRole(opts: FindByRoleOptions, tabId?: string): Promise<ElementDescriptor[]>;
64
+ /** Direct children of the matched element. */
65
+ children(selector: string, tabId?: string): Promise<ElementDescriptor[]>;
66
+ /**
67
+ * Filter querySelectorAll results by attribute value substring.
68
+ * Equivalent to: querySelectorAll(selector).filter(el => el.attr.includes(value))
69
+ */
70
+ filter(opts: FindFilterOptions, tabId?: string): Promise<ElementDescriptor[]>;
71
+ /** Walk up the DOM from selector until ancestor matches. */
72
+ closest(opts: FindClosestOptions, tabId?: string): Promise<ElementDescriptor[]>;
73
+ /** parentElement of the matched element. */
74
+ parent(selector: string, tabId?: string): Promise<ElementDescriptor[]>;
75
+ /** Number of elements matching the selector. */
76
+ count(selector: string, tabId?: string): Promise<number>;
77
+ /** True if at least one element matches the selector. */
78
+ exists(selector: string, tabId?: string): Promise<boolean>;
79
+ /**
80
+ * True if the first matched element is visible
81
+ * (display !== none, visibility !== hidden, opacity !== 0).
82
+ */
83
+ visible(selector: string, tabId?: string): Promise<boolean>;
84
+ /** True if the first matched element is not disabled. */
85
+ enabled(selector: string, tabId?: string): Promise<boolean>;
86
+ /** True if the first matched checkbox/radio is checked. */
87
+ checked(selector: string, tabId?: string): Promise<boolean>;
88
+ }
89
+ export declare function createFindAPI(client: PiggyClient): FindClient;
90
+ //# 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,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAID,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAID,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,0CAA0C;IAC1C,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,kFAAkF;IAClF,MAAM,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAIhF,0DAA0D;IAC1D,MAAM,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAIhF,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,iFAAiF;IACjF,MAAM,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAIhF,8CAA8C;IAC9C,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAI3E;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAMhF,4DAA4D;IAC5D,OAAO,CAAC,IAAI,EAAE,kBAAkB,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAIlF,4CAA4C;IAC5C,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAMzE,gDAAgD;IAChD,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAI3D,yDAAyD;IACzD,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAI7D;;;OAGG;IACH,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"}
@@ -1,3 +1,3 @@
1
- export type BinaryMode = 'headless' | 'headful';
1
+ export type BinaryMode = 'headless' | 'headful' | (string & {});
2
2
  export declare function detectBinary(mode?: BinaryMode): string | null;
3
3
  //# sourceMappingURL=detect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../../piggy/launch/detect.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;AAOhD,wBAAgB,YAAY,CAAC,IAAI,GAAE,UAAuB,GAAG,MAAM,GAAG,IAAI,CA+BzE"}
1
+ {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../../piggy/launch/detect.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAOhE,wBAAgB,YAAY,CAAC,IAAI,GAAE,UAAuB,GAAG,MAAM,GAAG,IAAI,CAgDzE"}
@@ -1 +1 @@
1
- {"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../../piggy/launch/spawn.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AASzD,wBAAgB,eAAe,IAAI,IAAI,CAiBtC;AAED,wBAAsB,YAAY,CAAC,IAAI,GAAE,UAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CAqEjF;AAED,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE,UAAuB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAqCf;AAED,wBAAgB,WAAW,IAAI,IAAI,CAmBlC"}
1
+ {"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../../piggy/launch/spawn.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAQzD,wBAAgB,eAAe,IAAI,IAAI,CAgBtC;AAED,wBAAsB,YAAY,CAAC,IAAI,GAAE,UAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CAmEjF;AAED,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE,UAAuB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAmCf;AAED,wBAAgB,WAAW,IAAI,IAAI,CAmBlC"}
@@ -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"}