@drawcall/run 0.1.0 → 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.
- package/dist/index.d.ts +10 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -5
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +54 -4
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { JobStatus, RunResult, RunRequest, JobCreatedResponse, JobResponse, RunOptions, RunFinalResult, } from './types.js';
|
|
1
|
+
export type { JobStatus, RunResult, RunRequest, JobCreatedResponse, JobResponse, RunOptions, RunFinalResult, Event, ConsoleEvent, ScreenshotEvent, SystemEvent, InterceptEvent, ErrorEvent, } from './types.js';
|
|
2
2
|
import type { RunOptions, RunFinalResult } from './types.js';
|
|
3
3
|
/**
|
|
4
4
|
* Error thrown when run fails
|
|
@@ -24,13 +24,20 @@ export declare class TimeoutError extends RunError {
|
|
|
24
24
|
* const result = await run({
|
|
25
25
|
* url: 'https://example.com/app',
|
|
26
26
|
* maxDuration: 30,
|
|
27
|
+
* width: 1920, // viewport width (default: 1280)
|
|
28
|
+
* height: 1080, // viewport height (default: 720)
|
|
29
|
+
* assetMap: { 'https://old.com/asset.png': 'https://new.com/asset.png' },
|
|
27
30
|
* timeoutMs: 60000,
|
|
28
31
|
* pollIntervalMs: 2000,
|
|
29
32
|
* })
|
|
30
33
|
*
|
|
31
|
-
* console.log(result.
|
|
32
|
-
* console.log(result.stopCause) // "signal_complete", "max_duration_reached", or
|
|
34
|
+
* console.log(result.events) // Array of events (console, screenshot, system, intercept, error)
|
|
35
|
+
* console.log(result.stopCause) // "signal_complete", "max_duration_reached", or error string
|
|
33
36
|
* console.log(result.jobId) // Job ID for reference
|
|
37
|
+
*
|
|
38
|
+
* // Filter events by type
|
|
39
|
+
* const consoleLogs = result.events.filter(e => e.type === 'console')
|
|
40
|
+
* const screenshots = result.events.filter(e => e.type === 'screenshot')
|
|
34
41
|
* ```
|
|
35
42
|
*/
|
|
36
43
|
export declare function run(options: RunOptions): Promise<RunFinalResult>;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,YAAY,EACV,SAAS,EACT,SAAS,EACT,UAAU,EACV,kBAAkB,EAClB,WAAW,EACX,UAAU,EACV,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,YAAY,EACV,SAAS,EACT,SAAS,EACT,UAAU,EACV,kBAAkB,EAClB,WAAW,EACX,UAAU,EACV,cAAc,EAEd,KAAK,EACL,YAAY,EACZ,eAAe,EACf,WAAW,EACX,cAAc,EACd,UAAU,GACX,MAAM,YAAY,CAAA;AAEnB,OAAO,KAAK,EAA+C,UAAU,EAAE,cAAc,EAAS,MAAM,YAAY,CAAA;AAEhH;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;aACY,KAAK,CAAC,EAAE,MAAM;aAAkB,KAAK,CAAC,EAAE,OAAO;gBAAhF,OAAO,EAAE,MAAM,EAAkB,KAAK,CAAC,EAAE,MAAM,YAAA,EAAkB,KAAK,CAAC,EAAE,OAAO,YAAA;CAI7F;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,QAAQ;gBAC5B,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAI7C;AAOD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,CAyEtE"}
|
package/dist/index.js
CHANGED
|
@@ -37,23 +37,32 @@ const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
|
37
37
|
* const result = await run({
|
|
38
38
|
* url: 'https://example.com/app',
|
|
39
39
|
* maxDuration: 30,
|
|
40
|
+
* width: 1920, // viewport width (default: 1280)
|
|
41
|
+
* height: 1080, // viewport height (default: 720)
|
|
42
|
+
* assetMap: { 'https://old.com/asset.png': 'https://new.com/asset.png' },
|
|
40
43
|
* timeoutMs: 60000,
|
|
41
44
|
* pollIntervalMs: 2000,
|
|
42
45
|
* })
|
|
43
46
|
*
|
|
44
|
-
* console.log(result.
|
|
45
|
-
* console.log(result.stopCause) // "signal_complete", "max_duration_reached", or
|
|
47
|
+
* console.log(result.events) // Array of events (console, screenshot, system, intercept, error)
|
|
48
|
+
* console.log(result.stopCause) // "signal_complete", "max_duration_reached", or error string
|
|
46
49
|
* console.log(result.jobId) // Job ID for reference
|
|
50
|
+
*
|
|
51
|
+
* // Filter events by type
|
|
52
|
+
* const consoleLogs = result.events.filter(e => e.type === 'console')
|
|
53
|
+
* const screenshots = result.events.filter(e => e.type === 'screenshot')
|
|
47
54
|
* ```
|
|
48
55
|
*/
|
|
49
56
|
export async function run(options) {
|
|
50
|
-
const { url: targetUrl, maxDuration, assetMap, baseUrl = 'https://v1.run.api.drawcall.ai', timeoutMs = 600_000, // 10 minutes default
|
|
57
|
+
const { url: targetUrl, maxDuration, width, height, assetMap, baseUrl = 'https://v1.run.api.drawcall.ai', timeoutMs = 600_000, // 10 minutes default
|
|
51
58
|
pollIntervalMs = 2000, } = options;
|
|
52
59
|
const url = new URL('/run', baseUrl);
|
|
53
60
|
// Create the job
|
|
54
61
|
const payload = {
|
|
55
62
|
url: targetUrl,
|
|
56
63
|
...(maxDuration !== undefined && { maxDuration }),
|
|
64
|
+
...(width !== undefined && { width }),
|
|
65
|
+
...(height !== undefined && { height }),
|
|
57
66
|
...(assetMap !== undefined && { assetMap }),
|
|
58
67
|
};
|
|
59
68
|
const createResponse = await fetch(url, {
|
|
@@ -85,11 +94,11 @@ export async function run(options) {
|
|
|
85
94
|
}
|
|
86
95
|
return {
|
|
87
96
|
jobId,
|
|
88
|
-
|
|
97
|
+
events: job.result.events,
|
|
89
98
|
stopCause: job.result.stopCause,
|
|
90
99
|
};
|
|
91
100
|
case 'failed':
|
|
92
|
-
throw new RunError(
|
|
101
|
+
throw new RunError('Job failed', jobId);
|
|
93
102
|
case 'pending':
|
|
94
103
|
case 'running':
|
|
95
104
|
await sleep(pollIntervalMs);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,iCAAiC;AACjC,+EAA+E;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -8,14 +8,63 @@ export type JobStatus = 'pending' | 'running' | 'completed' | 'failed';
|
|
|
8
8
|
export interface RunRequest {
|
|
9
9
|
readonly url: string;
|
|
10
10
|
readonly maxDuration?: number;
|
|
11
|
+
readonly width?: number;
|
|
12
|
+
readonly height?: number;
|
|
11
13
|
readonly assetMap?: Record<string, string>;
|
|
12
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* Console log event from the browser
|
|
17
|
+
*/
|
|
18
|
+
export interface ConsoleEvent {
|
|
19
|
+
readonly timestamp: number;
|
|
20
|
+
readonly type: 'console';
|
|
21
|
+
readonly level: 'log' | 'warn' | 'error' | 'info' | 'debug';
|
|
22
|
+
readonly text: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Screenshot capture event
|
|
26
|
+
*/
|
|
27
|
+
export interface ScreenshotEvent {
|
|
28
|
+
readonly timestamp: number;
|
|
29
|
+
readonly type: 'screenshot';
|
|
30
|
+
readonly url: string;
|
|
31
|
+
readonly filename: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* System lifecycle event
|
|
35
|
+
*/
|
|
36
|
+
export interface SystemEvent {
|
|
37
|
+
readonly timestamp: number;
|
|
38
|
+
readonly type: 'system';
|
|
39
|
+
readonly event: 'start' | 'page_loaded' | 'complete_signal' | 'screenshot_signal' | 'timeout' | 'prefetch_start' | 'prefetch_complete';
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Asset interception event
|
|
43
|
+
*/
|
|
44
|
+
export interface InterceptEvent {
|
|
45
|
+
readonly timestamp: number;
|
|
46
|
+
readonly type: 'intercept';
|
|
47
|
+
readonly url: string;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Error event from various sources
|
|
51
|
+
*/
|
|
52
|
+
export interface ErrorEvent {
|
|
53
|
+
readonly timestamp: number;
|
|
54
|
+
readonly type: 'error';
|
|
55
|
+
readonly source: 'page' | 'handler' | 'prefetch' | 'screenshot';
|
|
56
|
+
readonly message: string;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Union of all event types
|
|
60
|
+
*/
|
|
61
|
+
export type Event = ConsoleEvent | ScreenshotEvent | SystemEvent | InterceptEvent | ErrorEvent;
|
|
13
62
|
/**
|
|
14
63
|
* Result of a successful run
|
|
15
64
|
*/
|
|
16
65
|
export interface RunResult {
|
|
17
|
-
readonly
|
|
18
|
-
readonly stopCause: 'signal_complete' | 'max_duration_reached' |
|
|
66
|
+
readonly events: readonly Event[];
|
|
67
|
+
readonly stopCause: 'signal_complete' | 'max_duration_reached' | string;
|
|
19
68
|
}
|
|
20
69
|
/**
|
|
21
70
|
* Response when a job is created (202 Accepted)
|
|
@@ -30,7 +79,6 @@ export interface JobResponse {
|
|
|
30
79
|
readonly jobId: string;
|
|
31
80
|
readonly status: JobStatus;
|
|
32
81
|
readonly result?: RunResult;
|
|
33
|
-
readonly error?: string;
|
|
34
82
|
}
|
|
35
83
|
/**
|
|
36
84
|
* Options for the run function
|
|
@@ -38,6 +86,8 @@ export interface JobResponse {
|
|
|
38
86
|
export interface RunOptions {
|
|
39
87
|
readonly url: string;
|
|
40
88
|
readonly maxDuration?: number;
|
|
89
|
+
readonly width?: number;
|
|
90
|
+
readonly height?: number;
|
|
41
91
|
readonly assetMap?: Record<string, string>;
|
|
42
92
|
readonly baseUrl?: string;
|
|
43
93
|
readonly timeoutMs?: number;
|
|
@@ -48,7 +98,7 @@ export interface RunOptions {
|
|
|
48
98
|
*/
|
|
49
99
|
export interface RunFinalResult {
|
|
50
100
|
readonly jobId: string;
|
|
51
|
-
readonly
|
|
101
|
+
readonly events: readonly Event[];
|
|
52
102
|
readonly stopCause: string;
|
|
53
103
|
}
|
|
54
104
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAA;AAEtE;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC3C;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|