@limrun/api 0.49.3 → 0.50.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/CHANGELOG.md +18 -0
- package/exec-client.d.mts +25 -1
- package/exec-client.d.mts.map +1 -1
- package/exec-client.d.ts +25 -1
- package/exec-client.d.ts.map +1 -1
- package/exec-client.js +362 -197
- package/exec-client.js.map +1 -1
- package/exec-client.mjs +361 -197
- package/exec-client.mjs.map +1 -1
- package/folder-sync-ignore.d.mts +15 -12
- package/folder-sync-ignore.d.mts.map +1 -1
- package/folder-sync-ignore.d.ts +15 -12
- package/folder-sync-ignore.d.ts.map +1 -1
- package/folder-sync-ignore.js +16 -19
- package/folder-sync-ignore.js.map +1 -1
- package/folder-sync-ignore.mjs +16 -19
- package/folder-sync-ignore.mjs.map +1 -1
- package/index.d.mts +1 -1
- package/index.d.mts.map +1 -1
- package/index.d.ts +1 -1
- package/index.d.ts.map +1 -1
- package/index.js.map +1 -1
- package/index.mjs.map +1 -1
- package/instance-client.d.mts +11 -0
- package/instance-client.d.mts.map +1 -1
- package/instance-client.d.ts +11 -0
- package/instance-client.d.ts.map +1 -1
- package/instance-client.js +10 -1
- package/instance-client.js.map +1 -1
- package/instance-client.mjs +7 -0
- package/instance-client.mjs.map +1 -1
- package/ios-client.d.mts +2 -33
- package/ios-client.d.mts.map +1 -1
- package/ios-client.d.ts +2 -33
- package/ios-client.d.ts.map +1 -1
- package/ios-client.js +8 -99
- package/ios-client.js.map +1 -1
- package/ios-client.mjs +4 -95
- package/ios-client.mjs.map +1 -1
- package/log-stream.d.mts +35 -0
- package/log-stream.d.mts.map +1 -0
- package/log-stream.d.ts +35 -0
- package/log-stream.d.ts.map +1 -0
- package/log-stream.js +103 -0
- package/log-stream.js.map +1 -0
- package/log-stream.mjs +99 -0
- package/log-stream.mjs.map +1 -0
- package/logcat-process.d.mts +40 -0
- package/logcat-process.d.mts.map +1 -0
- package/logcat-process.d.ts +40 -0
- package/logcat-process.d.ts.map +1 -0
- package/logcat-process.js +122 -0
- package/logcat-process.js.map +1 -0
- package/logcat-process.mjs +118 -0
- package/logcat-process.mjs.map +1 -0
- package/mise-tools.d.mts +4 -0
- package/mise-tools.d.mts.map +1 -0
- package/mise-tools.d.ts +4 -0
- package/mise-tools.d.ts.map +1 -0
- package/mise-tools.js +63 -0
- package/mise-tools.js.map +1 -0
- package/mise-tools.mjs +58 -0
- package/mise-tools.mjs.map +1 -0
- package/package.json +32 -1
- package/resources/daemon-client-shared.d.mts +11 -0
- package/resources/daemon-client-shared.d.mts.map +1 -1
- package/resources/daemon-client-shared.d.ts +11 -0
- package/resources/daemon-client-shared.d.ts.map +1 -1
- package/resources/daemon-client-shared.js +23 -0
- package/resources/daemon-client-shared.js.map +1 -1
- package/resources/daemon-client-shared.mjs +22 -0
- package/resources/daemon-client-shared.mjs.map +1 -1
- package/resources/gradle-instances-helpers.d.mts +12 -2
- package/resources/gradle-instances-helpers.d.mts.map +1 -1
- package/resources/gradle-instances-helpers.d.ts +12 -2
- package/resources/gradle-instances-helpers.d.ts.map +1 -1
- package/resources/gradle-instances-helpers.js +6 -0
- package/resources/gradle-instances-helpers.js.map +1 -1
- package/resources/gradle-instances-helpers.mjs +8 -2
- package/resources/gradle-instances-helpers.mjs.map +1 -1
- package/resources/xcode-instances-helpers.d.mts +6 -15
- package/resources/xcode-instances-helpers.d.mts.map +1 -1
- package/resources/xcode-instances-helpers.d.ts +6 -15
- package/resources/xcode-instances-helpers.d.ts.map +1 -1
- package/resources/xcode-instances-helpers.js +3 -18
- package/resources/xcode-instances-helpers.js.map +1 -1
- package/resources/xcode-instances-helpers.mjs +5 -20
- package/resources/xcode-instances-helpers.mjs.map +1 -1
- package/src/exec-client.ts +404 -198
- package/src/folder-sync-ignore.ts +21 -21
- package/src/index.ts +1 -0
- package/src/instance-client.ts +16 -0
- package/src/ios-client.ts +4 -129
- package/src/log-stream.ts +132 -0
- package/src/logcat-process.ts +151 -0
- package/src/mise-tools.ts +55 -0
- package/src/resources/daemon-client-shared.ts +33 -0
- package/src/resources/gradle-instances-helpers.ts +23 -0
- package/src/resources/xcode-instances-helpers.ts +13 -33
- package/src/version.ts +1 -1
- package/version.d.mts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/version.mjs +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-stream.mjs","sourceRoot":"","sources":["src/log-stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { EventEmitter } from 'events';
|
|
2
|
+
/**
|
|
3
|
+
* Handle for one logcat invocation on an Android instance.
|
|
4
|
+
*
|
|
5
|
+
* The instance runs `logcat` with the caller's arguments and serves its
|
|
6
|
+
* output over a per-run SSE stream (same machinery as session capture
|
|
7
|
+
* streams), batched every ~500ms. Lines arrive via 'lines'/'line'; 'exit'
|
|
8
|
+
* fires once with logcat's exit code, or -1 when stopped or the stream is
|
|
9
|
+
* lost.
|
|
10
|
+
*/
|
|
11
|
+
export interface LogcatProcessEvents {
|
|
12
|
+
lines: (lines: string[]) => void;
|
|
13
|
+
line: (line: string) => void;
|
|
14
|
+
error: (error: Error) => void;
|
|
15
|
+
exit: (exitCode: number) => void;
|
|
16
|
+
}
|
|
17
|
+
export declare class LogcatProcess extends EventEmitter {
|
|
18
|
+
private readonly apiUrl;
|
|
19
|
+
private readonly token;
|
|
20
|
+
private stopStream;
|
|
21
|
+
private runId;
|
|
22
|
+
private stopped;
|
|
23
|
+
private exited;
|
|
24
|
+
private readonly exitPromise;
|
|
25
|
+
private settleExit;
|
|
26
|
+
/** @internal */
|
|
27
|
+
constructor(apiUrl: string, token: string, args: string[]);
|
|
28
|
+
on<E extends keyof LogcatProcessEvents>(event: E, listener: LogcatProcessEvents[E]): this;
|
|
29
|
+
once<E extends keyof LogcatProcessEvents>(event: E, listener: LogcatProcessEvents[E]): this;
|
|
30
|
+
off<E extends keyof LogcatProcessEvents>(event: E, listener: LogcatProcessEvents[E]): this;
|
|
31
|
+
/** Resolves with logcat's exit code; -1 when stopped or the stream was lost. */
|
|
32
|
+
wait(): Promise<number>;
|
|
33
|
+
/** Stop the remote logcat process and close the stream. */
|
|
34
|
+
stop(): void;
|
|
35
|
+
private deleteRun;
|
|
36
|
+
private finish;
|
|
37
|
+
private fail;
|
|
38
|
+
private start;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=logcat-process.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logcat-process.d.mts","sourceRoot":"","sources":["src/logcat-process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC;;;;;;;;GAQG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACjC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC9B,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAUD,qBAAa,aAAc,SAAQ,YAAY;IAU3C,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAVxB,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkB;IAC9C,OAAO,CAAC,UAAU,CAA0B;IAE5C,gBAAgB;gBAEG,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EAC9B,IAAI,EAAE,MAAM,EAAE;IASP,EAAE,CAAC,CAAC,SAAS,MAAM,mBAAmB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI;IAIzF,IAAI,CAAC,CAAC,SAAS,MAAM,mBAAmB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI;IAI3F,GAAG,CAAC,CAAC,SAAS,MAAM,mBAAmB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI;IAInG,gFAAgF;IAChF,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAIvB,2DAA2D;IAC3D,IAAI,IAAI,IAAI;IAOZ,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,MAAM;IASd,OAAO,CAAC,IAAI;YASE,KAAK;CA+CpB"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { EventEmitter } from 'events';
|
|
2
|
+
/**
|
|
3
|
+
* Handle for one logcat invocation on an Android instance.
|
|
4
|
+
*
|
|
5
|
+
* The instance runs `logcat` with the caller's arguments and serves its
|
|
6
|
+
* output over a per-run SSE stream (same machinery as session capture
|
|
7
|
+
* streams), batched every ~500ms. Lines arrive via 'lines'/'line'; 'exit'
|
|
8
|
+
* fires once with logcat's exit code, or -1 when stopped or the stream is
|
|
9
|
+
* lost.
|
|
10
|
+
*/
|
|
11
|
+
export interface LogcatProcessEvents {
|
|
12
|
+
lines: (lines: string[]) => void;
|
|
13
|
+
line: (line: string) => void;
|
|
14
|
+
error: (error: Error) => void;
|
|
15
|
+
exit: (exitCode: number) => void;
|
|
16
|
+
}
|
|
17
|
+
export declare class LogcatProcess extends EventEmitter {
|
|
18
|
+
private readonly apiUrl;
|
|
19
|
+
private readonly token;
|
|
20
|
+
private stopStream;
|
|
21
|
+
private runId;
|
|
22
|
+
private stopped;
|
|
23
|
+
private exited;
|
|
24
|
+
private readonly exitPromise;
|
|
25
|
+
private settleExit;
|
|
26
|
+
/** @internal */
|
|
27
|
+
constructor(apiUrl: string, token: string, args: string[]);
|
|
28
|
+
on<E extends keyof LogcatProcessEvents>(event: E, listener: LogcatProcessEvents[E]): this;
|
|
29
|
+
once<E extends keyof LogcatProcessEvents>(event: E, listener: LogcatProcessEvents[E]): this;
|
|
30
|
+
off<E extends keyof LogcatProcessEvents>(event: E, listener: LogcatProcessEvents[E]): this;
|
|
31
|
+
/** Resolves with logcat's exit code; -1 when stopped or the stream was lost. */
|
|
32
|
+
wait(): Promise<number>;
|
|
33
|
+
/** Stop the remote logcat process and close the stream. */
|
|
34
|
+
stop(): void;
|
|
35
|
+
private deleteRun;
|
|
36
|
+
private finish;
|
|
37
|
+
private fail;
|
|
38
|
+
private start;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=logcat-process.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logcat-process.d.ts","sourceRoot":"","sources":["src/logcat-process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC;;;;;;;;GAQG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACjC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC9B,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAUD,qBAAa,aAAc,SAAQ,YAAY;IAU3C,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAVxB,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkB;IAC9C,OAAO,CAAC,UAAU,CAA0B;IAE5C,gBAAgB;gBAEG,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EAC9B,IAAI,EAAE,MAAM,EAAE;IASP,EAAE,CAAC,CAAC,SAAS,MAAM,mBAAmB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI;IAIzF,IAAI,CAAC,CAAC,SAAS,MAAM,mBAAmB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI;IAI3F,GAAG,CAAC,CAAC,SAAS,MAAM,mBAAmB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI;IAInG,gFAAgF;IAChF,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAIvB,2DAA2D;IAC3D,IAAI,IAAI,IAAI;IAOZ,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,MAAM;IASd,OAAO,CAAC,IAAI;YASE,KAAK;CA+CpB"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LogcatProcess = void 0;
|
|
4
|
+
const events_1 = require("events");
|
|
5
|
+
const proxy_transport_1 = require("./internal/proxy-transport.js");
|
|
6
|
+
const session_stream_1 = require("./internal/session-stream.js");
|
|
7
|
+
class LogcatProcess extends events_1.EventEmitter {
|
|
8
|
+
/** @internal */
|
|
9
|
+
constructor(apiUrl, token, args) {
|
|
10
|
+
super();
|
|
11
|
+
this.apiUrl = apiUrl;
|
|
12
|
+
this.token = token;
|
|
13
|
+
this.stopStream = null;
|
|
14
|
+
this.runId = null;
|
|
15
|
+
this.stopped = false;
|
|
16
|
+
this.exited = false;
|
|
17
|
+
this.exitPromise = new Promise((resolve) => {
|
|
18
|
+
this.settleExit = resolve;
|
|
19
|
+
});
|
|
20
|
+
void this.start(args);
|
|
21
|
+
}
|
|
22
|
+
on(event, listener) {
|
|
23
|
+
return super.on(event, listener);
|
|
24
|
+
}
|
|
25
|
+
once(event, listener) {
|
|
26
|
+
return super.once(event, listener);
|
|
27
|
+
}
|
|
28
|
+
off(event, listener) {
|
|
29
|
+
return super.off(event, listener);
|
|
30
|
+
}
|
|
31
|
+
/** Resolves with logcat's exit code; -1 when stopped or the stream was lost. */
|
|
32
|
+
wait() {
|
|
33
|
+
return this.exitPromise;
|
|
34
|
+
}
|
|
35
|
+
/** Stop the remote logcat process and close the stream. */
|
|
36
|
+
stop() {
|
|
37
|
+
if (this.stopped || this.exited)
|
|
38
|
+
return;
|
|
39
|
+
this.stopped = true;
|
|
40
|
+
this.deleteRun(this.runId);
|
|
41
|
+
this.finish(-1);
|
|
42
|
+
}
|
|
43
|
+
deleteRun(runId) {
|
|
44
|
+
if (!runId)
|
|
45
|
+
return;
|
|
46
|
+
// Fire and forget: the server's idle sweep reaps the run if this is lost.
|
|
47
|
+
void proxy_transport_1.nodeProxyTransport
|
|
48
|
+
.fetch(`${this.apiUrl}/logcat/${runId}`, {
|
|
49
|
+
method: 'DELETE',
|
|
50
|
+
headers: { Authorization: `Bearer ${this.token}` },
|
|
51
|
+
})
|
|
52
|
+
.catch(() => { });
|
|
53
|
+
}
|
|
54
|
+
finish(code) {
|
|
55
|
+
if (this.exited)
|
|
56
|
+
return;
|
|
57
|
+
this.exited = true;
|
|
58
|
+
this.stopStream?.();
|
|
59
|
+
this.stopStream = null;
|
|
60
|
+
this.settleExit(code);
|
|
61
|
+
this.emit('exit', code);
|
|
62
|
+
}
|
|
63
|
+
fail(error) {
|
|
64
|
+
if (this.exited)
|
|
65
|
+
return;
|
|
66
|
+
// The remote process must not outlive a lost stream; the idle sweep is
|
|
67
|
+
// only the fallback for when this delete is lost too.
|
|
68
|
+
this.deleteRun(this.runId);
|
|
69
|
+
this.emit('error', error);
|
|
70
|
+
this.finish(-1);
|
|
71
|
+
}
|
|
72
|
+
async start(args) {
|
|
73
|
+
let id;
|
|
74
|
+
try {
|
|
75
|
+
const response = await proxy_transport_1.nodeProxyTransport.fetch(`${this.apiUrl}/logcat`, {
|
|
76
|
+
method: 'POST',
|
|
77
|
+
headers: { Authorization: `Bearer ${this.token}`, 'Content-Type': 'application/json' },
|
|
78
|
+
body: JSON.stringify({ args }),
|
|
79
|
+
});
|
|
80
|
+
if (!response.ok) {
|
|
81
|
+
const text = await response.text().catch(() => '');
|
|
82
|
+
throw new Error(`logcat failed to start: HTTP ${response.status}${text ? ` ${text.trim()}` : ''}`);
|
|
83
|
+
}
|
|
84
|
+
const data = (await response.json());
|
|
85
|
+
if (!data.id) {
|
|
86
|
+
throw new Error('logcat failed to start: server returned no run id');
|
|
87
|
+
}
|
|
88
|
+
id = data.id;
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
this.fail(err instanceof Error ? err : new Error(String(err)));
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
if (this.stopped) {
|
|
95
|
+
// stop() raced the POST; kill the run it just created.
|
|
96
|
+
this.deleteRun(id);
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
this.runId = id;
|
|
100
|
+
this.stopStream = (0, session_stream_1.streamSessionEntries)({
|
|
101
|
+
url: `${this.apiUrl}/logcat/${id}/events`,
|
|
102
|
+
token: this.token,
|
|
103
|
+
onEntry: (entry) => {
|
|
104
|
+
if (entry.lines && entry.lines.length > 0) {
|
|
105
|
+
this.emit('lines', entry.lines);
|
|
106
|
+
for (const line of entry.lines) {
|
|
107
|
+
this.emit('line', line);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
if (entry.error) {
|
|
111
|
+
this.emit('error', new Error(entry.error));
|
|
112
|
+
}
|
|
113
|
+
if (typeof entry.exitCode === 'number') {
|
|
114
|
+
this.finish(entry.exitCode);
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
onError: (error) => this.fail(error),
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
exports.LogcatProcess = LogcatProcess;
|
|
122
|
+
//# sourceMappingURL=logcat-process.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logcat-process.js","sourceRoot":"","sources":["src/logcat-process.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { EventEmitter } from 'events';
|
|
2
|
+
import { nodeProxyTransport } from "./internal/proxy-transport.mjs";
|
|
3
|
+
import { streamSessionEntries } from "./internal/session-stream.mjs";
|
|
4
|
+
export class LogcatProcess extends EventEmitter {
|
|
5
|
+
/** @internal */
|
|
6
|
+
constructor(apiUrl, token, args) {
|
|
7
|
+
super();
|
|
8
|
+
this.apiUrl = apiUrl;
|
|
9
|
+
this.token = token;
|
|
10
|
+
this.stopStream = null;
|
|
11
|
+
this.runId = null;
|
|
12
|
+
this.stopped = false;
|
|
13
|
+
this.exited = false;
|
|
14
|
+
this.exitPromise = new Promise((resolve) => {
|
|
15
|
+
this.settleExit = resolve;
|
|
16
|
+
});
|
|
17
|
+
void this.start(args);
|
|
18
|
+
}
|
|
19
|
+
on(event, listener) {
|
|
20
|
+
return super.on(event, listener);
|
|
21
|
+
}
|
|
22
|
+
once(event, listener) {
|
|
23
|
+
return super.once(event, listener);
|
|
24
|
+
}
|
|
25
|
+
off(event, listener) {
|
|
26
|
+
return super.off(event, listener);
|
|
27
|
+
}
|
|
28
|
+
/** Resolves with logcat's exit code; -1 when stopped or the stream was lost. */
|
|
29
|
+
wait() {
|
|
30
|
+
return this.exitPromise;
|
|
31
|
+
}
|
|
32
|
+
/** Stop the remote logcat process and close the stream. */
|
|
33
|
+
stop() {
|
|
34
|
+
if (this.stopped || this.exited)
|
|
35
|
+
return;
|
|
36
|
+
this.stopped = true;
|
|
37
|
+
this.deleteRun(this.runId);
|
|
38
|
+
this.finish(-1);
|
|
39
|
+
}
|
|
40
|
+
deleteRun(runId) {
|
|
41
|
+
if (!runId)
|
|
42
|
+
return;
|
|
43
|
+
// Fire and forget: the server's idle sweep reaps the run if this is lost.
|
|
44
|
+
void nodeProxyTransport
|
|
45
|
+
.fetch(`${this.apiUrl}/logcat/${runId}`, {
|
|
46
|
+
method: 'DELETE',
|
|
47
|
+
headers: { Authorization: `Bearer ${this.token}` },
|
|
48
|
+
})
|
|
49
|
+
.catch(() => { });
|
|
50
|
+
}
|
|
51
|
+
finish(code) {
|
|
52
|
+
if (this.exited)
|
|
53
|
+
return;
|
|
54
|
+
this.exited = true;
|
|
55
|
+
this.stopStream?.();
|
|
56
|
+
this.stopStream = null;
|
|
57
|
+
this.settleExit(code);
|
|
58
|
+
this.emit('exit', code);
|
|
59
|
+
}
|
|
60
|
+
fail(error) {
|
|
61
|
+
if (this.exited)
|
|
62
|
+
return;
|
|
63
|
+
// The remote process must not outlive a lost stream; the idle sweep is
|
|
64
|
+
// only the fallback for when this delete is lost too.
|
|
65
|
+
this.deleteRun(this.runId);
|
|
66
|
+
this.emit('error', error);
|
|
67
|
+
this.finish(-1);
|
|
68
|
+
}
|
|
69
|
+
async start(args) {
|
|
70
|
+
let id;
|
|
71
|
+
try {
|
|
72
|
+
const response = await nodeProxyTransport.fetch(`${this.apiUrl}/logcat`, {
|
|
73
|
+
method: 'POST',
|
|
74
|
+
headers: { Authorization: `Bearer ${this.token}`, 'Content-Type': 'application/json' },
|
|
75
|
+
body: JSON.stringify({ args }),
|
|
76
|
+
});
|
|
77
|
+
if (!response.ok) {
|
|
78
|
+
const text = await response.text().catch(() => '');
|
|
79
|
+
throw new Error(`logcat failed to start: HTTP ${response.status}${text ? ` ${text.trim()}` : ''}`);
|
|
80
|
+
}
|
|
81
|
+
const data = (await response.json());
|
|
82
|
+
if (!data.id) {
|
|
83
|
+
throw new Error('logcat failed to start: server returned no run id');
|
|
84
|
+
}
|
|
85
|
+
id = data.id;
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
this.fail(err instanceof Error ? err : new Error(String(err)));
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
if (this.stopped) {
|
|
92
|
+
// stop() raced the POST; kill the run it just created.
|
|
93
|
+
this.deleteRun(id);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
this.runId = id;
|
|
97
|
+
this.stopStream = streamSessionEntries({
|
|
98
|
+
url: `${this.apiUrl}/logcat/${id}/events`,
|
|
99
|
+
token: this.token,
|
|
100
|
+
onEntry: (entry) => {
|
|
101
|
+
if (entry.lines && entry.lines.length > 0) {
|
|
102
|
+
this.emit('lines', entry.lines);
|
|
103
|
+
for (const line of entry.lines) {
|
|
104
|
+
this.emit('line', line);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
if (entry.error) {
|
|
108
|
+
this.emit('error', new Error(entry.error));
|
|
109
|
+
}
|
|
110
|
+
if (typeof entry.exitCode === 'number') {
|
|
111
|
+
this.finish(entry.exitCode);
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
onError: (error) => this.fail(error),
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=logcat-process.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logcat-process.mjs","sourceRoot":"","sources":["src/logcat-process.ts"],"names":[],"mappings":"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"}
|
package/mise-tools.d.mts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare function parseToolRequests(requests: string[]): Record<string, string>;
|
|
2
|
+
/** Save requested tool versions in the project configuration. */
|
|
3
|
+
export declare function writeMiseTools(directory: string, tools: Record<string, string>): Promise<string>;
|
|
4
|
+
//# sourceMappingURL=mise-tools.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mise-tools.d.mts","sourceRoot":"","sources":["src/mise-tools.ts"],"names":[],"mappings":"AAIA,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAY5E;AAWD,iEAAiE;AACjE,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CA0BtG"}
|
package/mise-tools.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare function parseToolRequests(requests: string[]): Record<string, string>;
|
|
2
|
+
/** Save requested tool versions in the project configuration. */
|
|
3
|
+
export declare function writeMiseTools(directory: string, tools: Record<string, string>): Promise<string>;
|
|
4
|
+
//# sourceMappingURL=mise-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mise-tools.d.ts","sourceRoot":"","sources":["src/mise-tools.ts"],"names":[],"mappings":"AAIA,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAY5E;AAWD,iEAAiE;AACjE,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CA0BtG"}
|
package/mise-tools.js
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseToolRequests = parseToolRequests;
|
|
4
|
+
exports.writeMiseTools = writeMiseTools;
|
|
5
|
+
const tslib_1 = require("./internal/tslib.js");
|
|
6
|
+
const promises_1 = tslib_1.__importDefault(require("fs/promises"));
|
|
7
|
+
const path_1 = tslib_1.__importDefault(require("path"));
|
|
8
|
+
const smol_toml_1 = require("smol-toml");
|
|
9
|
+
function parseToolRequests(requests) {
|
|
10
|
+
const tools = {};
|
|
11
|
+
for (const request of requests) {
|
|
12
|
+
const at = request.lastIndexOf('@');
|
|
13
|
+
if (at <= 0 || !request.slice(at + 1).trim())
|
|
14
|
+
throw new Error(`Expected tool@version, received ${JSON.stringify(request)}.`);
|
|
15
|
+
const name = request.slice(0, at);
|
|
16
|
+
if (!/^[A-Za-z0-9][A-Za-z0-9:_./-]*$/.test(name))
|
|
17
|
+
throw new Error(`Invalid tool name ${JSON.stringify(name)}.`);
|
|
18
|
+
tools[name] = request.slice(at + 1);
|
|
19
|
+
}
|
|
20
|
+
return tools;
|
|
21
|
+
}
|
|
22
|
+
async function readConfig(file) {
|
|
23
|
+
try {
|
|
24
|
+
return (0, smol_toml_1.parse)(await promises_1.default.readFile(file, 'utf8'));
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
if (error.code === 'ENOENT')
|
|
28
|
+
return {};
|
|
29
|
+
throw new Error(`Cannot read mise configuration ${file}: ${String(error)}`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/** Save requested tool versions in the project configuration. */
|
|
33
|
+
async function writeMiseTools(directory, tools) {
|
|
34
|
+
let file = path_1.default.join(directory, 'mise.toml');
|
|
35
|
+
// Update the highest-precedence existing file in this directory.
|
|
36
|
+
for (const name of ['mise.toml', '.mise.toml', 'mise.local.toml', '.mise.local.toml']) {
|
|
37
|
+
const candidate = path_1.default.join(directory, name);
|
|
38
|
+
try {
|
|
39
|
+
await promises_1.default.access(candidate);
|
|
40
|
+
file = candidate;
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
if (error.code !== 'ENOENT')
|
|
44
|
+
throw error;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
const config = await readConfig(file);
|
|
48
|
+
const existing = config['tools'];
|
|
49
|
+
if (existing !== undefined && (!existing || typeof existing !== 'object' || Array.isArray(existing)))
|
|
50
|
+
throw new Error(`Expected [tools] in ${file}.`);
|
|
51
|
+
config['tools'] = { ...existing, ...tools };
|
|
52
|
+
await promises_1.default.mkdir(path_1.default.dirname(file), { recursive: true });
|
|
53
|
+
const temporary = `${file}.${process.pid}.tmp`;
|
|
54
|
+
try {
|
|
55
|
+
await promises_1.default.writeFile(temporary, (0, smol_toml_1.stringify)(config), { mode: 0o600, flag: 'wx' });
|
|
56
|
+
await promises_1.default.rename(temporary, file);
|
|
57
|
+
}
|
|
58
|
+
finally {
|
|
59
|
+
await promises_1.default.rm(temporary, { force: true });
|
|
60
|
+
}
|
|
61
|
+
return file;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=mise-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mise-tools.js","sourceRoot":"","sources":["src/mise-tools.ts"],"names":[],"mappings":";;AAIA,8CAYC;AAYD,wCA0BC;;AAtDD,mEAA6B;AAC7B,wDAAwB;AACxB,yCAA6D;AAE7D,SAAgB,iBAAiB,CAAC,QAAkB;IAClD,MAAM,KAAK,GAA2B,EAAE,CAAC;IACzC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE;YAC1C,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjF,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAY;IACpC,IAAI,CAAC;QACH,OAAO,IAAA,iBAAK,EAAC,MAAM,kBAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC;AAED,iEAAiE;AAC1D,KAAK,UAAU,cAAc,CAAC,SAAiB,EAAE,KAA6B;IACnF,IAAI,IAAI,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAC7C,iEAAiE;IACjE,KAAK,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,EAAE,CAAC;QACtF,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC;YACH,MAAM,kBAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC3B,IAAI,GAAG,SAAS,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,MAAM,KAAK,CAAC;QACtE,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IACjC,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClG,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,GAAG,CAAC,CAAC;IAClD,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,GAAI,QAAkC,EAAE,GAAG,KAAK,EAAE,CAAC;IACvE,MAAM,kBAAE,CAAC,KAAK,CAAC,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC;IAC/C,IAAI,CAAC;QACH,MAAM,kBAAE,CAAC,SAAS,CAAC,SAAS,EAAE,IAAA,qBAAS,EAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9E,MAAM,kBAAE,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;YAAS,CAAC;QACT,MAAM,kBAAE,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/mise-tools.mjs
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import fs from 'fs/promises';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { parse, stringify } from 'smol-toml';
|
|
4
|
+
export function parseToolRequests(requests) {
|
|
5
|
+
const tools = {};
|
|
6
|
+
for (const request of requests) {
|
|
7
|
+
const at = request.lastIndexOf('@');
|
|
8
|
+
if (at <= 0 || !request.slice(at + 1).trim())
|
|
9
|
+
throw new Error(`Expected tool@version, received ${JSON.stringify(request)}.`);
|
|
10
|
+
const name = request.slice(0, at);
|
|
11
|
+
if (!/^[A-Za-z0-9][A-Za-z0-9:_./-]*$/.test(name))
|
|
12
|
+
throw new Error(`Invalid tool name ${JSON.stringify(name)}.`);
|
|
13
|
+
tools[name] = request.slice(at + 1);
|
|
14
|
+
}
|
|
15
|
+
return tools;
|
|
16
|
+
}
|
|
17
|
+
async function readConfig(file) {
|
|
18
|
+
try {
|
|
19
|
+
return parse(await fs.readFile(file, 'utf8'));
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
if (error.code === 'ENOENT')
|
|
23
|
+
return {};
|
|
24
|
+
throw new Error(`Cannot read mise configuration ${file}: ${String(error)}`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/** Save requested tool versions in the project configuration. */
|
|
28
|
+
export async function writeMiseTools(directory, tools) {
|
|
29
|
+
let file = path.join(directory, 'mise.toml');
|
|
30
|
+
// Update the highest-precedence existing file in this directory.
|
|
31
|
+
for (const name of ['mise.toml', '.mise.toml', 'mise.local.toml', '.mise.local.toml']) {
|
|
32
|
+
const candidate = path.join(directory, name);
|
|
33
|
+
try {
|
|
34
|
+
await fs.access(candidate);
|
|
35
|
+
file = candidate;
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
if (error.code !== 'ENOENT')
|
|
39
|
+
throw error;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
const config = await readConfig(file);
|
|
43
|
+
const existing = config['tools'];
|
|
44
|
+
if (existing !== undefined && (!existing || typeof existing !== 'object' || Array.isArray(existing)))
|
|
45
|
+
throw new Error(`Expected [tools] in ${file}.`);
|
|
46
|
+
config['tools'] = { ...existing, ...tools };
|
|
47
|
+
await fs.mkdir(path.dirname(file), { recursive: true });
|
|
48
|
+
const temporary = `${file}.${process.pid}.tmp`;
|
|
49
|
+
try {
|
|
50
|
+
await fs.writeFile(temporary, stringify(config), { mode: 0o600, flag: 'wx' });
|
|
51
|
+
await fs.rename(temporary, file);
|
|
52
|
+
}
|
|
53
|
+
finally {
|
|
54
|
+
await fs.rm(temporary, { force: true });
|
|
55
|
+
}
|
|
56
|
+
return file;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=mise-tools.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mise-tools.mjs","sourceRoot":"","sources":["src/mise-tools.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@limrun/api",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.50.0",
|
|
4
4
|
"description": "The official TypeScript library for the Limrun API",
|
|
5
5
|
"author": "Limrun <contact@limrun.com>",
|
|
6
6
|
"types": "./index.d.ts",
|
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
"https-proxy-agent": "7.0.6",
|
|
36
36
|
"ignore": "^7.0.5",
|
|
37
37
|
"proxy-from-env": "^2.1.0",
|
|
38
|
+
"smol-toml": "^1.8.0",
|
|
38
39
|
"undici": "7.29.0",
|
|
39
40
|
"ws": "^8.21.1",
|
|
40
41
|
"yauzl": "^3.4.0"
|
|
@@ -259,6 +260,36 @@
|
|
|
259
260
|
"./ios-shim.mjs": {
|
|
260
261
|
"default": "./ios-shim.mjs"
|
|
261
262
|
},
|
|
263
|
+
"./log-stream": {
|
|
264
|
+
"import": "./log-stream.mjs",
|
|
265
|
+
"require": "./log-stream.js"
|
|
266
|
+
},
|
|
267
|
+
"./log-stream.js": {
|
|
268
|
+
"default": "./log-stream.js"
|
|
269
|
+
},
|
|
270
|
+
"./log-stream.mjs": {
|
|
271
|
+
"default": "./log-stream.mjs"
|
|
272
|
+
},
|
|
273
|
+
"./logcat-process": {
|
|
274
|
+
"import": "./logcat-process.mjs",
|
|
275
|
+
"require": "./logcat-process.js"
|
|
276
|
+
},
|
|
277
|
+
"./logcat-process.js": {
|
|
278
|
+
"default": "./logcat-process.js"
|
|
279
|
+
},
|
|
280
|
+
"./logcat-process.mjs": {
|
|
281
|
+
"default": "./logcat-process.mjs"
|
|
282
|
+
},
|
|
283
|
+
"./mise-tools": {
|
|
284
|
+
"import": "./mise-tools.mjs",
|
|
285
|
+
"require": "./mise-tools.js"
|
|
286
|
+
},
|
|
287
|
+
"./mise-tools.js": {
|
|
288
|
+
"default": "./mise-tools.js"
|
|
289
|
+
},
|
|
290
|
+
"./mise-tools.mjs": {
|
|
291
|
+
"default": "./mise-tools.mjs"
|
|
292
|
+
},
|
|
262
293
|
"./pagination": {
|
|
263
294
|
"import": "./pagination.mjs",
|
|
264
295
|
"require": "./pagination.js"
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type ExecOptions } from "../exec-client.mjs";
|
|
1
2
|
export type LogLevel = 'none' | 'error' | 'warn' | 'info' | 'debug';
|
|
2
3
|
export interface BuildLog {
|
|
3
4
|
/** Exec ID assigned by the build daemon, e.g. build-1776140344112378000. */
|
|
@@ -77,4 +78,14 @@ export declare function mintAssetUploadUrls(assets: {
|
|
|
77
78
|
} & AssetUploadOptions) => Promise<AssetUploadUrls>;
|
|
78
79
|
}, name: string, ttl?: string, uploadOptions?: AssetUploadOptions): Promise<AssetUploadUrls>;
|
|
79
80
|
export declare function createDaemonLogger(prefix: string, logLevel: LogLevel): (level: "debug" | "info" | "warn" | "error", msg: string) => void;
|
|
81
|
+
export type BuildRunOptions = {
|
|
82
|
+
/** Working directory relative to the synced workspace. Defaults to ".". */
|
|
83
|
+
cwd?: string;
|
|
84
|
+
/** Extra KEY=VALUE entries. Sandbox paths remain managed; the last repeated user entry wins. */
|
|
85
|
+
env?: string[];
|
|
86
|
+
/** Command timeout in seconds, from 1 to 21600. Defaults to 3600. */
|
|
87
|
+
timeoutSeconds?: number;
|
|
88
|
+
};
|
|
89
|
+
/** Create the shared shell command runner for build sandboxes. */
|
|
90
|
+
export declare function createBuildRun(execOptions: ExecOptions): (commandLine: string, options?: BuildRunOptions) => import("../exec-client.mjs").ExecChildProcess;
|
|
80
91
|
//# sourceMappingURL=daemon-client-shared.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon-client-shared.d.mts","sourceRoot":"","sources":["../src/resources/daemon-client-shared.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"daemon-client-shared.d.mts","sourceRoot":"","sources":["../src/resources/daemon-client-shared.ts"],"names":[],"mappings":"AAMA,OAAO,EAAQ,KAAK,WAAW,EAAuB,2BAAuB;AAE7E,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAWpE,MAAM,WAAW,QAAQ;IACvB,4EAA4E;IAC5E,EAAE,EAAE,MAAM,CAAC;IAEX,wFAAwF;IACxF,MAAM,EAAE,MAAM,CAAC;IAEf,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,0DAA0D;IAC1D,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,2FAA2F;IAC3F,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,MAAM,EACrB,QAAQ,CAAC,EAAE,MAAM,GAChB;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAM7C;AAED,MAAM,MAAM,UAAU,GAAG;IACvB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjG;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gCAAgC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,SAAS,CAAC;AAE9C;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE;IACN,WAAW,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,kBAAkB,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;CACtG,EACD,IAAI,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,MAAM,EACZ,aAAa,CAAC,EAAE,kBAAkB,GACjC,OAAO,CAAC,eAAe,CAAC,CAQ1B;AAID,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,IAG3D,OAAO,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,KAAK,MAAM,UAQhE;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,2EAA2E;IAC3E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gGAAgG;IAChG,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,qEAAqE;IACrE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,kEAAkE;AAClE,wBAAgB,cAAc,CAAC,WAAW,EAAE,WAAW,IAC7C,aAAa,MAAM,EAAE,UAAU,eAAe,mDAmBvD"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type ExecOptions } from "../exec-client.js";
|
|
1
2
|
export type LogLevel = 'none' | 'error' | 'warn' | 'info' | 'debug';
|
|
2
3
|
export interface BuildLog {
|
|
3
4
|
/** Exec ID assigned by the build daemon, e.g. build-1776140344112378000. */
|
|
@@ -77,4 +78,14 @@ export declare function mintAssetUploadUrls(assets: {
|
|
|
77
78
|
} & AssetUploadOptions) => Promise<AssetUploadUrls>;
|
|
78
79
|
}, name: string, ttl?: string, uploadOptions?: AssetUploadOptions): Promise<AssetUploadUrls>;
|
|
79
80
|
export declare function createDaemonLogger(prefix: string, logLevel: LogLevel): (level: "debug" | "info" | "warn" | "error", msg: string) => void;
|
|
81
|
+
export type BuildRunOptions = {
|
|
82
|
+
/** Working directory relative to the synced workspace. Defaults to ".". */
|
|
83
|
+
cwd?: string;
|
|
84
|
+
/** Extra KEY=VALUE entries. Sandbox paths remain managed; the last repeated user entry wins. */
|
|
85
|
+
env?: string[];
|
|
86
|
+
/** Command timeout in seconds, from 1 to 21600. Defaults to 3600. */
|
|
87
|
+
timeoutSeconds?: number;
|
|
88
|
+
};
|
|
89
|
+
/** Create the shared shell command runner for build sandboxes. */
|
|
90
|
+
export declare function createBuildRun(execOptions: ExecOptions): (commandLine: string, options?: BuildRunOptions) => import("../exec-client.js").ExecChildProcess;
|
|
80
91
|
//# sourceMappingURL=daemon-client-shared.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon-client-shared.d.ts","sourceRoot":"","sources":["../src/resources/daemon-client-shared.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"daemon-client-shared.d.ts","sourceRoot":"","sources":["../src/resources/daemon-client-shared.ts"],"names":[],"mappings":"AAMA,OAAO,EAAQ,KAAK,WAAW,EAAuB,0BAAuB;AAE7E,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAWpE,MAAM,WAAW,QAAQ;IACvB,4EAA4E;IAC5E,EAAE,EAAE,MAAM,CAAC;IAEX,wFAAwF;IACxF,MAAM,EAAE,MAAM,CAAC;IAEf,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,0DAA0D;IAC1D,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,2FAA2F;IAC3F,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,MAAM,EACrB,QAAQ,CAAC,EAAE,MAAM,GAChB;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAM7C;AAED,MAAM,MAAM,UAAU,GAAG;IACvB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjG;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gCAAgC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,SAAS,CAAC;AAE9C;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE;IACN,WAAW,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,kBAAkB,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;CACtG,EACD,IAAI,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,MAAM,EACZ,aAAa,CAAC,EAAE,kBAAkB,GACjC,OAAO,CAAC,eAAe,CAAC,CAQ1B;AAID,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,IAG3D,OAAO,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,KAAK,MAAM,UAQhE;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,2EAA2E;IAC3E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gGAAgG;IAChG,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,qEAAqE;IACrE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,kEAAkE;AAClE,wBAAgB,cAAc,CAAC,WAAW,EAAE,WAAW,IAC7C,aAAa,MAAM,EAAE,UAAU,eAAe,kDAmBvD"}
|