nothing-browser 0.0.15 → 0.0.17

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.
@@ -0,0 +1,23 @@
1
+ import { PiggyClient } from "../client";
2
+ export declare class TabPool {
3
+ private client;
4
+ private size;
5
+ private seedUrl;
6
+ private name;
7
+ private idle;
8
+ private busy;
9
+ private queue;
10
+ constructor(client: PiggyClient, size: number, seedUrl: string, name: string);
11
+ init(): Promise<void>;
12
+ acquire(): Promise<string>;
13
+ release(tabId: string): void;
14
+ withTab<T>(fn: (tabId: string) => Promise<T>): Promise<T>;
15
+ close(): Promise<void>;
16
+ get stats(): {
17
+ idle: number;
18
+ busy: number;
19
+ queued: number;
20
+ total: number;
21
+ };
22
+ }
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../piggy/pool/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGxC,qBAAa,OAAO;IAMhB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,IAAI;IARd,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,IAAI,CAAqB;IACjC,OAAO,CAAC,KAAK,CAAmC;gBAGtC,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM;IAGhB,IAAI;IASV,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAY1B,OAAO,CAAC,KAAK,EAAE,MAAM;IAWf,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IASzD,KAAK;IASX,IAAI,KAAK;;;;;MAOR;CACF"}
@@ -1,7 +1,9 @@
1
1
  import { PiggyClient } from "../client";
2
+ import { TabPool } from "../pool";
2
3
  export declare let humanMode: boolean;
3
4
  export declare function setClient(c: PiggyClient | null): void;
4
5
  export declare function setHumanMode(v: boolean): void;
5
- export declare function createSiteObject(name: string, registeredUrl: string, client: PiggyClient, tabId: string): any;
6
+ export declare function createSiteObject(name: string, registeredUrl: string, client: PiggyClient, tabId: string, pool?: TabPool): any;
7
+ export type SiteObject = ReturnType<typeof createSiteObject>;
6
8
  export declare function createExposedAPI<T extends Record<string, (data: any) => any>>(site: any, apiName: string, handlers: T): Promise<void>;
7
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../piggy/register/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAOxC,eAAO,IAAI,SAAS,SAAQ,CAAC;AAE7B,wBAAgB,SAAS,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI,QAAuB;AACtE,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,QAAoB;AAgB3D,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,OAmcvG;AAED,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CASrI"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../piggy/register/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAMxC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGlC,eAAO,IAAI,SAAS,SAAQ,CAAC;AAE7B,wBAAgB,SAAS,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI,QAAuB;AACtE,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,QAAoB;AAgB3D,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,OAAO,OAucf;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE7D,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,GAAG,CAAC,EAC3E,IAAI,EAAE,GAAG,EACT,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,CAAC,GACV,OAAO,CAAC,IAAI,CAAC,CASf"}
@@ -7,15 +7,36 @@ export type BeforeMiddleware = (ctx: {
7
7
  set: any;
8
8
  }) => void | Promise<void>;
9
9
  export type RouteHandler = (params: Record<string, string>, query: Record<string, string>, body: any) => Promise<any>;
10
+ export interface RouteParameter {
11
+ name: string;
12
+ in: "query" | "path" | "header" | "cookie";
13
+ description?: string;
14
+ required?: boolean;
15
+ schema?: Record<string, any>;
16
+ }
17
+ export interface RouteDetail {
18
+ tags?: string[];
19
+ summary?: string;
20
+ description?: string;
21
+ deprecated?: boolean;
22
+ hide?: boolean;
23
+ parameters?: RouteParameter[];
24
+ }
10
25
  export interface RouteConfig {
11
26
  path: string;
12
27
  method: "GET" | "POST" | "PUT" | "DELETE";
13
28
  handler: RouteHandler;
14
29
  ttl: number;
15
30
  before: BeforeMiddleware[];
31
+ detail?: RouteDetail;
16
32
  }
17
33
  export declare const routeRegistry: Map<string, RouteConfig>;
18
34
  export declare const keepAliveSites: Set<string>;
19
- export declare function startServer(port: number, hostname?: string): Promise<Elysia>;
35
+ export declare function startServer(port: number, hostname?: string, openapiOpts?: {
36
+ title?: string;
37
+ version?: string;
38
+ description?: string;
39
+ path?: string;
40
+ }): Promise<Elysia>;
20
41
  export declare function stopServer(): void;
21
42
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../piggy/server/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIhC,MAAM,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE;IACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,IAAI,EAAE,GAAG,CAAC;IACV,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,GAAG,EAAE,GAAG,CAAC;CACV,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE3B,MAAM,MAAM,YAAY,GAAG,CACzB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,IAAI,EAAE,GAAG,KACN,OAAO,CAAC,GAAG,CAAC,CAAC;AAElB,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC1C,OAAO,EAAE,YAAY,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,gBAAgB,EAAE,CAAC;CAC5B;AAED,eAAO,MAAM,aAAa,0BAAiC,CAAC;AAC5D,eAAO,MAAM,cAAc,aAAoB,CAAC;AAmBhD,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAoFrF;AAED,wBAAgB,UAAU,SAGzB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../piggy/server/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAKhC,MAAM,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE;IACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,IAAI,EAAE,GAAG,CAAC;IACV,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,GAAG,EAAE,GAAG,CAAC;CACV,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE3B,MAAM,MAAM,YAAY,GAAG,CACzB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,IAAI,EAAE,GAAG,KACN,OAAO,CAAC,GAAG,CAAC,CAAC;AAElB,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC1C,OAAO,EAAE,YAAY,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,eAAO,MAAM,aAAa,0BAAiC,CAAC;AAC5D,eAAO,MAAM,cAAc,aAAoB,CAAC;AAmBhD,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,QAAQ,SAAY,EACpB,WAAW,CAAC,EAAE;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GACA,OAAO,CAAC,MAAM,CAAC,CA6GjB;AAED,wBAAgB,UAAU,SAGzB"}
@@ -0,0 +1,22 @@
1
+ export type FieldType = "string" | "number" | "boolean" | "object" | "array";
2
+ export interface FieldSchema {
3
+ type: FieldType;
4
+ required?: boolean;
5
+ default?: any;
6
+ }
7
+ export interface StoreSchema {
8
+ name: string;
9
+ destination: string;
10
+ fields: Record<string, FieldSchema>;
11
+ }
12
+ export interface PiggyStoreConfig {
13
+ stores: StoreSchema[];
14
+ }
15
+ export declare function loadStoreConfig(configPath?: string): PiggyStoreConfig;
16
+ export declare function getSchema(storeName: string): StoreSchema | null;
17
+ export declare function shapeRecord(data: Record<string, any>, schema: StoreSchema): Record<string, any>;
18
+ export declare function storeRecord(storeName: string, data: Record<string, any> | Record<string, any>[]): Promise<{
19
+ stored: number;
20
+ skipped: number;
21
+ }>;
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../piggy/store/index.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE7E,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,GAAG,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAMD,wBAAgB,eAAe,CAAC,UAAU,SAAuB,GAAG,gBAAgB,CAiBnF;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAG/D;AAID,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAyC/F;AA4FD,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAChD,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAsC9C"}
package/dist/piggy.d.ts CHANGED
@@ -1,222 +1,10 @@
1
- import { type BinaryMode } from "./piggy/launch/detect";
2
- import type { Logger } from "ernest-logger";
3
- import type { Elysia } from "elysia";
4
- import type { RouteHandler, BeforeMiddleware, RouteConfig } from "./piggy/server";
5
- export type TabMode = "tab" | "process";
6
- /** Returned by createSiteObject — full API surface of a registered site. */
7
- export interface SiteObject {
8
- /** Internal name used when registering. */
9
- _name: string;
10
- /** Internal CDP / socket tab ID. */
11
- _tabId: string;
12
- navigate(url?: string, opts?: {
13
- retries?: number;
14
- }): Promise<void>;
15
- reload(): Promise<void>;
16
- goBack(): Promise<void>;
17
- goForward(): Promise<void>;
18
- waitForNavigation(): Promise<void>;
19
- title(): Promise<string>;
20
- /** Returns the last known URL (synchronous — does NOT hit the browser). */
21
- url(): string;
22
- content(): Promise<string>;
23
- wait(ms: number): Promise<void>;
24
- waitForSelector(selector: string, timeout?: number): Promise<void>;
25
- waitForVisible(selector: string, timeout?: number): Promise<void>;
26
- waitForResponse(pattern: string, timeout?: number): Promise<void>;
27
- addInitScript(js: string | (() => void)): Promise<SiteObject>;
28
- on(event: "navigate", handler: (url: string) => void): () => void;
29
- on(event: string, handler: (data: unknown) => void): () => void;
30
- off(event: string, handler: (data: unknown) => void): void;
31
- click(selector: string, opts?: {
32
- retries?: number;
33
- timeout?: number;
34
- }): Promise<boolean>;
35
- doubleClick(selector: string): Promise<boolean>;
36
- hover(selector: string): Promise<boolean>;
37
- type(selector: string, text: string, opts?: {
38
- delay?: number;
39
- retries?: number;
40
- fact?: boolean;
41
- wpm?: number;
42
- }): Promise<boolean>;
43
- select(selector: string, value: string): Promise<boolean>;
44
- evaluate<T = unknown>(js: string | ((...args: unknown[]) => T), ...args: unknown[]): Promise<T>;
45
- keyboard: {
46
- press(key: string): Promise<boolean>;
47
- combo(combo: string): Promise<boolean>;
48
- };
49
- mouse: {
50
- move(x: number, y: number): Promise<boolean>;
51
- drag(from: {
52
- x: number;
53
- y: number;
54
- }, to: {
55
- x: number;
56
- y: number;
57
- }): Promise<boolean>;
58
- };
59
- scroll: {
60
- to(selector: string): Promise<boolean>;
61
- by(px: number): Promise<boolean>;
62
- };
63
- fetchText(selector: string): Promise<string | null>;
64
- fetchLinks(selector: string): Promise<string[]>;
65
- fetchImages(selector: string): Promise<string[]>;
66
- search: {
67
- css(query: string): Promise<unknown>;
68
- id(query: string): Promise<unknown>;
69
- };
70
- screenshot(filePath?: string): Promise<string>;
71
- pdf(filePath?: string): Promise<string>;
72
- blockImages(): Promise<void>;
73
- unblockImages(): Promise<void>;
74
- cookies: {
75
- set(name: string, value: string, domain: string, path?: string): Promise<void>;
76
- get(name: string): Promise<unknown>;
77
- delete(name: string): Promise<void>;
78
- list(): Promise<unknown[]>;
79
- };
80
- intercept: {
81
- block(pattern: string): Promise<void>;
82
- redirect(pattern: string, redirectUrl: string): Promise<void>;
83
- headers(pattern: string, headers: Record<string, string>): Promise<void>;
84
- respond(pattern: string, handlerOrResponse: {
85
- status?: number;
86
- contentType?: string;
87
- body: string;
88
- } | ((req: {
89
- url: string;
90
- method: string;
91
- }) => {
92
- status?: number;
93
- contentType?: string;
94
- body: string;
95
- })): Promise<SiteObject>;
96
- modifyResponse(pattern: string, handler: (response: {
97
- body: string;
98
- status: number;
99
- headers: Record<string, string>;
100
- }) => Promise<{
101
- body?: string;
102
- status?: number;
103
- headers?: Record<string, string>;
104
- } | void> | void): Promise<SiteObject>;
105
- clear(): Promise<void>;
106
- };
107
- capture: {
108
- start(): Promise<void>;
109
- stop(): Promise<void>;
110
- requests(): Promise<unknown[]>;
111
- ws(): Promise<unknown[]>;
112
- cookies(): Promise<unknown[]>;
113
- storage(): Promise<unknown>;
114
- clear(): Promise<void>;
115
- };
116
- session: {
117
- export(): Promise<unknown>;
118
- import(data: unknown): Promise<void>;
119
- };
120
- exposeFunction(fnName: string, handler: (data: unknown) => Promise<unknown> | unknown): Promise<SiteObject>;
121
- unexposeFunction(fnName: string): Promise<SiteObject>;
122
- clearExposedFunctions(): Promise<SiteObject>;
123
- exposeAndInject(fnName: string, handler: (data: unknown) => Promise<unknown> | unknown, injectionJs: string | ((fnName: string) => string)): Promise<SiteObject>;
124
- api(path: string, handler: RouteHandler, opts?: {
125
- ttl?: number;
126
- before?: BeforeMiddleware[];
127
- method?: "GET" | "POST" | "PUT" | "DELETE";
128
- }): SiteObject;
129
- noclose(): SiteObject;
130
- close(): Promise<void>;
131
- }
132
- export interface RouteSummary {
133
- site: string;
134
- method: RouteConfig["method"];
135
- path: string;
136
- ttl: number;
137
- middlewareCount: number;
138
- }
139
- /**
140
- * Proxy that runs the same method on every site in parallel (Promise.all).
141
- * The return type mirrors the SiteObject API but every method returns
142
- * `Promise<ReturnType[]>` instead of a single value.
143
- */
144
- export type AllProxy = {
145
- [K in keyof SiteObject]: SiteObject[K] extends (...args: infer A) => Promise<infer R> ? (...args: A) => Promise<R[]> : SiteObject[K] extends (...args: infer A) => infer R ? (...args: A) => Promise<R[]> : never;
1
+ import { type SiteObject } from "./piggy/register";
2
+ declare const piggy: any;
3
+ type TypedPiggy<Sites extends string> = typeof piggy & {
4
+ [K in Sites]: SiteObject;
146
5
  };
147
- /**
148
- * Proxy that runs the same method on every site in parallel and returns a
149
- * Record keyed by site `_name`.
150
- */
151
- export type DiffProxy = {
152
- [K in keyof SiteObject]: SiteObject[K] extends (...args: infer A) => Promise<infer R> ? (...args: A) => Promise<Record<string, R>> : SiteObject[K] extends (...args: infer A) => infer R ? (...args: A) => Promise<Record<string, R>> : never;
153
- };
154
- export interface LaunchOptions {
155
- /** Whether to open a separate browser process per registered site or share a single one via tabs. Default: `"tab"`. */
156
- mode?: TabMode;
157
- /** Whether to run the browser binary in headed or headless mode. Default: `"headless"`. */
158
- binary?: BinaryMode;
159
- }
160
- export interface RegisterOptions {
161
- /** Override the binary mode for this site's dedicated process (only used when `mode === "process"`). */
162
- binary?: BinaryMode;
163
- }
164
- export interface ServeOptions {
165
- hostname?: string;
166
- }
167
- export interface Piggy {
168
- /**
169
- * Spawns the Nothing Browser binary and connects the internal socket client.
170
- * Must be called before any other method.
171
- */
172
- launch(opts?: LaunchOptions): Promise<Piggy>;
173
- /**
174
- * Registers a named site at the given URL.
175
- * After registration `piggy[name]` is available as a `SiteObject`.
176
- */
177
- register(name: string, url: string, opts?: RegisterOptions): Promise<Piggy>;
178
- /** Enables or disables human-simulation mode (random delays, typos, smooth scrolling). */
179
- actHuman(enable: boolean): Piggy;
180
- /** Changes the tab/process mode *before* the next `register()` call. */
181
- mode(m: TabMode): Piggy;
182
- /** Exposes a Node.js function to the browser's global scope on the default (or specified) tab. */
183
- expose(name: string, handler: (data: unknown) => Promise<unknown> | unknown, tabId?: string): Promise<Piggy>;
184
- /** Removes a previously exposed function from the browser. */
185
- unexpose(name: string, tabId?: string): Promise<Piggy>;
186
- /** Starts an Elysia HTTP server that exposes all registered `.api()` routes. */
187
- serve(port: number, opts?: ServeOptions): Promise<Elysia>;
188
- /** Stops the running Elysia server. */
189
- stopServer(): void;
190
- /** Returns a summary of every mounted HTTP route. */
191
- routes(): RouteSummary[];
192
- /**
193
- * Returns a proxy that calls the same method on **all** given sites in
194
- * parallel (via `Promise.all`) and returns an array of results.
195
- */
196
- all(sites: SiteObject[]): AllProxy;
197
- /**
198
- * Returns a proxy that calls the same method on **all** given sites in
199
- * parallel and returns a `Record<siteName, result>` object.
200
- */
201
- diff(sites: SiteObject[]): DiffProxy;
202
- /**
203
- * Gracefully shuts down all tabs and the browser process.
204
- * Pass `{ force: true }` to skip graceful close and kill immediately.
205
- */
206
- close(opts?: {
207
- force?: boolean;
208
- }): Promise<void>;
209
- /** Detects the Nothing Browser binary path for the given mode. */
210
- detect(mode?: BinaryMode): string | null;
211
- /** The ernest-logger instance used internally. */
212
- logger: Logger;
213
- /**
214
- * After `piggy.register("mysite", url)` you can access the site as
215
- * `piggy.mysite`. The index signature covers those dynamic properties.
216
- */
217
- [site: string]: SiteObject | unknown;
218
- }
219
- declare const piggy: Piggy;
6
+ export declare function usePiggy<Sites extends string>(): TypedPiggy<Sites>;
7
+ export type { SiteObject };
220
8
  export default piggy;
221
9
  export { piggy };
222
10
  //# sourceMappingURL=piggy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"piggy.d.ts","sourceRoot":"","sources":["../piggy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"piggy.d.ts","sourceRoot":"","sources":["../piggy.ts"],"names":[],"mappings":"AAIA,OAAO,EAA6C,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAY9F,QAAA,MAAM,KAAK,EAAE,GAqKZ,CAAC;AAMF,KAAK,UAAU,CAAC,KAAK,SAAS,MAAM,IAAI,OAAO,KAAK,GAAG;KACpD,CAAC,IAAI,KAAK,GAAG,UAAU;CACzB,CAAC;AAEF,wBAAgB,QAAQ,CAAC,KAAK,SAAS,MAAM,KAAK,UAAU,CAAC,KAAK,CAAC,CAElE;AAED,YAAY,EAAE,UAAU,EAAE,CAAC;AAC3B,eAAe,KAAK,CAAC;AACrB,OAAO,EAAE,KAAK,EAAE,CAAC"}