@limrun/api 0.2.0 → 0.5.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/CHANGELOG.md +100 -0
- package/README.md +1 -1
- package/client.d.mts +3 -2
- package/client.d.mts.map +1 -1
- package/client.d.ts +3 -2
- package/client.d.ts.map +1 -1
- package/client.js +2 -2
- package/client.js.map +1 -1
- package/client.mjs +1 -1
- package/client.mjs.map +1 -1
- package/index.d.mts +1 -0
- package/index.d.ts +1 -0
- package/index.js +2 -0
- package/index.js.map +1 -1
- package/index.mjs +1 -0
- package/package.json +4 -2
- package/resources/android-instances-helpers.d.mts +30 -0
- package/resources/android-instances-helpers.d.mts.map +1 -0
- package/resources/android-instances-helpers.d.ts +30 -0
- package/resources/android-instances-helpers.d.ts.map +1 -0
- package/resources/android-instances-helpers.js +129 -0
- package/resources/android-instances-helpers.js.map +1 -0
- package/resources/android-instances-helpers.mjs +123 -0
- package/resources/android-instances-helpers.mjs.map +1 -0
- package/resources/assets-helpers.d.mts +22 -0
- package/resources/assets-helpers.d.mts.map +1 -0
- package/resources/assets-helpers.d.ts +22 -0
- package/resources/assets-helpers.d.ts.map +1 -0
- package/resources/assets-helpers.js +41 -0
- package/resources/assets-helpers.js.map +1 -0
- package/resources/assets-helpers.mjs +37 -0
- package/resources/assets-helpers.mjs.map +1 -0
- package/resources/assets.d.mts +12 -2
- package/resources/assets.d.mts.map +1 -1
- package/resources/assets.d.ts +12 -2
- package/resources/assets.d.ts.map +1 -1
- package/resources/index.d.mts +2 -1
- package/resources/index.d.mts.map +1 -1
- package/resources/index.d.ts +2 -1
- package/resources/index.d.ts.map +1 -1
- package/resources/index.js +2 -2
- package/resources/index.js.map +1 -1
- package/resources/index.mjs +1 -1
- package/resources/index.mjs.map +1 -1
- package/src/client.ts +5 -1
- package/src/index.ts +2 -0
- package/src/resources/android-instances-helpers.ts +159 -0
- package/src/resources/assets-helpers.ts +63 -0
- package/src/resources/assets.ts +17 -1
- package/src/resources/index.ts +3 -1
- 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,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.startAdbTunnel = void 0;
|
|
4
|
+
exports.startTcpProxy = startTcpProxy;
|
|
5
|
+
const tslib_1 = require("../internal/tslib.js");
|
|
6
|
+
const child_process_1 = require("child_process");
|
|
7
|
+
const net = tslib_1.__importStar(require("net"));
|
|
8
|
+
const ws_1 = require("ws");
|
|
9
|
+
/**
|
|
10
|
+
* Opens a WebSocket TCP proxy for the ADB port and connects the local adb
|
|
11
|
+
* client to it.
|
|
12
|
+
*/
|
|
13
|
+
const startAdbTunnel = async (androidInstance, hostname, port) => {
|
|
14
|
+
if (!androidInstance.status.adbWebSocketUrl) {
|
|
15
|
+
throw new Error('ADB WebSocket URL is not available');
|
|
16
|
+
}
|
|
17
|
+
const { address, close } = await startTcpProxy(androidInstance.status.adbWebSocketUrl, androidInstance.status.token, hostname ?? '127.0.0.1', port ?? 0);
|
|
18
|
+
try {
|
|
19
|
+
await new Promise((resolve, reject) => {
|
|
20
|
+
(0, child_process_1.exec)(`adb connect ${address.address}:${address.port}`, (err) => {
|
|
21
|
+
if (err)
|
|
22
|
+
return reject(err);
|
|
23
|
+
resolve();
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
close();
|
|
29
|
+
throw err;
|
|
30
|
+
}
|
|
31
|
+
return { address, close };
|
|
32
|
+
};
|
|
33
|
+
exports.startAdbTunnel = startAdbTunnel;
|
|
34
|
+
/**
|
|
35
|
+
* Starts a one-shot TCP → WebSocket proxy.
|
|
36
|
+
*
|
|
37
|
+
* The function creates a local TCP server that listens on an ephemeral port on
|
|
38
|
+
* 127.0.0.1. As soon as the **first** TCP client connects the server stops
|
|
39
|
+
* accepting further connections and forwards all traffic between that client
|
|
40
|
+
* and `remoteURL` through an authenticated WebSocket. If you need to proxy
|
|
41
|
+
* more than one TCP connection, call `startTcpProxy` again to create a new
|
|
42
|
+
* proxy instance.
|
|
43
|
+
*
|
|
44
|
+
* @param remoteURL Remote WebSocket endpoint (e.g. wss://example.com/instance)
|
|
45
|
+
* @param token Bearer token sent as `Authorization` header
|
|
46
|
+
* @param hostname Optional IP address to listen on. Default is 127.0.0.1
|
|
47
|
+
* @param port Optional port number to listen on. Default is to ask Node.js
|
|
48
|
+
* to find an available non-privileged port.
|
|
49
|
+
*/
|
|
50
|
+
async function startTcpProxy(remoteURL, token, hostname, port) {
|
|
51
|
+
return new Promise((resolve, reject) => {
|
|
52
|
+
const server = net.createServer();
|
|
53
|
+
let ws;
|
|
54
|
+
let pingInterval;
|
|
55
|
+
// close helper
|
|
56
|
+
const close = () => {
|
|
57
|
+
if (pingInterval) {
|
|
58
|
+
clearInterval(pingInterval);
|
|
59
|
+
pingInterval = undefined;
|
|
60
|
+
}
|
|
61
|
+
if (ws && ws.readyState === ws_1.WebSocket.OPEN) {
|
|
62
|
+
ws.close(1000, 'close');
|
|
63
|
+
}
|
|
64
|
+
if (server.listening) {
|
|
65
|
+
server.close();
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
// No AbortController support – proxy can be closed via the returned handle
|
|
69
|
+
// TCP server error
|
|
70
|
+
server.once('error', (err) => {
|
|
71
|
+
close();
|
|
72
|
+
reject(new Error(`TCP server error: ${err.message}`));
|
|
73
|
+
});
|
|
74
|
+
// Listening
|
|
75
|
+
server.once('listening', () => {
|
|
76
|
+
const address = server.address();
|
|
77
|
+
if (!address || typeof address === 'string') {
|
|
78
|
+
close();
|
|
79
|
+
return reject(new Error('Failed to obtain listening address'));
|
|
80
|
+
}
|
|
81
|
+
resolve({ address, close });
|
|
82
|
+
});
|
|
83
|
+
// On first TCP connection
|
|
84
|
+
server.on('connection', (tcpSocket) => {
|
|
85
|
+
// Single-connection proxy
|
|
86
|
+
server.close();
|
|
87
|
+
ws = new ws_1.WebSocket(remoteURL, {
|
|
88
|
+
headers: { Authorization: `Bearer ${token}` },
|
|
89
|
+
perMessageDeflate: false,
|
|
90
|
+
});
|
|
91
|
+
// WebSocket error
|
|
92
|
+
ws.once('error', (err) => {
|
|
93
|
+
console.error('WebSocket error:', err);
|
|
94
|
+
tcpSocket.destroy();
|
|
95
|
+
close();
|
|
96
|
+
});
|
|
97
|
+
ws.once('open', () => {
|
|
98
|
+
const socket = ws; // non-undefined after open
|
|
99
|
+
pingInterval = setInterval(() => {
|
|
100
|
+
if (socket.readyState === ws_1.WebSocket.OPEN) {
|
|
101
|
+
socket.ping();
|
|
102
|
+
}
|
|
103
|
+
}, 30000);
|
|
104
|
+
// TCP → WS
|
|
105
|
+
tcpSocket.on('data', (chunk) => {
|
|
106
|
+
if (socket.readyState === ws_1.WebSocket.OPEN) {
|
|
107
|
+
socket.send(chunk);
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
// WS → TCP
|
|
111
|
+
socket.on('message', (data) => {
|
|
112
|
+
if (!tcpSocket.destroyed) {
|
|
113
|
+
tcpSocket.write(data);
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
// Mutual close
|
|
118
|
+
tcpSocket.on('close', close);
|
|
119
|
+
tcpSocket.on('error', (err) => {
|
|
120
|
+
console.error('TCP socket error:', err);
|
|
121
|
+
close();
|
|
122
|
+
});
|
|
123
|
+
ws.on('close', () => tcpSocket.destroy());
|
|
124
|
+
});
|
|
125
|
+
// Start listening
|
|
126
|
+
server.listen(port, hostname);
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=android-instances-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"android-instances-helpers.js","sourceRoot":"","sources":["../src/resources/android-instances-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { exec } from 'child_process';
|
|
2
|
+
import * as net from 'net';
|
|
3
|
+
import { WebSocket } from 'ws';
|
|
4
|
+
/**
|
|
5
|
+
* Opens a WebSocket TCP proxy for the ADB port and connects the local adb
|
|
6
|
+
* client to it.
|
|
7
|
+
*/
|
|
8
|
+
export const startAdbTunnel = async (androidInstance, hostname, port) => {
|
|
9
|
+
if (!androidInstance.status.adbWebSocketUrl) {
|
|
10
|
+
throw new Error('ADB WebSocket URL is not available');
|
|
11
|
+
}
|
|
12
|
+
const { address, close } = await startTcpProxy(androidInstance.status.adbWebSocketUrl, androidInstance.status.token, hostname ?? '127.0.0.1', port ?? 0);
|
|
13
|
+
try {
|
|
14
|
+
await new Promise((resolve, reject) => {
|
|
15
|
+
exec(`adb connect ${address.address}:${address.port}`, (err) => {
|
|
16
|
+
if (err)
|
|
17
|
+
return reject(err);
|
|
18
|
+
resolve();
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
close();
|
|
24
|
+
throw err;
|
|
25
|
+
}
|
|
26
|
+
return { address, close };
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Starts a one-shot TCP → WebSocket proxy.
|
|
30
|
+
*
|
|
31
|
+
* The function creates a local TCP server that listens on an ephemeral port on
|
|
32
|
+
* 127.0.0.1. As soon as the **first** TCP client connects the server stops
|
|
33
|
+
* accepting further connections and forwards all traffic between that client
|
|
34
|
+
* and `remoteURL` through an authenticated WebSocket. If you need to proxy
|
|
35
|
+
* more than one TCP connection, call `startTcpProxy` again to create a new
|
|
36
|
+
* proxy instance.
|
|
37
|
+
*
|
|
38
|
+
* @param remoteURL Remote WebSocket endpoint (e.g. wss://example.com/instance)
|
|
39
|
+
* @param token Bearer token sent as `Authorization` header
|
|
40
|
+
* @param hostname Optional IP address to listen on. Default is 127.0.0.1
|
|
41
|
+
* @param port Optional port number to listen on. Default is to ask Node.js
|
|
42
|
+
* to find an available non-privileged port.
|
|
43
|
+
*/
|
|
44
|
+
export async function startTcpProxy(remoteURL, token, hostname, port) {
|
|
45
|
+
return new Promise((resolve, reject) => {
|
|
46
|
+
const server = net.createServer();
|
|
47
|
+
let ws;
|
|
48
|
+
let pingInterval;
|
|
49
|
+
// close helper
|
|
50
|
+
const close = () => {
|
|
51
|
+
if (pingInterval) {
|
|
52
|
+
clearInterval(pingInterval);
|
|
53
|
+
pingInterval = undefined;
|
|
54
|
+
}
|
|
55
|
+
if (ws && ws.readyState === WebSocket.OPEN) {
|
|
56
|
+
ws.close(1000, 'close');
|
|
57
|
+
}
|
|
58
|
+
if (server.listening) {
|
|
59
|
+
server.close();
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
// No AbortController support – proxy can be closed via the returned handle
|
|
63
|
+
// TCP server error
|
|
64
|
+
server.once('error', (err) => {
|
|
65
|
+
close();
|
|
66
|
+
reject(new Error(`TCP server error: ${err.message}`));
|
|
67
|
+
});
|
|
68
|
+
// Listening
|
|
69
|
+
server.once('listening', () => {
|
|
70
|
+
const address = server.address();
|
|
71
|
+
if (!address || typeof address === 'string') {
|
|
72
|
+
close();
|
|
73
|
+
return reject(new Error('Failed to obtain listening address'));
|
|
74
|
+
}
|
|
75
|
+
resolve({ address, close });
|
|
76
|
+
});
|
|
77
|
+
// On first TCP connection
|
|
78
|
+
server.on('connection', (tcpSocket) => {
|
|
79
|
+
// Single-connection proxy
|
|
80
|
+
server.close();
|
|
81
|
+
ws = new WebSocket(remoteURL, {
|
|
82
|
+
headers: { Authorization: `Bearer ${token}` },
|
|
83
|
+
perMessageDeflate: false,
|
|
84
|
+
});
|
|
85
|
+
// WebSocket error
|
|
86
|
+
ws.once('error', (err) => {
|
|
87
|
+
console.error('WebSocket error:', err);
|
|
88
|
+
tcpSocket.destroy();
|
|
89
|
+
close();
|
|
90
|
+
});
|
|
91
|
+
ws.once('open', () => {
|
|
92
|
+
const socket = ws; // non-undefined after open
|
|
93
|
+
pingInterval = setInterval(() => {
|
|
94
|
+
if (socket.readyState === WebSocket.OPEN) {
|
|
95
|
+
socket.ping();
|
|
96
|
+
}
|
|
97
|
+
}, 30000);
|
|
98
|
+
// TCP → WS
|
|
99
|
+
tcpSocket.on('data', (chunk) => {
|
|
100
|
+
if (socket.readyState === WebSocket.OPEN) {
|
|
101
|
+
socket.send(chunk);
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
// WS → TCP
|
|
105
|
+
socket.on('message', (data) => {
|
|
106
|
+
if (!tcpSocket.destroyed) {
|
|
107
|
+
tcpSocket.write(data);
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
// Mutual close
|
|
112
|
+
tcpSocket.on('close', close);
|
|
113
|
+
tcpSocket.on('error', (err) => {
|
|
114
|
+
console.error('TCP socket error:', err);
|
|
115
|
+
close();
|
|
116
|
+
});
|
|
117
|
+
ws.on('close', () => tcpSocket.destroy());
|
|
118
|
+
});
|
|
119
|
+
// Start listening
|
|
120
|
+
server.listen(port, hostname);
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=android-instances-helpers.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"android-instances-helpers.mjs","sourceRoot":"","sources":["../src/resources/android-instances-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { RequestOptions } from "../internal/request-options.mjs";
|
|
2
|
+
import { Assets as GeneratedAssets } from "./assets.mjs";
|
|
3
|
+
export interface AssetGetOrUploadParams {
|
|
4
|
+
/**
|
|
5
|
+
* The path to the file to upload.
|
|
6
|
+
*/
|
|
7
|
+
path: string;
|
|
8
|
+
/**
|
|
9
|
+
* The name for the asset. Defaults to the name of the file given in the filePath parameter.
|
|
10
|
+
*/
|
|
11
|
+
name?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface AssetGetOrUploadResponse {
|
|
14
|
+
id: string;
|
|
15
|
+
name: string;
|
|
16
|
+
signedDownloadUrl: string;
|
|
17
|
+
md5: string;
|
|
18
|
+
}
|
|
19
|
+
export declare class Assets extends GeneratedAssets {
|
|
20
|
+
getOrUpload(body: AssetGetOrUploadParams, options?: RequestOptions): Promise<AssetGetOrUploadResponse>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=assets-helpers.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assets-helpers.d.mts","sourceRoot":"","sources":["../src/resources/assets-helpers.ts"],"names":[],"mappings":"OAAO,EAAE,cAAc,EAAE;OAClB,EAAE,MAAM,IAAI,eAAe,EAAE;AAEpC,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,EAAE,MAAM,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;CACb;AAED,qBAAa,MAAO,SAAQ,eAAe;IACnC,WAAW,CACf,IAAI,EAAE,sBAAsB,EAC5B,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,wBAAwB,CAAC;CAoCrC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { RequestOptions } from "../internal/request-options.js";
|
|
2
|
+
import { Assets as GeneratedAssets } from "./assets.js";
|
|
3
|
+
export interface AssetGetOrUploadParams {
|
|
4
|
+
/**
|
|
5
|
+
* The path to the file to upload.
|
|
6
|
+
*/
|
|
7
|
+
path: string;
|
|
8
|
+
/**
|
|
9
|
+
* The name for the asset. Defaults to the name of the file given in the filePath parameter.
|
|
10
|
+
*/
|
|
11
|
+
name?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface AssetGetOrUploadResponse {
|
|
14
|
+
id: string;
|
|
15
|
+
name: string;
|
|
16
|
+
signedDownloadUrl: string;
|
|
17
|
+
md5: string;
|
|
18
|
+
}
|
|
19
|
+
export declare class Assets extends GeneratedAssets {
|
|
20
|
+
getOrUpload(body: AssetGetOrUploadParams, options?: RequestOptions): Promise<AssetGetOrUploadResponse>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=assets-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assets-helpers.d.ts","sourceRoot":"","sources":["../src/resources/assets-helpers.ts"],"names":[],"mappings":"OAAO,EAAE,cAAc,EAAE;OAClB,EAAE,MAAM,IAAI,eAAe,EAAE;AAEpC,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,EAAE,MAAM,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;CACb;AAED,qBAAa,MAAO,SAAQ,eAAe;IACnC,WAAW,CACf,IAAI,EAAE,sBAAsB,EAC5B,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,wBAAwB,CAAC;CAoCrC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Assets = void 0;
|
|
4
|
+
const assets_1 = require("./assets.js");
|
|
5
|
+
class Assets extends assets_1.Assets {
|
|
6
|
+
async getOrUpload(body, options) {
|
|
7
|
+
const { crypto, fs, path } = globalThis;
|
|
8
|
+
const creationResponse = await this.getOrCreate({
|
|
9
|
+
name: body.name ?? path.basename(body.path),
|
|
10
|
+
}, options);
|
|
11
|
+
const data = await fs.promises.readFile(body.path);
|
|
12
|
+
const md5 = crypto.createHash('md5').update(data).digest('hex');
|
|
13
|
+
if (creationResponse.md5 && creationResponse.md5 === md5) {
|
|
14
|
+
return {
|
|
15
|
+
id: creationResponse.id,
|
|
16
|
+
name: creationResponse.name,
|
|
17
|
+
signedDownloadUrl: creationResponse.signedDownloadUrl,
|
|
18
|
+
md5: creationResponse.md5,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
const uploadResponse = await fetch(creationResponse.signedUploadUrl, {
|
|
22
|
+
headers: {
|
|
23
|
+
'Content-Length': data.length.toString(),
|
|
24
|
+
'Content-Type': 'application/octet-stream',
|
|
25
|
+
},
|
|
26
|
+
method: 'PUT',
|
|
27
|
+
body: data,
|
|
28
|
+
});
|
|
29
|
+
if (uploadResponse.status !== 200) {
|
|
30
|
+
throw new Error(`Failed to upload asset: ${uploadResponse.status} ${await uploadResponse.text()}`);
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
id: creationResponse.id,
|
|
34
|
+
name: creationResponse.name,
|
|
35
|
+
signedDownloadUrl: creationResponse.signedDownloadUrl,
|
|
36
|
+
md5,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.Assets = Assets;
|
|
41
|
+
//# sourceMappingURL=assets-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assets-helpers.js","sourceRoot":"","sources":["../src/resources/assets-helpers.ts"],"names":[],"mappings":";;;AACA,wCAAqD;AAqBrD,MAAa,MAAO,SAAQ,eAAe;IACzC,KAAK,CAAC,WAAW,CACf,IAA4B,EAC5B,OAAwB;QAExB,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,UAAiB,CAAC;QAC/C,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,WAAW,CAC7C;YACE,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;SAC5C,EACD,OAAO,CACR,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChE,IAAI,gBAAgB,CAAC,GAAG,IAAI,gBAAgB,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;YACzD,OAAO;gBACL,EAAE,EAAE,gBAAgB,CAAC,EAAE;gBACvB,IAAI,EAAE,gBAAgB,CAAC,IAAI;gBAC3B,iBAAiB,EAAE,gBAAgB,CAAC,iBAAiB;gBACrD,GAAG,EAAE,gBAAgB,CAAC,GAAG;aAC1B,CAAC;QACJ,CAAC;QACD,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,eAAe,EAAE;YACnE,OAAO,EAAE;gBACP,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;gBACxC,cAAc,EAAE,0BAA0B;aAC3C;YACD,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;QACH,IAAI,cAAc,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,2BAA2B,cAAc,CAAC,MAAM,IAAI,MAAM,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACrG,CAAC;QACD,OAAO;YACL,EAAE,EAAE,gBAAgB,CAAC,EAAE;YACvB,IAAI,EAAE,gBAAgB,CAAC,IAAI;YAC3B,iBAAiB,EAAE,gBAAgB,CAAC,iBAAiB;YACrD,GAAG;SACJ,CAAC;IACJ,CAAC;CACF;AAxCD,wBAwCC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Assets as GeneratedAssets } from "./assets.mjs";
|
|
2
|
+
export class Assets extends GeneratedAssets {
|
|
3
|
+
async getOrUpload(body, options) {
|
|
4
|
+
const { crypto, fs, path } = globalThis;
|
|
5
|
+
const creationResponse = await this.getOrCreate({
|
|
6
|
+
name: body.name ?? path.basename(body.path),
|
|
7
|
+
}, options);
|
|
8
|
+
const data = await fs.promises.readFile(body.path);
|
|
9
|
+
const md5 = crypto.createHash('md5').update(data).digest('hex');
|
|
10
|
+
if (creationResponse.md5 && creationResponse.md5 === md5) {
|
|
11
|
+
return {
|
|
12
|
+
id: creationResponse.id,
|
|
13
|
+
name: creationResponse.name,
|
|
14
|
+
signedDownloadUrl: creationResponse.signedDownloadUrl,
|
|
15
|
+
md5: creationResponse.md5,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
const uploadResponse = await fetch(creationResponse.signedUploadUrl, {
|
|
19
|
+
headers: {
|
|
20
|
+
'Content-Length': data.length.toString(),
|
|
21
|
+
'Content-Type': 'application/octet-stream',
|
|
22
|
+
},
|
|
23
|
+
method: 'PUT',
|
|
24
|
+
body: data,
|
|
25
|
+
});
|
|
26
|
+
if (uploadResponse.status !== 200) {
|
|
27
|
+
throw new Error(`Failed to upload asset: ${uploadResponse.status} ${await uploadResponse.text()}`);
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
id: creationResponse.id,
|
|
31
|
+
name: creationResponse.name,
|
|
32
|
+
signedDownloadUrl: creationResponse.signedDownloadUrl,
|
|
33
|
+
md5,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=assets-helpers.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assets-helpers.mjs","sourceRoot":"","sources":["../src/resources/assets-helpers.ts"],"names":[],"mappings":"OACO,EAAE,MAAM,IAAI,eAAe,EAAE;AAqBpC,MAAM,OAAO,MAAO,SAAQ,eAAe;IACzC,KAAK,CAAC,WAAW,CACf,IAA4B,EAC5B,OAAwB;QAExB,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,UAAiB,CAAC;QAC/C,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,WAAW,CAC7C;YACE,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;SAC5C,EACD,OAAO,CACR,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChE,IAAI,gBAAgB,CAAC,GAAG,IAAI,gBAAgB,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;YACzD,OAAO;gBACL,EAAE,EAAE,gBAAgB,CAAC,EAAE;gBACvB,IAAI,EAAE,gBAAgB,CAAC,IAAI;gBAC3B,iBAAiB,EAAE,gBAAgB,CAAC,iBAAiB;gBACrD,GAAG,EAAE,gBAAgB,CAAC,GAAG;aAC1B,CAAC;QACJ,CAAC;QACD,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,eAAe,EAAE;YACnE,OAAO,EAAE;gBACP,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;gBACxC,cAAc,EAAE,0BAA0B;aAC3C;YACD,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;QACH,IAAI,cAAc,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,2BAA2B,cAAc,CAAC,MAAM,IAAI,MAAM,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACrG,CAAC;QACD,OAAO;YACL,EAAE,EAAE,gBAAgB,CAAC,EAAE;YACvB,IAAI,EAAE,gBAAgB,CAAC,IAAI;YAC3B,iBAAiB,EAAE,gBAAgB,CAAC,iBAAiB;YACrD,GAAG;SACJ,CAAC;IACJ,CAAC;CACF"}
|
package/resources/assets.d.mts
CHANGED
|
@@ -18,7 +18,7 @@ export declare class Assets extends APIResource {
|
|
|
18
18
|
* is no corresponding file in the storage so downloading it directly or using it
|
|
19
19
|
* in instances will fail until you use the returned upload URL to submit the file.
|
|
20
20
|
*/
|
|
21
|
-
getOrCreate(body: AssetGetOrCreateParams, options?: RequestOptions): APIPromise<
|
|
21
|
+
getOrCreate(body: AssetGetOrCreateParams, options?: RequestOptions): APIPromise<AssetGetOrCreateResponse>;
|
|
22
22
|
}
|
|
23
23
|
export interface Asset {
|
|
24
24
|
id: string;
|
|
@@ -31,6 +31,16 @@ export interface Asset {
|
|
|
31
31
|
signedUploadUrl?: string;
|
|
32
32
|
}
|
|
33
33
|
export type AssetListResponse = Array<Asset>;
|
|
34
|
+
export interface AssetGetOrCreateResponse {
|
|
35
|
+
id: string;
|
|
36
|
+
name: string;
|
|
37
|
+
signedDownloadUrl: string;
|
|
38
|
+
signedUploadUrl: string;
|
|
39
|
+
/**
|
|
40
|
+
* Returned only if there is a corresponding file uploaded already.
|
|
41
|
+
*/
|
|
42
|
+
md5?: string;
|
|
43
|
+
}
|
|
34
44
|
export interface AssetListParams {
|
|
35
45
|
/**
|
|
36
46
|
* Toggles whether a download URL should be included in the response
|
|
@@ -63,6 +73,6 @@ export interface AssetGetOrCreateParams {
|
|
|
63
73
|
name: string;
|
|
64
74
|
}
|
|
65
75
|
export declare namespace Assets {
|
|
66
|
-
export { type Asset as Asset, type AssetListResponse as AssetListResponse, type AssetListParams as AssetListParams, type AssetGetParams as AssetGetParams, type AssetGetOrCreateParams as AssetGetOrCreateParams, };
|
|
76
|
+
export { type Asset as Asset, type AssetListResponse as AssetListResponse, type AssetGetOrCreateResponse as AssetGetOrCreateResponse, type AssetListParams as AssetListParams, type AssetGetParams as AssetGetParams, type AssetGetOrCreateParams as AssetGetOrCreateParams, };
|
|
67
77
|
}
|
|
68
78
|
//# sourceMappingURL=assets.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets.d.mts","sourceRoot":"","sources":["../src/resources/assets.ts"],"names":[],"mappings":"OAEO,EAAE,WAAW,EAAE;OACf,EAAE,UAAU,EAAE;OACd,EAAE,cAAc,EAAE;AAGzB,qBAAa,MAAO,SAAQ,WAAW;IACrC;;;OAGG;IACH,IAAI,CACF,KAAK,GAAE,eAAe,GAAG,IAAI,GAAG,SAAc,EAC9C,OAAO,CAAC,EAAE,cAAc,GACvB,UAAU,CAAC,iBAAiB,CAAC;IAIhC;;OAEG;IACH,GAAG,CACD,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,cAAc,GAAG,IAAI,GAAG,SAAc,EAC7C,OAAO,CAAC,EAAE,cAAc,GACvB,UAAU,CAAC,KAAK,CAAC;IAIpB;;;;;;OAMG;IACH,WAAW,CAAC,IAAI,EAAE,sBAAsB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"assets.d.mts","sourceRoot":"","sources":["../src/resources/assets.ts"],"names":[],"mappings":"OAEO,EAAE,WAAW,EAAE;OACf,EAAE,UAAU,EAAE;OACd,EAAE,cAAc,EAAE;AAGzB,qBAAa,MAAO,SAAQ,WAAW;IACrC;;;OAGG;IACH,IAAI,CACF,KAAK,GAAE,eAAe,GAAG,IAAI,GAAG,SAAc,EAC9C,OAAO,CAAC,EAAE,cAAc,GACvB,UAAU,CAAC,iBAAiB,CAAC;IAIhC;;OAEG;IACH,GAAG,CACD,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,cAAc,GAAG,IAAI,GAAG,SAAc,EAC7C,OAAO,CAAC,EAAE,cAAc,GACvB,UAAU,CAAC,KAAK,CAAC;IAIpB;;;;;;OAMG;IACH,WAAW,CAAC,IAAI,EAAE,sBAAsB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,CAAC,wBAAwB,CAAC;CAG1G;AAED,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IAEX,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,iBAAiB,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AAE7C,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IAEX,IAAI,EAAE,MAAM,CAAC;IAEb,iBAAiB,EAAE,MAAM,CAAC;IAE1B,eAAe,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B,OAAO,EACL,KAAK,KAAK,IAAI,KAAK,EACnB,KAAK,iBAAiB,IAAI,iBAAiB,EAC3C,KAAK,wBAAwB,IAAI,wBAAwB,EACzD,KAAK,eAAe,IAAI,eAAe,EACvC,KAAK,cAAc,IAAI,cAAc,EACrC,KAAK,sBAAsB,IAAI,sBAAsB,GACtD,CAAC;CACH"}
|
package/resources/assets.d.ts
CHANGED
|
@@ -18,7 +18,7 @@ export declare class Assets extends APIResource {
|
|
|
18
18
|
* is no corresponding file in the storage so downloading it directly or using it
|
|
19
19
|
* in instances will fail until you use the returned upload URL to submit the file.
|
|
20
20
|
*/
|
|
21
|
-
getOrCreate(body: AssetGetOrCreateParams, options?: RequestOptions): APIPromise<
|
|
21
|
+
getOrCreate(body: AssetGetOrCreateParams, options?: RequestOptions): APIPromise<AssetGetOrCreateResponse>;
|
|
22
22
|
}
|
|
23
23
|
export interface Asset {
|
|
24
24
|
id: string;
|
|
@@ -31,6 +31,16 @@ export interface Asset {
|
|
|
31
31
|
signedUploadUrl?: string;
|
|
32
32
|
}
|
|
33
33
|
export type AssetListResponse = Array<Asset>;
|
|
34
|
+
export interface AssetGetOrCreateResponse {
|
|
35
|
+
id: string;
|
|
36
|
+
name: string;
|
|
37
|
+
signedDownloadUrl: string;
|
|
38
|
+
signedUploadUrl: string;
|
|
39
|
+
/**
|
|
40
|
+
* Returned only if there is a corresponding file uploaded already.
|
|
41
|
+
*/
|
|
42
|
+
md5?: string;
|
|
43
|
+
}
|
|
34
44
|
export interface AssetListParams {
|
|
35
45
|
/**
|
|
36
46
|
* Toggles whether a download URL should be included in the response
|
|
@@ -63,6 +73,6 @@ export interface AssetGetOrCreateParams {
|
|
|
63
73
|
name: string;
|
|
64
74
|
}
|
|
65
75
|
export declare namespace Assets {
|
|
66
|
-
export { type Asset as Asset, type AssetListResponse as AssetListResponse, type AssetListParams as AssetListParams, type AssetGetParams as AssetGetParams, type AssetGetOrCreateParams as AssetGetOrCreateParams, };
|
|
76
|
+
export { type Asset as Asset, type AssetListResponse as AssetListResponse, type AssetGetOrCreateResponse as AssetGetOrCreateResponse, type AssetListParams as AssetListParams, type AssetGetParams as AssetGetParams, type AssetGetOrCreateParams as AssetGetOrCreateParams, };
|
|
67
77
|
}
|
|
68
78
|
//# sourceMappingURL=assets.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../src/resources/assets.ts"],"names":[],"mappings":"OAEO,EAAE,WAAW,EAAE;OACf,EAAE,UAAU,EAAE;OACd,EAAE,cAAc,EAAE;AAGzB,qBAAa,MAAO,SAAQ,WAAW;IACrC;;;OAGG;IACH,IAAI,CACF,KAAK,GAAE,eAAe,GAAG,IAAI,GAAG,SAAc,EAC9C,OAAO,CAAC,EAAE,cAAc,GACvB,UAAU,CAAC,iBAAiB,CAAC;IAIhC;;OAEG;IACH,GAAG,CACD,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,cAAc,GAAG,IAAI,GAAG,SAAc,EAC7C,OAAO,CAAC,EAAE,cAAc,GACvB,UAAU,CAAC,KAAK,CAAC;IAIpB;;;;;;OAMG;IACH,WAAW,CAAC,IAAI,EAAE,sBAAsB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../src/resources/assets.ts"],"names":[],"mappings":"OAEO,EAAE,WAAW,EAAE;OACf,EAAE,UAAU,EAAE;OACd,EAAE,cAAc,EAAE;AAGzB,qBAAa,MAAO,SAAQ,WAAW;IACrC;;;OAGG;IACH,IAAI,CACF,KAAK,GAAE,eAAe,GAAG,IAAI,GAAG,SAAc,EAC9C,OAAO,CAAC,EAAE,cAAc,GACvB,UAAU,CAAC,iBAAiB,CAAC;IAIhC;;OAEG;IACH,GAAG,CACD,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,cAAc,GAAG,IAAI,GAAG,SAAc,EAC7C,OAAO,CAAC,EAAE,cAAc,GACvB,UAAU,CAAC,KAAK,CAAC;IAIpB;;;;;;OAMG;IACH,WAAW,CAAC,IAAI,EAAE,sBAAsB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,CAAC,wBAAwB,CAAC;CAG1G;AAED,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IAEX,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,iBAAiB,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AAE7C,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IAEX,IAAI,EAAE,MAAM,CAAC;IAEb,iBAAiB,EAAE,MAAM,CAAC;IAE1B,eAAe,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B,OAAO,EACL,KAAK,KAAK,IAAI,KAAK,EACnB,KAAK,iBAAiB,IAAI,iBAAiB,EAC3C,KAAK,wBAAwB,IAAI,wBAAwB,EACzD,KAAK,eAAe,IAAI,eAAe,EACvC,KAAK,cAAc,IAAI,cAAc,EACrC,KAAK,sBAAsB,IAAI,sBAAsB,GACtD,CAAC;CACH"}
|
package/resources/index.d.mts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export { AndroidInstances, type AndroidInstance, type AndroidInstanceState, type AndroidInstanceListResponse, type AndroidInstanceCreateParams, type AndroidInstanceListParams, } from "./android-instances.mjs";
|
|
2
|
-
export {
|
|
2
|
+
export { type Asset, type AssetListResponse, type AssetGetOrCreateResponse, type AssetListParams, type AssetGetParams, type AssetGetOrCreateParams, } from "./assets.mjs";
|
|
3
|
+
export { Assets, AssetGetOrUploadParams, AssetGetOrUploadResponse } from "./assets-helpers.mjs";
|
|
3
4
|
//# sourceMappingURL=index.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/resources/index.ts"],"names":[],"mappings":"OAEO,EACL,gBAAgB,EAChB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,EAChC,KAAK,2BAA2B,EAChC,KAAK,yBAAyB,GAC/B;OACM,EACL,
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/resources/index.ts"],"names":[],"mappings":"OAEO,EACL,gBAAgB,EAChB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,EAChC,KAAK,2BAA2B,EAChC,KAAK,yBAAyB,GAC/B;OACM,EACL,KAAK,KAAK,EACV,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,sBAAsB,GAC5B;OAEM,EAAE,MAAM,EAAE,sBAAsB,EAAE,wBAAwB,EAAE"}
|
package/resources/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export { AndroidInstances, type AndroidInstance, type AndroidInstanceState, type AndroidInstanceListResponse, type AndroidInstanceCreateParams, type AndroidInstanceListParams, } from "./android-instances.js";
|
|
2
|
-
export {
|
|
2
|
+
export { type Asset, type AssetListResponse, type AssetGetOrCreateResponse, type AssetListParams, type AssetGetParams, type AssetGetOrCreateParams, } from "./assets.js";
|
|
3
|
+
export { Assets, AssetGetOrUploadParams, AssetGetOrUploadResponse } from "./assets-helpers.js";
|
|
3
4
|
//# sourceMappingURL=index.d.ts.map
|
package/resources/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/resources/index.ts"],"names":[],"mappings":"OAEO,EACL,gBAAgB,EAChB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,EAChC,KAAK,2BAA2B,EAChC,KAAK,yBAAyB,GAC/B;OACM,EACL,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/resources/index.ts"],"names":[],"mappings":"OAEO,EACL,gBAAgB,EAChB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,EAChC,KAAK,2BAA2B,EAChC,KAAK,yBAAyB,GAC/B;OACM,EACL,KAAK,KAAK,EACV,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,sBAAsB,GAC5B;OAEM,EAAE,MAAM,EAAE,sBAAsB,EAAE,wBAAwB,EAAE"}
|
package/resources/index.js
CHANGED
|
@@ -4,6 +4,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
exports.Assets = exports.AndroidInstances = void 0;
|
|
5
5
|
var android_instances_1 = require("./android-instances.js");
|
|
6
6
|
Object.defineProperty(exports, "AndroidInstances", { enumerable: true, get: function () { return android_instances_1.AndroidInstances; } });
|
|
7
|
-
var
|
|
8
|
-
Object.defineProperty(exports, "Assets", { enumerable: true, get: function () { return
|
|
7
|
+
var assets_helpers_1 = require("./assets-helpers.js");
|
|
8
|
+
Object.defineProperty(exports, "Assets", { enumerable: true, get: function () { return assets_helpers_1.Assets; } });
|
|
9
9
|
//# sourceMappingURL=index.js.map
|
package/resources/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/resources/index.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;AAEtF,4DAO6B;AAN3B,qHAAA,gBAAgB,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/resources/index.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;AAEtF,4DAO6B;AAN3B,qHAAA,gBAAgB,OAAA;AAgBlB,sDAA4F;AAAnF,wGAAA,MAAM,OAAA"}
|
package/resources/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
2
|
export { AndroidInstances, } from "./android-instances.mjs";
|
|
3
|
-
export { Assets
|
|
3
|
+
export { Assets } from "./assets-helpers.mjs";
|
|
4
4
|
//# sourceMappingURL=index.mjs.map
|
package/resources/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/resources/index.ts"],"names":[],"mappings":"AAAA,sFAAsF;OAE/E,EACL,gBAAgB,GAMjB;
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/resources/index.ts"],"names":[],"mappings":"AAAA,sFAAsF;OAE/E,EACL,gBAAgB,GAMjB;OAUM,EAAE,MAAM,EAAoD"}
|
package/src/client.ts
CHANGED
|
@@ -27,11 +27,12 @@ import {
|
|
|
27
27
|
import {
|
|
28
28
|
Asset,
|
|
29
29
|
AssetGetOrCreateParams,
|
|
30
|
+
AssetGetOrCreateResponse,
|
|
30
31
|
AssetGetParams,
|
|
31
32
|
AssetListParams,
|
|
32
33
|
AssetListResponse,
|
|
33
|
-
Assets,
|
|
34
34
|
} from './resources/assets';
|
|
35
|
+
import { Assets, AssetGetOrUploadParams, AssetGetOrUploadResponse } from './resources/assets-helpers';
|
|
35
36
|
import { type Fetch } from './internal/builtin-types';
|
|
36
37
|
import { HeadersLike, NullableHeaders, buildHeaders } from './internal/headers';
|
|
37
38
|
import { FinalRequestOptions, RequestOptions } from './internal/request-options';
|
|
@@ -752,8 +753,11 @@ export declare namespace Limrun {
|
|
|
752
753
|
Assets as Assets,
|
|
753
754
|
type Asset as Asset,
|
|
754
755
|
type AssetListResponse as AssetListResponse,
|
|
756
|
+
type AssetGetOrCreateResponse as AssetGetOrCreateResponse,
|
|
755
757
|
type AssetListParams as AssetListParams,
|
|
756
758
|
type AssetGetParams as AssetGetParams,
|
|
757
759
|
type AssetGetOrCreateParams as AssetGetOrCreateParams,
|
|
760
|
+
type AssetGetOrUploadParams as AssetGetOrUploadParams,
|
|
761
|
+
type AssetGetOrUploadResponse as AssetGetOrUploadResponse,
|
|
758
762
|
};
|
|
759
763
|
}
|