@computesdk/provider 1.0.32 → 1.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.
- package/dist/index.d.mts +531 -1
- package/dist/index.d.ts +531 -1
- package/dist/index.js +258 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +257 -3
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.d.mts
CHANGED
|
@@ -319,6 +319,408 @@ interface BlaxelProviderConfig {
|
|
|
319
319
|
/** Blaxel workspace */
|
|
320
320
|
workspace?: string;
|
|
321
321
|
}
|
|
322
|
+
/**
|
|
323
|
+
* Storage Provider Types
|
|
324
|
+
*
|
|
325
|
+
* Unified interface for object storage providers (S3, R2, Tigris, etc.)
|
|
326
|
+
*/
|
|
327
|
+
/**
|
|
328
|
+
* Storage object metadata
|
|
329
|
+
*/
|
|
330
|
+
interface StorageObject {
|
|
331
|
+
/** Bucket name */
|
|
332
|
+
bucket: string;
|
|
333
|
+
/** Object key/path */
|
|
334
|
+
key: string;
|
|
335
|
+
/** Object size in bytes */
|
|
336
|
+
size: number;
|
|
337
|
+
/** ETag (entity tag) for the object */
|
|
338
|
+
etag?: string;
|
|
339
|
+
/** Last modified date */
|
|
340
|
+
lastModified?: Date;
|
|
341
|
+
/** Optional metadata */
|
|
342
|
+
metadata?: Record<string, string>;
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Options for uploading objects
|
|
346
|
+
*/
|
|
347
|
+
interface UploadOptions {
|
|
348
|
+
/** MIME content type */
|
|
349
|
+
contentType?: string;
|
|
350
|
+
/** Custom metadata */
|
|
351
|
+
metadata?: Record<string, string>;
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Result from a download operation
|
|
355
|
+
*/
|
|
356
|
+
interface DownloadResult {
|
|
357
|
+
/** Object data as Uint8Array (cross-platform compatible) */
|
|
358
|
+
data: Uint8Array;
|
|
359
|
+
/** Object size in bytes */
|
|
360
|
+
size: number;
|
|
361
|
+
/** MIME content type */
|
|
362
|
+
contentType?: string;
|
|
363
|
+
/** ETag (entity tag) */
|
|
364
|
+
etag?: string;
|
|
365
|
+
/** Last modified date */
|
|
366
|
+
lastModified?: Date;
|
|
367
|
+
/** Custom metadata */
|
|
368
|
+
metadata?: Record<string, string>;
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Options for listing objects
|
|
372
|
+
*/
|
|
373
|
+
interface ListOptions {
|
|
374
|
+
/** Prefix to filter objects */
|
|
375
|
+
prefix?: string;
|
|
376
|
+
/** Maximum number of keys to return */
|
|
377
|
+
maxKeys?: number;
|
|
378
|
+
/** Continuation token for pagination */
|
|
379
|
+
continuationToken?: string;
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Result from a list operation
|
|
383
|
+
*/
|
|
384
|
+
interface ListResult {
|
|
385
|
+
/** List of objects */
|
|
386
|
+
objects: StorageObject[];
|
|
387
|
+
/** Whether there are more results */
|
|
388
|
+
truncated: boolean;
|
|
389
|
+
/** Continuation token for next page */
|
|
390
|
+
continuationToken?: string;
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* Base storage provider interface
|
|
394
|
+
*
|
|
395
|
+
* All storage providers (S3, R2, Tigris) implement this interface
|
|
396
|
+
*/
|
|
397
|
+
interface StorageProvider {
|
|
398
|
+
/** Upload data to storage */
|
|
399
|
+
upload(bucket: string, key: string, data: Uint8Array | string, options?: UploadOptions): Promise<StorageObject>;
|
|
400
|
+
/** Download data from storage */
|
|
401
|
+
download(bucket: string, key: string): Promise<DownloadResult>;
|
|
402
|
+
/** Delete object from storage */
|
|
403
|
+
delete(bucket: string, key: string): Promise<void>;
|
|
404
|
+
/** List objects in bucket */
|
|
405
|
+
list(bucket: string, options?: ListOptions): Promise<ListResult>;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
/**
|
|
409
|
+
* Browser Provider Types
|
|
410
|
+
*
|
|
411
|
+
* Types for browser providers (Browserbase, Kernel, etc.)
|
|
412
|
+
* Browser providers manage cloud browser sessions, distinct from sandbox providers
|
|
413
|
+
* which manage code execution environments.
|
|
414
|
+
*/
|
|
415
|
+
/**
|
|
416
|
+
* Browser session info returned from provider APIs
|
|
417
|
+
*/
|
|
418
|
+
interface BrowserSession {
|
|
419
|
+
/** Unique session identifier */
|
|
420
|
+
sessionId: string;
|
|
421
|
+
/** CDP or WebSocket connection URL */
|
|
422
|
+
connectUrl: string;
|
|
423
|
+
/** Current session status */
|
|
424
|
+
status: 'created' | 'running' | 'completed' | 'failed' | 'timed_out';
|
|
425
|
+
/** Session creation timestamp */
|
|
426
|
+
createdAt?: Date;
|
|
427
|
+
/** Provider-specific metadata */
|
|
428
|
+
metadata?: Record<string, unknown>;
|
|
429
|
+
}
|
|
430
|
+
/**
|
|
431
|
+
* Options for creating a browser session
|
|
432
|
+
*/
|
|
433
|
+
interface CreateBrowserSessionOptions {
|
|
434
|
+
/** Proxy configuration — true for provider default, or detailed config */
|
|
435
|
+
proxies?: boolean | ProxyConfig[];
|
|
436
|
+
/** Browser viewport dimensions */
|
|
437
|
+
viewport?: {
|
|
438
|
+
width: number;
|
|
439
|
+
height: number;
|
|
440
|
+
};
|
|
441
|
+
/** Session timeout in seconds */
|
|
442
|
+
timeout?: number;
|
|
443
|
+
/** Keep session alive after script disconnects */
|
|
444
|
+
keepAlive?: boolean;
|
|
445
|
+
/** Enable session recording (default: true) */
|
|
446
|
+
recording?: boolean;
|
|
447
|
+
/** Enable session logging (default: true) */
|
|
448
|
+
logging?: boolean;
|
|
449
|
+
/** Enable stealth/anti-detection mode */
|
|
450
|
+
stealth?: boolean;
|
|
451
|
+
/** Browser profile/context ID for session persistence */
|
|
452
|
+
profileId?: string;
|
|
453
|
+
/** Extension IDs to load */
|
|
454
|
+
extensionIds?: string[];
|
|
455
|
+
/** Region/datacenter preference */
|
|
456
|
+
region?: string;
|
|
457
|
+
/** Custom user metadata */
|
|
458
|
+
userMetadata?: Record<string, string>;
|
|
459
|
+
}
|
|
460
|
+
/**
|
|
461
|
+
* Proxy configuration for browser sessions
|
|
462
|
+
*/
|
|
463
|
+
interface ProxyConfig {
|
|
464
|
+
/** Proxy type */
|
|
465
|
+
type: 'residential' | 'isp' | 'datacenter' | 'custom';
|
|
466
|
+
/** Proxy server URL (for custom type) */
|
|
467
|
+
server?: string;
|
|
468
|
+
/** Proxy username */
|
|
469
|
+
username?: string;
|
|
470
|
+
/** Proxy password */
|
|
471
|
+
password?: string;
|
|
472
|
+
/** Geolocation targeting */
|
|
473
|
+
geolocation?: {
|
|
474
|
+
country?: string;
|
|
475
|
+
state?: string;
|
|
476
|
+
city?: string;
|
|
477
|
+
};
|
|
478
|
+
/** Domain pattern to route through this proxy */
|
|
479
|
+
domainPattern?: string;
|
|
480
|
+
}
|
|
481
|
+
/**
|
|
482
|
+
* Browser profile (persistent context — cookies, storage, etc.)
|
|
483
|
+
*/
|
|
484
|
+
interface BrowserProfile {
|
|
485
|
+
/** Unique profile identifier */
|
|
486
|
+
profileId: string;
|
|
487
|
+
/** Human-readable name */
|
|
488
|
+
name?: string;
|
|
489
|
+
/** Creation timestamp */
|
|
490
|
+
createdAt?: Date;
|
|
491
|
+
/** Provider-specific metadata */
|
|
492
|
+
metadata?: Record<string, unknown>;
|
|
493
|
+
}
|
|
494
|
+
/**
|
|
495
|
+
* Options for creating a browser profile
|
|
496
|
+
*/
|
|
497
|
+
interface CreateBrowserProfileOptions {
|
|
498
|
+
/** Human-readable name */
|
|
499
|
+
name?: string;
|
|
500
|
+
/** Custom metadata */
|
|
501
|
+
metadata?: Record<string, string>;
|
|
502
|
+
}
|
|
503
|
+
/**
|
|
504
|
+
* Browser extension
|
|
505
|
+
*/
|
|
506
|
+
interface BrowserExtension {
|
|
507
|
+
/** Unique extension identifier */
|
|
508
|
+
extensionId: string;
|
|
509
|
+
/** Extension name */
|
|
510
|
+
name?: string;
|
|
511
|
+
}
|
|
512
|
+
/**
|
|
513
|
+
* Options for uploading/creating a browser extension
|
|
514
|
+
*/
|
|
515
|
+
interface CreateBrowserExtensionOptions {
|
|
516
|
+
/** Extension file data */
|
|
517
|
+
file: Uint8Array | string;
|
|
518
|
+
/** Extension name */
|
|
519
|
+
name?: string;
|
|
520
|
+
}
|
|
521
|
+
/**
|
|
522
|
+
* Browser pool — pre-warmed browser instances for instant acquisition
|
|
523
|
+
*/
|
|
524
|
+
interface BrowserPool {
|
|
525
|
+
/** Unique pool identifier */
|
|
526
|
+
poolId: string;
|
|
527
|
+
/** Pool name */
|
|
528
|
+
name?: string;
|
|
529
|
+
/** Number of idle instances ready */
|
|
530
|
+
idleCount?: number;
|
|
531
|
+
/** Number of active instances in use */
|
|
532
|
+
activeCount?: number;
|
|
533
|
+
}
|
|
534
|
+
/**
|
|
535
|
+
* Options for creating a browser pool
|
|
536
|
+
*/
|
|
537
|
+
interface CreateBrowserPoolOptions {
|
|
538
|
+
/** Pool name */
|
|
539
|
+
name: string;
|
|
540
|
+
/** Desired number of pre-warmed instances */
|
|
541
|
+
size: number;
|
|
542
|
+
/** Default session options for pool instances */
|
|
543
|
+
sessionDefaults?: CreateBrowserSessionOptions;
|
|
544
|
+
}
|
|
545
|
+
/**
|
|
546
|
+
* Browser session log entry
|
|
547
|
+
*/
|
|
548
|
+
interface BrowserLog {
|
|
549
|
+
/** Timestamp */
|
|
550
|
+
timestamp: Date;
|
|
551
|
+
/** Log level */
|
|
552
|
+
level: 'info' | 'warn' | 'error' | 'debug';
|
|
553
|
+
/** Log message */
|
|
554
|
+
message: string;
|
|
555
|
+
/** Additional structured data */
|
|
556
|
+
data?: Record<string, unknown>;
|
|
557
|
+
}
|
|
558
|
+
/**
|
|
559
|
+
* Browser session recording
|
|
560
|
+
*/
|
|
561
|
+
interface BrowserRecording {
|
|
562
|
+
/** Recording identifier */
|
|
563
|
+
recordingId: string;
|
|
564
|
+
/** Session this recording belongs to */
|
|
565
|
+
sessionId: string;
|
|
566
|
+
/** Recording format */
|
|
567
|
+
format: 'rrweb' | 'mp4' | string;
|
|
568
|
+
/** URL to access the recording */
|
|
569
|
+
url?: string;
|
|
570
|
+
/** Raw recording data */
|
|
571
|
+
data?: unknown;
|
|
572
|
+
}
|
|
573
|
+
/**
|
|
574
|
+
* Screenshot options
|
|
575
|
+
*/
|
|
576
|
+
interface ScreenshotOptions {
|
|
577
|
+
/** Image format */
|
|
578
|
+
format?: 'png' | 'jpeg' | 'webp';
|
|
579
|
+
/** Quality (0-100, for jpeg/webp) */
|
|
580
|
+
quality?: number;
|
|
581
|
+
/** Capture full scrollable page */
|
|
582
|
+
fullPage?: boolean;
|
|
583
|
+
/** CSS selector to capture */
|
|
584
|
+
selector?: string;
|
|
585
|
+
}
|
|
586
|
+
/**
|
|
587
|
+
* PDF generation options
|
|
588
|
+
*/
|
|
589
|
+
interface PdfOptions {
|
|
590
|
+
/** Paper format */
|
|
591
|
+
format?: 'letter' | 'legal' | 'a4' | 'a3';
|
|
592
|
+
/** Print background graphics */
|
|
593
|
+
printBackground?: boolean;
|
|
594
|
+
/** Landscape orientation */
|
|
595
|
+
landscape?: boolean;
|
|
596
|
+
}
|
|
597
|
+
/**
|
|
598
|
+
* Browser session manager — core lifecycle operations
|
|
599
|
+
*/
|
|
600
|
+
interface BrowserSessionManager<TSession = any> {
|
|
601
|
+
/** Create a new browser session */
|
|
602
|
+
create(options?: CreateBrowserSessionOptions): Promise<ProviderBrowserSession<TSession>>;
|
|
603
|
+
/** Get an existing session by ID */
|
|
604
|
+
getById(sessionId: string): Promise<ProviderBrowserSession<TSession> | null>;
|
|
605
|
+
/** List active sessions */
|
|
606
|
+
list(): Promise<ProviderBrowserSession<TSession>[]>;
|
|
607
|
+
/** Destroy/terminate a session */
|
|
608
|
+
destroy(sessionId: string): Promise<void>;
|
|
609
|
+
}
|
|
610
|
+
/**
|
|
611
|
+
* Browser profile manager
|
|
612
|
+
*/
|
|
613
|
+
interface BrowserProfileManager {
|
|
614
|
+
/** Create a new profile */
|
|
615
|
+
create(options?: CreateBrowserProfileOptions): Promise<BrowserProfile>;
|
|
616
|
+
/** Get an existing profile */
|
|
617
|
+
get(profileId: string): Promise<BrowserProfile | null>;
|
|
618
|
+
/** List profiles */
|
|
619
|
+
list(): Promise<BrowserProfile[]>;
|
|
620
|
+
/** Delete a profile */
|
|
621
|
+
delete(profileId: string): Promise<void>;
|
|
622
|
+
}
|
|
623
|
+
/**
|
|
624
|
+
* Browser extension manager
|
|
625
|
+
*/
|
|
626
|
+
interface BrowserExtensionManager {
|
|
627
|
+
/** Upload/create an extension */
|
|
628
|
+
create(options: CreateBrowserExtensionOptions): Promise<BrowserExtension>;
|
|
629
|
+
/** Get an extension by ID */
|
|
630
|
+
get(extensionId: string): Promise<BrowserExtension | null>;
|
|
631
|
+
/** Delete an extension */
|
|
632
|
+
delete(extensionId: string): Promise<void>;
|
|
633
|
+
}
|
|
634
|
+
/**
|
|
635
|
+
* Browser pool manager (pre-warmed instances)
|
|
636
|
+
*/
|
|
637
|
+
interface BrowserPoolManager<TSession = any> {
|
|
638
|
+
/** Create a new pool */
|
|
639
|
+
create(options: CreateBrowserPoolOptions): Promise<BrowserPool>;
|
|
640
|
+
/** Get pool by ID */
|
|
641
|
+
get(poolId: string): Promise<BrowserPool | null>;
|
|
642
|
+
/** List pools */
|
|
643
|
+
list(): Promise<BrowserPool[]>;
|
|
644
|
+
/** Acquire a browser from the pool */
|
|
645
|
+
acquire(poolId: string): Promise<ProviderBrowserSession<TSession>>;
|
|
646
|
+
/** Release a browser back to the pool */
|
|
647
|
+
release(poolId: string, sessionId: string): Promise<void>;
|
|
648
|
+
/** Delete a pool */
|
|
649
|
+
delete(poolId: string): Promise<void>;
|
|
650
|
+
}
|
|
651
|
+
/**
|
|
652
|
+
* Browser log manager
|
|
653
|
+
*/
|
|
654
|
+
interface BrowserLogManager {
|
|
655
|
+
/** Get logs for a session */
|
|
656
|
+
list(sessionId: string): Promise<BrowserLog[]>;
|
|
657
|
+
}
|
|
658
|
+
/**
|
|
659
|
+
* Browser recording manager
|
|
660
|
+
*/
|
|
661
|
+
interface BrowserRecordingManager {
|
|
662
|
+
/** Get recording for a session */
|
|
663
|
+
get(sessionId: string): Promise<BrowserRecording | null>;
|
|
664
|
+
}
|
|
665
|
+
/**
|
|
666
|
+
* Browser page operations — native browser control (optional, provider-dependent)
|
|
667
|
+
*/
|
|
668
|
+
interface BrowserPageOperations<TSession = any> {
|
|
669
|
+
/** Navigate to a URL */
|
|
670
|
+
navigate(session: TSession, url: string): Promise<void>;
|
|
671
|
+
/** Take a screenshot */
|
|
672
|
+
screenshot(session: TSession, options?: ScreenshotOptions): Promise<Uint8Array>;
|
|
673
|
+
/** Generate a PDF */
|
|
674
|
+
pdf?(session: TSession, options?: PdfOptions): Promise<Uint8Array>;
|
|
675
|
+
/** Evaluate JavaScript in the page context */
|
|
676
|
+
evaluate(session: TSession, script: string): Promise<unknown>;
|
|
677
|
+
/** Get the current page HTML */
|
|
678
|
+
getContent(session: TSession): Promise<string>;
|
|
679
|
+
}
|
|
680
|
+
/**
|
|
681
|
+
* Provider browser session — wraps raw session with provider methods
|
|
682
|
+
* Analogous to ProviderSandbox for sandbox providers.
|
|
683
|
+
*/
|
|
684
|
+
interface ProviderBrowserSession<TSession = any> extends BrowserSession {
|
|
685
|
+
/** Get the provider that created this session */
|
|
686
|
+
getProvider(): BrowserProvider<TSession>;
|
|
687
|
+
/** Get the native provider session instance */
|
|
688
|
+
getInstance(): TSession;
|
|
689
|
+
/** Destroy this session */
|
|
690
|
+
destroy(): Promise<void>;
|
|
691
|
+
/** Take a screenshot (delegates to provider page ops or throws) */
|
|
692
|
+
screenshot(options?: ScreenshotOptions): Promise<Uint8Array>;
|
|
693
|
+
/** Get session logs */
|
|
694
|
+
getLogs(): Promise<BrowserLog[]>;
|
|
695
|
+
/** Get session recording */
|
|
696
|
+
getRecording(): Promise<BrowserRecording | null>;
|
|
697
|
+
}
|
|
698
|
+
/**
|
|
699
|
+
* Browser provider interface — creates and manages browser sessions
|
|
700
|
+
*
|
|
701
|
+
* This is the top-level interface for browser providers, analogous to
|
|
702
|
+
* the Provider interface for sandbox providers.
|
|
703
|
+
*/
|
|
704
|
+
interface BrowserProvider<TSession = any> {
|
|
705
|
+
/** Provider name/type */
|
|
706
|
+
readonly name: string;
|
|
707
|
+
/** Session lifecycle management */
|
|
708
|
+
readonly session: BrowserSessionManager<TSession>;
|
|
709
|
+
/** Get CDP/WebSocket connection URL for a session */
|
|
710
|
+
getConnectUrl(sessionId: string): Promise<string>;
|
|
711
|
+
/** Optional profile management (Browserbase contexts, Kernel profiles) */
|
|
712
|
+
readonly profile?: BrowserProfileManager;
|
|
713
|
+
/** Optional extension management */
|
|
714
|
+
readonly extension?: BrowserExtensionManager;
|
|
715
|
+
/** Optional pool management (pre-warmed instances) */
|
|
716
|
+
readonly pool?: BrowserPoolManager<TSession>;
|
|
717
|
+
/** Optional log access */
|
|
718
|
+
readonly logs?: BrowserLogManager;
|
|
719
|
+
/** Optional recording access */
|
|
720
|
+
readonly recording?: BrowserRecordingManager;
|
|
721
|
+
/** Optional native page operations */
|
|
722
|
+
readonly page?: BrowserPageOperations<TSession>;
|
|
723
|
+
}
|
|
322
724
|
|
|
323
725
|
/**
|
|
324
726
|
* Provider Factory - Creates providers from method definitions
|
|
@@ -621,6 +1023,134 @@ interface ComputeAPI<TInstance = any> {
|
|
|
621
1023
|
*/
|
|
622
1024
|
declare function createCompute<TInstance = any>(config: CreateComputeConfig<TInstance>): ComputeAPI<TInstance>;
|
|
623
1025
|
|
|
1026
|
+
/**
|
|
1027
|
+
* Browser Provider Factory - Creates browser providers from method definitions
|
|
1028
|
+
*
|
|
1029
|
+
* Eliminates boilerplate by auto-generating BrowserProvider/Session classes
|
|
1030
|
+
* from simple method definitions with automatic feature detection.
|
|
1031
|
+
* Mirrors the sandbox provider factory pattern.
|
|
1032
|
+
*/
|
|
1033
|
+
|
|
1034
|
+
/**
|
|
1035
|
+
* Session method implementations that provider authors supply
|
|
1036
|
+
*/
|
|
1037
|
+
interface BrowserSessionMethods<TSession = any, TConfig = any> {
|
|
1038
|
+
create: (config: TConfig, options?: CreateBrowserSessionOptions) => Promise<{
|
|
1039
|
+
session: TSession;
|
|
1040
|
+
sessionId: string;
|
|
1041
|
+
connectUrl: string;
|
|
1042
|
+
status?: BrowserSession['status'];
|
|
1043
|
+
}>;
|
|
1044
|
+
getById: (config: TConfig, sessionId: string) => Promise<{
|
|
1045
|
+
session: TSession;
|
|
1046
|
+
sessionId: string;
|
|
1047
|
+
connectUrl: string;
|
|
1048
|
+
status?: BrowserSession['status'];
|
|
1049
|
+
} | null>;
|
|
1050
|
+
list: (config: TConfig) => Promise<Array<{
|
|
1051
|
+
session: TSession;
|
|
1052
|
+
sessionId: string;
|
|
1053
|
+
connectUrl: string;
|
|
1054
|
+
status?: BrowserSession['status'];
|
|
1055
|
+
}>>;
|
|
1056
|
+
destroy: (config: TConfig, sessionId: string) => Promise<void>;
|
|
1057
|
+
getConnectUrl: (config: TConfig, sessionId: string) => Promise<string>;
|
|
1058
|
+
}
|
|
1059
|
+
/**
|
|
1060
|
+
* Profile method implementations
|
|
1061
|
+
*/
|
|
1062
|
+
interface BrowserProfileMethods<TConfig = any> {
|
|
1063
|
+
create: (config: TConfig, options?: CreateBrowserProfileOptions) => Promise<BrowserProfile>;
|
|
1064
|
+
get: (config: TConfig, profileId: string) => Promise<BrowserProfile | null>;
|
|
1065
|
+
list: (config: TConfig) => Promise<BrowserProfile[]>;
|
|
1066
|
+
delete: (config: TConfig, profileId: string) => Promise<void>;
|
|
1067
|
+
}
|
|
1068
|
+
/**
|
|
1069
|
+
* Extension method implementations
|
|
1070
|
+
*/
|
|
1071
|
+
interface BrowserExtensionMethods<TConfig = any> {
|
|
1072
|
+
create: (config: TConfig, options: CreateBrowserExtensionOptions) => Promise<BrowserExtension>;
|
|
1073
|
+
get: (config: TConfig, extensionId: string) => Promise<BrowserExtension | null>;
|
|
1074
|
+
delete: (config: TConfig, extensionId: string) => Promise<void>;
|
|
1075
|
+
}
|
|
1076
|
+
/**
|
|
1077
|
+
* Pool method implementations
|
|
1078
|
+
*/
|
|
1079
|
+
interface BrowserPoolMethods<TSession = any, TConfig = any> {
|
|
1080
|
+
create: (config: TConfig, options: CreateBrowserPoolOptions) => Promise<BrowserPool>;
|
|
1081
|
+
get: (config: TConfig, poolId: string) => Promise<BrowserPool | null>;
|
|
1082
|
+
list: (config: TConfig) => Promise<BrowserPool[]>;
|
|
1083
|
+
acquire: (config: TConfig, poolId: string) => Promise<{
|
|
1084
|
+
session: TSession;
|
|
1085
|
+
sessionId: string;
|
|
1086
|
+
connectUrl: string;
|
|
1087
|
+
}>;
|
|
1088
|
+
release: (config: TConfig, poolId: string, sessionId: string) => Promise<void>;
|
|
1089
|
+
delete: (config: TConfig, poolId: string) => Promise<void>;
|
|
1090
|
+
}
|
|
1091
|
+
/**
|
|
1092
|
+
* Log method implementations
|
|
1093
|
+
*/
|
|
1094
|
+
interface BrowserLogMethods<TConfig = any> {
|
|
1095
|
+
list: (config: TConfig, sessionId: string) => Promise<BrowserLog[]>;
|
|
1096
|
+
}
|
|
1097
|
+
/**
|
|
1098
|
+
* Recording method implementations
|
|
1099
|
+
*/
|
|
1100
|
+
interface BrowserRecordingMethods<TConfig = any> {
|
|
1101
|
+
get: (config: TConfig, sessionId: string) => Promise<BrowserRecording | null>;
|
|
1102
|
+
}
|
|
1103
|
+
/**
|
|
1104
|
+
* Page operation method implementations
|
|
1105
|
+
*/
|
|
1106
|
+
interface BrowserPageMethods<TSession = any> {
|
|
1107
|
+
navigate: (session: TSession, url: string) => Promise<void>;
|
|
1108
|
+
screenshot: (session: TSession, options?: ScreenshotOptions) => Promise<Uint8Array>;
|
|
1109
|
+
pdf?: (session: TSession, options?: PdfOptions) => Promise<Uint8Array>;
|
|
1110
|
+
evaluate: (session: TSession, script: string) => Promise<unknown>;
|
|
1111
|
+
getContent: (session: TSession) => Promise<string>;
|
|
1112
|
+
}
|
|
1113
|
+
/**
|
|
1114
|
+
* Full browser provider configuration for defineBrowserProvider()
|
|
1115
|
+
*/
|
|
1116
|
+
interface BrowserProviderConfig<TSession = any, TConfig = any> {
|
|
1117
|
+
name: string;
|
|
1118
|
+
methods: {
|
|
1119
|
+
session: BrowserSessionMethods<TSession, TConfig>;
|
|
1120
|
+
profile?: BrowserProfileMethods<TConfig>;
|
|
1121
|
+
extension?: BrowserExtensionMethods<TConfig>;
|
|
1122
|
+
pool?: BrowserPoolMethods<TSession, TConfig>;
|
|
1123
|
+
logs?: BrowserLogMethods<TConfig>;
|
|
1124
|
+
recording?: BrowserRecordingMethods<TConfig>;
|
|
1125
|
+
page?: BrowserPageMethods<TSession>;
|
|
1126
|
+
};
|
|
1127
|
+
}
|
|
1128
|
+
/**
|
|
1129
|
+
* Create a browser provider from method definitions
|
|
1130
|
+
*
|
|
1131
|
+
* Auto-generates all boilerplate classes and provides feature detection
|
|
1132
|
+
* based on which methods are implemented.
|
|
1133
|
+
*
|
|
1134
|
+
* @example
|
|
1135
|
+
* ```ts
|
|
1136
|
+
* export const browserbase = defineBrowserProvider<BrowserbaseSession, BrowserbaseConfig>({
|
|
1137
|
+
* name: 'browserbase',
|
|
1138
|
+
* methods: {
|
|
1139
|
+
* session: { create, getById, list, destroy, getConnectUrl },
|
|
1140
|
+
* profile: { create, get, list, delete },
|
|
1141
|
+
* logs: { list: getLogs },
|
|
1142
|
+
* recording: { get: getRecording },
|
|
1143
|
+
* },
|
|
1144
|
+
* });
|
|
1145
|
+
*
|
|
1146
|
+
* // Usage:
|
|
1147
|
+
* const provider = browserbase({ apiKey: 'bb_...' });
|
|
1148
|
+
* const session = await provider.session.create({ stealth: true });
|
|
1149
|
+
* console.log(session.connectUrl);
|
|
1150
|
+
* ```
|
|
1151
|
+
*/
|
|
1152
|
+
declare function defineBrowserProvider<TSession, TConfig = any>(providerConfig: BrowserProviderConfig<TSession, TConfig>): (config: TConfig) => BrowserProvider<TSession>;
|
|
1153
|
+
|
|
624
1154
|
/**
|
|
625
1155
|
* Utility functions for ComputeSDK
|
|
626
1156
|
*/
|
|
@@ -670,4 +1200,4 @@ declare function calculateBackoff(attempt: number, baseDelay?: number, jitterMax
|
|
|
670
1200
|
*/
|
|
671
1201
|
declare function escapeShellArg(arg: string): string;
|
|
672
1202
|
|
|
673
|
-
export { type BlaxelProviderConfig, type CloudflareProviderConfig, type CodesandboxProviderConfig, type ComputeAPI, type ComputeConfig, type ComputeFactoryConfig, type CreateComputeConfig, type CreateSandboxParams, type CreateSandboxParamsWithOptionalProvider, type CreateSnapshotOptions, type CreateTemplateOptions, type DaemonConfig, type DaytonaProviderConfig, type E2BProviderConfig, type ExtendTimeoutOptions, type ExtractProviderSandboxType, type FindOrCreateSandboxOptions, type FindSandboxOptions, type InfraProvider, type InfraProviderConfig, type InfraProviderMethods, type ListSnapshotsOptions, type ListTemplatesOptions, type ModalProviderConfig, type Provider, type ProviderConfig, type ProviderSandbox, type ProviderSandboxManager, type ProviderSnapshotManager, type ProviderTemplateManager, type RailwayProviderConfig, type RunloopProviderConfig, type SandboxMethods, type SnapshotMethods, type TemplateMethods, type TypedComputeAPI, type TypedProviderSandbox, type VercelProviderConfig, calculateBackoff, createCompute, defineCompute, defineInfraProvider, defineProvider, escapeShellArg };
|
|
1203
|
+
export { type BlaxelProviderConfig, type BrowserExtension, type BrowserExtensionManager, type BrowserExtensionMethods, type BrowserLog, type BrowserLogManager, type BrowserLogMethods, type BrowserPageMethods, type BrowserPageOperations, type BrowserPool, type BrowserPoolManager, type BrowserPoolMethods, type BrowserProfile, type BrowserProfileManager, type BrowserProfileMethods, type BrowserProvider, type BrowserProviderConfig, type BrowserRecording, type BrowserRecordingManager, type BrowserRecordingMethods, type BrowserSession, type BrowserSessionManager, type BrowserSessionMethods, type CloudflareProviderConfig, type CodesandboxProviderConfig, type ComputeAPI, type ComputeConfig, type ComputeFactoryConfig, type CreateBrowserExtensionOptions, type CreateBrowserPoolOptions, type CreateBrowserProfileOptions, type CreateBrowserSessionOptions, type CreateComputeConfig, type CreateSandboxParams, type CreateSandboxParamsWithOptionalProvider, type CreateSnapshotOptions, type CreateTemplateOptions, type DaemonConfig, type DaytonaProviderConfig, type DownloadResult, type E2BProviderConfig, type ExtendTimeoutOptions, type ExtractProviderSandboxType, type FindOrCreateSandboxOptions, type FindSandboxOptions, type InfraProvider, type InfraProviderConfig, type InfraProviderMethods, type ListOptions, type ListResult, type ListSnapshotsOptions, type ListTemplatesOptions, type ModalProviderConfig, type PdfOptions, type Provider, type ProviderBrowserSession, type ProviderConfig, type ProviderSandbox, type ProviderSandboxManager, type ProviderSnapshotManager, type ProviderTemplateManager, type ProxyConfig, type RailwayProviderConfig, type RunloopProviderConfig, type SandboxMethods, type ScreenshotOptions, type SnapshotMethods, type StorageObject, type StorageProvider, type TemplateMethods, type TypedComputeAPI, type TypedProviderSandbox, type UploadOptions, type VercelProviderConfig, calculateBackoff, createCompute, defineBrowserProvider, defineCompute, defineInfraProvider, defineProvider, escapeShellArg };
|