@fly.io/sdk 0.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/LICENSE +21 -0
- package/dist/app.d.ts +181 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +212 -0
- package/dist/client.d.ts +42 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +200 -0
- package/dist/errors.d.ts +48 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +85 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/machine.d.ts +319 -0
- package/dist/machine.d.ts.map +1 -0
- package/dist/machine.js +249 -0
- package/dist/network.d.ts +45 -0
- package/dist/network.d.ts.map +1 -0
- package/dist/network.js +44 -0
- package/dist/organization.d.ts +20 -0
- package/dist/organization.d.ts.map +1 -0
- package/dist/organization.js +22 -0
- package/dist/regions.d.ts +35 -0
- package/dist/regions.d.ts.map +1 -0
- package/dist/regions.js +53 -0
- package/dist/secret.d.ts +55 -0
- package/dist/secret.d.ts.map +1 -0
- package/dist/secret.js +53 -0
- package/dist/token.d.ts +14 -0
- package/dist/token.d.ts.map +1 -0
- package/dist/token.js +16 -0
- package/dist/types.d.ts +937 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +40 -0
- package/dist/volume.d.ts +72 -0
- package/dist/volume.d.ts.map +1 -0
- package/dist/volume.js +45 -0
- package/package.json +54 -0
- package/src/app.ts +462 -0
- package/src/client.ts +262 -0
- package/src/errors.ts +135 -0
- package/src/index.ts +141 -0
- package/src/machine.ts +644 -0
- package/src/network.ts +87 -0
- package/src/organization.ts +43 -0
- package/src/regions.ts +94 -0
- package/src/secret.ts +101 -0
- package/src/token.ts +29 -0
- package/src/types.ts +1072 -0
- package/src/volume.ts +124 -0
package/dist/machine.js
ADDED
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
// Machine management for Fly Machines REST API.
|
|
2
|
+
// Vendored from supabase/fly-admin with added exec, releaseLease, and metadata methods.
|
|
3
|
+
import { SignalRequestSignalEnum as ApiMachineSignal, } from "./types.js";
|
|
4
|
+
export var MachineState;
|
|
5
|
+
(function (MachineState) {
|
|
6
|
+
MachineState["Created"] = "created";
|
|
7
|
+
MachineState["Starting"] = "starting";
|
|
8
|
+
MachineState["Started"] = "started";
|
|
9
|
+
MachineState["Stopping"] = "stopping";
|
|
10
|
+
MachineState["Stopped"] = "stopped";
|
|
11
|
+
MachineState["Suspended"] = "suspended";
|
|
12
|
+
MachineState["Replacing"] = "replacing";
|
|
13
|
+
MachineState["Destroying"] = "destroying";
|
|
14
|
+
MachineState["Destroyed"] = "destroyed";
|
|
15
|
+
MachineState["Failed"] = "failed";
|
|
16
|
+
})(MachineState || (MachineState = {}));
|
|
17
|
+
export var ConnectionHandler;
|
|
18
|
+
(function (ConnectionHandler) {
|
|
19
|
+
ConnectionHandler["TLS"] = "tls";
|
|
20
|
+
ConnectionHandler["PG_TLS"] = "pg_tls";
|
|
21
|
+
ConnectionHandler["HTTP"] = "http";
|
|
22
|
+
ConnectionHandler["PROXY_PROTO"] = "proxy_proto";
|
|
23
|
+
})(ConnectionHandler || (ConnectionHandler = {}));
|
|
24
|
+
export class Machine {
|
|
25
|
+
client;
|
|
26
|
+
constructor(client) {
|
|
27
|
+
this.client = client;
|
|
28
|
+
}
|
|
29
|
+
// --- Core CRUD ---
|
|
30
|
+
async listMachines(app_name) {
|
|
31
|
+
let path;
|
|
32
|
+
if (typeof app_name === 'string') {
|
|
33
|
+
path = `apps/${app_name}/machines`;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
const { app_name: appId, ...params } = app_name;
|
|
37
|
+
path = `apps/${appId}/machines`;
|
|
38
|
+
const queryParams = {};
|
|
39
|
+
if (params.include_deleted !== undefined) {
|
|
40
|
+
queryParams.include_deleted = String(params.include_deleted);
|
|
41
|
+
}
|
|
42
|
+
if (params.region) {
|
|
43
|
+
queryParams.region = params.region;
|
|
44
|
+
}
|
|
45
|
+
if (params.state) {
|
|
46
|
+
queryParams.state = params.state;
|
|
47
|
+
}
|
|
48
|
+
if (params.summary !== undefined) {
|
|
49
|
+
queryParams.summary = String(params.summary);
|
|
50
|
+
}
|
|
51
|
+
const query = new URLSearchParams(queryParams).toString();
|
|
52
|
+
if (query) {
|
|
53
|
+
path += `?${query}`;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return await this.client.restOrThrow(path);
|
|
57
|
+
}
|
|
58
|
+
async getMachine(payload) {
|
|
59
|
+
const { app_name, machine_id } = payload;
|
|
60
|
+
return await this.client.restOrThrow(`apps/${app_name}/machines/${machine_id}`);
|
|
61
|
+
}
|
|
62
|
+
async createMachine(payload) {
|
|
63
|
+
const { app_name, ...body } = payload;
|
|
64
|
+
return await this.client.restOrThrow(`apps/${app_name}/machines`, 'POST', body);
|
|
65
|
+
}
|
|
66
|
+
async updateMachine(payload) {
|
|
67
|
+
const { app_name, machine_id, ...body } = payload;
|
|
68
|
+
return await this.client.restOrThrow(`apps/${app_name}/machines/${machine_id}`, 'POST', body);
|
|
69
|
+
}
|
|
70
|
+
async deleteMachine(payload) {
|
|
71
|
+
const { app_name, machine_id, force } = payload;
|
|
72
|
+
const query = force ? '?force=true' : '';
|
|
73
|
+
return await this.client.restOrThrow(`apps/${app_name}/machines/${machine_id}${query}`, 'DELETE');
|
|
74
|
+
}
|
|
75
|
+
// --- Lifecycle control ---
|
|
76
|
+
async startMachine(payload) {
|
|
77
|
+
const { app_name, machine_id } = payload;
|
|
78
|
+
return await this.client.restOrThrow(`apps/${app_name}/machines/${machine_id}/start`, 'POST');
|
|
79
|
+
}
|
|
80
|
+
async stopMachine(payload) {
|
|
81
|
+
const { app_name, machine_id, ...body } = payload;
|
|
82
|
+
return await this.client.restOrThrow(`apps/${app_name}/machines/${machine_id}/stop`, 'POST', {
|
|
83
|
+
signal: ApiMachineSignal.SIGTERM,
|
|
84
|
+
...body,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
async restartMachine(payload) {
|
|
88
|
+
const { app_name, machine_id, ...params } = payload;
|
|
89
|
+
let path = `apps/${app_name}/machines/${machine_id}/restart`;
|
|
90
|
+
const queryParams = {};
|
|
91
|
+
if (params.timeout) {
|
|
92
|
+
queryParams.timeout = params.timeout;
|
|
93
|
+
}
|
|
94
|
+
if (params.signal) {
|
|
95
|
+
queryParams.signal = params.signal;
|
|
96
|
+
}
|
|
97
|
+
const query = new URLSearchParams(queryParams).toString();
|
|
98
|
+
if (query) {
|
|
99
|
+
path += `?${query}`;
|
|
100
|
+
}
|
|
101
|
+
return await this.client.restOrThrow(path, 'POST');
|
|
102
|
+
}
|
|
103
|
+
async signalMachine(payload) {
|
|
104
|
+
const { app_name, machine_id, ...body } = payload;
|
|
105
|
+
return await this.client.restOrThrow(`apps/${app_name}/machines/${machine_id}/signal`, 'POST', body);
|
|
106
|
+
}
|
|
107
|
+
async suspendMachine(payload) {
|
|
108
|
+
const { app_name, machine_id } = payload;
|
|
109
|
+
return await this.client.restOrThrow(`apps/${app_name}/machines/${machine_id}/suspend`, 'POST');
|
|
110
|
+
}
|
|
111
|
+
// --- Memory ---
|
|
112
|
+
async getMemory(payload) {
|
|
113
|
+
const { app_name, machine_id } = payload;
|
|
114
|
+
return await this.client.restOrThrow(`apps/${app_name}/machines/${machine_id}/memory`);
|
|
115
|
+
}
|
|
116
|
+
async setMemoryLimit(payload) {
|
|
117
|
+
const { app_name, machine_id, ...body } = payload;
|
|
118
|
+
return await this.client.restOrThrow(`apps/${app_name}/machines/${machine_id}/memory`, 'PUT', body);
|
|
119
|
+
}
|
|
120
|
+
/** @deprecated use setMemoryLimit instead */
|
|
121
|
+
async updateMemory(payload) {
|
|
122
|
+
return this.setMemoryLimit(payload);
|
|
123
|
+
}
|
|
124
|
+
async reclaimMemory(payload) {
|
|
125
|
+
const { app_name, machine_id, ...body } = payload;
|
|
126
|
+
return await this.client.restOrThrow(`apps/${app_name}/machines/${machine_id}/memory/reclaim`, 'POST', body);
|
|
127
|
+
}
|
|
128
|
+
// --- Monitoring ---
|
|
129
|
+
async listEvents(payload) {
|
|
130
|
+
const { app_name, machine_id, limit } = payload;
|
|
131
|
+
const query = limit !== undefined ? `?limit=${String(limit)}` : '';
|
|
132
|
+
return await this.client.restOrThrow(`apps/${app_name}/machines/${machine_id}/events${query}`);
|
|
133
|
+
}
|
|
134
|
+
async listVersions(payload) {
|
|
135
|
+
const { app_name, machine_id } = payload;
|
|
136
|
+
return await this.client.restOrThrow(`apps/${app_name}/machines/${machine_id}/versions`);
|
|
137
|
+
}
|
|
138
|
+
async listProcesses(payload) {
|
|
139
|
+
const { app_name, machine_id, ...params } = payload;
|
|
140
|
+
let path = `apps/${app_name}/machines/${machine_id}/ps`;
|
|
141
|
+
const query = new URLSearchParams(params).toString();
|
|
142
|
+
if (query) {
|
|
143
|
+
path += `?${query}`;
|
|
144
|
+
}
|
|
145
|
+
return await this.client.restOrThrow(path);
|
|
146
|
+
}
|
|
147
|
+
async waitMachine(payload) {
|
|
148
|
+
const { app_name, machine_id, ...params } = payload;
|
|
149
|
+
let path = `apps/${app_name}/machines/${machine_id}/wait`;
|
|
150
|
+
const queryParams = {};
|
|
151
|
+
if (params.instance_id) {
|
|
152
|
+
queryParams.instance_id = params.instance_id;
|
|
153
|
+
}
|
|
154
|
+
if (params.timeout !== undefined) {
|
|
155
|
+
queryParams.timeout = String(params.timeout);
|
|
156
|
+
}
|
|
157
|
+
if (params.state) {
|
|
158
|
+
queryParams.state = params.state;
|
|
159
|
+
}
|
|
160
|
+
if (params.version) {
|
|
161
|
+
queryParams.version = params.version;
|
|
162
|
+
}
|
|
163
|
+
if (params.from_event_id) {
|
|
164
|
+
queryParams.from_event_id = params.from_event_id;
|
|
165
|
+
}
|
|
166
|
+
const query = new URLSearchParams(queryParams).toString();
|
|
167
|
+
if (query) {
|
|
168
|
+
path += `?${query}`;
|
|
169
|
+
}
|
|
170
|
+
return await this.client.restOrThrow(path);
|
|
171
|
+
}
|
|
172
|
+
// --- Cordoning ---
|
|
173
|
+
async cordonMachine(payload) {
|
|
174
|
+
const { app_name, machine_id } = payload;
|
|
175
|
+
return await this.client.restOrThrow(`apps/${app_name}/machines/${machine_id}/cordon`, 'POST');
|
|
176
|
+
}
|
|
177
|
+
async uncordonMachine(payload) {
|
|
178
|
+
const { app_name, machine_id } = payload;
|
|
179
|
+
return await this.client.restOrThrow(`apps/${app_name}/machines/${machine_id}/uncordon`, 'POST');
|
|
180
|
+
}
|
|
181
|
+
// --- Leases ---
|
|
182
|
+
async getLease(payload) {
|
|
183
|
+
const { app_name, machine_id } = payload;
|
|
184
|
+
return await this.client.restOrThrow(`apps/${app_name}/machines/${machine_id}/lease`);
|
|
185
|
+
}
|
|
186
|
+
async acquireLease(payload) {
|
|
187
|
+
const { app_name, machine_id, ...body } = payload;
|
|
188
|
+
return await this.client.restOrThrow(`apps/${app_name}/machines/${machine_id}/lease`, 'POST', body);
|
|
189
|
+
}
|
|
190
|
+
async releaseLease(payload) {
|
|
191
|
+
const { app_name, machine_id, nonce } = payload;
|
|
192
|
+
return await this.client.restOrThrow(`apps/${app_name}/machines/${machine_id}/lease`, 'DELETE', undefined, { 'fly-machine-lease-nonce': nonce });
|
|
193
|
+
}
|
|
194
|
+
// --- Exec ---
|
|
195
|
+
async execMachine(payload) {
|
|
196
|
+
const { app_name, machine_id, ...body } = payload;
|
|
197
|
+
return await this.client.restOrThrow(`apps/${app_name}/machines/${machine_id}/exec`, 'POST', body);
|
|
198
|
+
}
|
|
199
|
+
// --- Metadata ---
|
|
200
|
+
async getMetadata(payload) {
|
|
201
|
+
const { app_name, machine_id } = payload;
|
|
202
|
+
return await this.client.restOrThrow(`apps/${app_name}/machines/${machine_id}/metadata`);
|
|
203
|
+
}
|
|
204
|
+
async updateMetadata(payload) {
|
|
205
|
+
const { app_name, machine_id, request } = payload;
|
|
206
|
+
return await this.client.restOrThrow(`apps/${app_name}/machines/${machine_id}/metadata`, 'PUT', request);
|
|
207
|
+
}
|
|
208
|
+
async getMetadataProperty(payload) {
|
|
209
|
+
const { app_name, machine_id, key } = payload;
|
|
210
|
+
return await this.client.restOrThrow(`apps/${app_name}/machines/${machine_id}/metadata/${key}`);
|
|
211
|
+
}
|
|
212
|
+
async setMetadataProperty(payload) {
|
|
213
|
+
const { app_name, machine_id, key, request } = payload;
|
|
214
|
+
return await this.client.restOrThrow(`apps/${app_name}/machines/${machine_id}/metadata/${key}`, 'POST', request);
|
|
215
|
+
}
|
|
216
|
+
async deleteMetadataProperty(payload) {
|
|
217
|
+
const { app_name, machine_id, key } = payload;
|
|
218
|
+
return await this.client.restOrThrow(`apps/${app_name}/machines/${machine_id}/metadata/${key}`, 'DELETE');
|
|
219
|
+
}
|
|
220
|
+
// --- Org-level ---
|
|
221
|
+
async listOrgMachines(payload) {
|
|
222
|
+
const { org_slug, ...params } = payload;
|
|
223
|
+
let path = `orgs/${org_slug}/machines`;
|
|
224
|
+
const queryParams = {};
|
|
225
|
+
if (params.include_deleted !== undefined) {
|
|
226
|
+
queryParams.include_deleted = String(params.include_deleted);
|
|
227
|
+
}
|
|
228
|
+
if (params.region) {
|
|
229
|
+
queryParams.region = params.region;
|
|
230
|
+
}
|
|
231
|
+
if (params.state) {
|
|
232
|
+
queryParams.state = params.state;
|
|
233
|
+
}
|
|
234
|
+
if (params.updated_after) {
|
|
235
|
+
queryParams.updated_after = params.updated_after;
|
|
236
|
+
}
|
|
237
|
+
if (params.cursor) {
|
|
238
|
+
queryParams.cursor = params.cursor;
|
|
239
|
+
}
|
|
240
|
+
if (params.limit !== undefined) {
|
|
241
|
+
queryParams.limit = String(params.limit);
|
|
242
|
+
}
|
|
243
|
+
const query = new URLSearchParams(queryParams).toString();
|
|
244
|
+
if (query) {
|
|
245
|
+
path += `?${query}`;
|
|
246
|
+
}
|
|
247
|
+
return await this.client.restOrThrow(path);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Client } from './client.ts';
|
|
2
|
+
import type { FlyResult } from './errors.ts';
|
|
3
|
+
export declare enum AddressType {
|
|
4
|
+
v4 = "v4",
|
|
5
|
+
v6 = "v6",
|
|
6
|
+
private_v6 = "private_v6",
|
|
7
|
+
shared_v4 = "shared_v4"
|
|
8
|
+
}
|
|
9
|
+
export interface AllocateIPAddressInput {
|
|
10
|
+
appId: string;
|
|
11
|
+
type: AddressType;
|
|
12
|
+
organizationId?: string;
|
|
13
|
+
region?: string;
|
|
14
|
+
network?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface AllocateIPAddressOutput {
|
|
17
|
+
allocateIpAddress: {
|
|
18
|
+
ipAddress: {
|
|
19
|
+
id: string;
|
|
20
|
+
address: string;
|
|
21
|
+
type: AddressType;
|
|
22
|
+
region: string;
|
|
23
|
+
createdAt: string;
|
|
24
|
+
} | null;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export interface ReleaseIPAddressInput {
|
|
28
|
+
appId?: string;
|
|
29
|
+
ipAddressId?: string;
|
|
30
|
+
ip?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface ReleaseIPAddressOutput {
|
|
33
|
+
releaseIpAddress: {
|
|
34
|
+
app: {
|
|
35
|
+
name: string;
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export declare class Network {
|
|
40
|
+
private client;
|
|
41
|
+
constructor(client: Client);
|
|
42
|
+
allocateIpAddress(input: AllocateIPAddressInput): Promise<FlyResult<AllocateIPAddressOutput>>;
|
|
43
|
+
releaseIpAddress(input: ReleaseIPAddressInput): Promise<FlyResult<ReleaseIPAddressOutput>>;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=network.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../src/network.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE5C,oBAAY,WAAW;IACrB,EAAE,OAAO;IACT,EAAE,OAAO;IACT,UAAU,eAAe;IACzB,SAAS,cAAc;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,WAAW,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,uBAAuB;IACtC,iBAAiB,EAAE;QACjB,SAAS,EAAE;YACT,EAAE,EAAE,MAAM,CAAA;YACV,OAAO,EAAE,MAAM,CAAA;YACf,IAAI,EAAE,WAAW,CAAA;YACjB,MAAM,EAAE,MAAM,CAAA;YACd,SAAS,EAAE,MAAM,CAAA;SAClB,GAAG,IAAI,CAAA;KACT,CAAA;CACF;AAcD,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,sBAAsB;IACrC,gBAAgB,EAAE;QAChB,GAAG,EAAE;YACH,IAAI,EAAE,MAAM,CAAA;SACb,CAAA;KACF,CAAA;CACF;AAUD,qBAAa,OAAO;IAClB,OAAO,CAAC,MAAM,CAAQ;gBAEV,MAAM,EAAE,MAAM;IAIpB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;IAO7F,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;CAMjG"}
|
package/dist/network.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// Network (IP address) management via Fly GraphQL API.
|
|
2
|
+
export var AddressType;
|
|
3
|
+
(function (AddressType) {
|
|
4
|
+
AddressType["v4"] = "v4";
|
|
5
|
+
AddressType["v6"] = "v6";
|
|
6
|
+
AddressType["private_v6"] = "private_v6";
|
|
7
|
+
AddressType["shared_v4"] = "shared_v4";
|
|
8
|
+
})(AddressType || (AddressType = {}));
|
|
9
|
+
const allocateIpAddressQuery = `mutation($input: AllocateIPAddressInput!) {
|
|
10
|
+
allocateIpAddress(input: $input) {
|
|
11
|
+
ipAddress {
|
|
12
|
+
id
|
|
13
|
+
address
|
|
14
|
+
type
|
|
15
|
+
region
|
|
16
|
+
createdAt
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}`;
|
|
20
|
+
const releaseIpAddressQuery = `mutation($input: ReleaseIPAddressInput!) {
|
|
21
|
+
releaseIpAddress(input: $input) {
|
|
22
|
+
app {
|
|
23
|
+
name
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}`;
|
|
27
|
+
export class Network {
|
|
28
|
+
client;
|
|
29
|
+
constructor(client) {
|
|
30
|
+
this.client = client;
|
|
31
|
+
}
|
|
32
|
+
async allocateIpAddress(input) {
|
|
33
|
+
return this.client.gqlPostOrThrow({
|
|
34
|
+
query: allocateIpAddressQuery,
|
|
35
|
+
variables: { input },
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
async releaseIpAddress(input) {
|
|
39
|
+
return this.client.gqlPostOrThrow({
|
|
40
|
+
query: releaseIpAddressQuery,
|
|
41
|
+
variables: { input },
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Client } from './client.ts';
|
|
2
|
+
import type { FlyResult } from './errors.ts';
|
|
3
|
+
export type GetOrganizationInput = string;
|
|
4
|
+
interface OrganizationResponse {
|
|
5
|
+
id: string;
|
|
6
|
+
slug: string;
|
|
7
|
+
name: string;
|
|
8
|
+
type: 'PERSONAL' | 'SHARED';
|
|
9
|
+
viewerRole: 'admin' | 'member';
|
|
10
|
+
}
|
|
11
|
+
export interface GetOrganizationOutput {
|
|
12
|
+
organization: OrganizationResponse;
|
|
13
|
+
}
|
|
14
|
+
export declare class Organization {
|
|
15
|
+
private client;
|
|
16
|
+
constructor(client: Client);
|
|
17
|
+
getOrganization(slug: GetOrganizationInput): Promise<FlyResult<GetOrganizationOutput>>;
|
|
18
|
+
}
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=organization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"organization.d.ts","sourceRoot":"","sources":["../src/organization.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE5C,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAA;AAEzC,UAAU,oBAAoB;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,UAAU,GAAG,QAAQ,CAAA;IAC3B,UAAU,EAAE,OAAO,GAAG,QAAQ,CAAA;CAC/B;AAED,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,oBAAoB,CAAA;CACnC;AAYD,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAQ;gBAEV,MAAM,EAAE,MAAM;IAIpB,eAAe,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;CAM7F"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// Organization queries via Fly GraphQL API.
|
|
2
|
+
const getOrganizationQuery = `query($slug: String!) {
|
|
3
|
+
organization(slug: $slug) {
|
|
4
|
+
id
|
|
5
|
+
slug
|
|
6
|
+
name
|
|
7
|
+
type
|
|
8
|
+
viewerRole
|
|
9
|
+
}
|
|
10
|
+
}`;
|
|
11
|
+
export class Organization {
|
|
12
|
+
client;
|
|
13
|
+
constructor(client) {
|
|
14
|
+
this.client = client;
|
|
15
|
+
}
|
|
16
|
+
async getOrganization(slug) {
|
|
17
|
+
return this.client.gqlPostOrThrow({
|
|
18
|
+
query: getOrganizationQuery,
|
|
19
|
+
variables: { slug },
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Client } from './client.ts';
|
|
2
|
+
import type { FlyResult } from './errors.ts';
|
|
3
|
+
import type { MainGetPlacementsRequest, MainGetPlacementsResponse, MainRegionResponse } from './types.ts';
|
|
4
|
+
interface RegionResponse {
|
|
5
|
+
name: string;
|
|
6
|
+
code: string;
|
|
7
|
+
latitude: number;
|
|
8
|
+
longitude: number;
|
|
9
|
+
gatewayAvailable: boolean;
|
|
10
|
+
requiresPaidPlan: boolean;
|
|
11
|
+
}
|
|
12
|
+
interface PlatformResponse {
|
|
13
|
+
requestRegion: string;
|
|
14
|
+
regions: RegionResponse[];
|
|
15
|
+
}
|
|
16
|
+
export interface GetRegionsOutput {
|
|
17
|
+
platform: PlatformResponse;
|
|
18
|
+
}
|
|
19
|
+
export interface GetPlatformRegionsRequest {
|
|
20
|
+
size?: string;
|
|
21
|
+
cpu_kind?: string;
|
|
22
|
+
memory_mb?: number;
|
|
23
|
+
cpus?: number;
|
|
24
|
+
gpus?: number;
|
|
25
|
+
gpu_kind?: string;
|
|
26
|
+
}
|
|
27
|
+
export declare class Regions {
|
|
28
|
+
private client;
|
|
29
|
+
constructor(client: Client);
|
|
30
|
+
getRegions(): Promise<FlyResult<GetRegionsOutput>>;
|
|
31
|
+
getPlatformRegions(payload?: GetPlatformRegionsRequest): Promise<FlyResult<MainRegionResponse>>;
|
|
32
|
+
getPlacements(request: MainGetPlacementsRequest): Promise<FlyResult<MainGetPlacementsResponse>>;
|
|
33
|
+
}
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=regions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regions.d.ts","sourceRoot":"","sources":["../src/regions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EACzB,kBAAkB,EACnB,MAAM,YAAY,CAAA;AAEnB,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,gBAAgB,EAAE,OAAO,CAAA;IACzB,gBAAgB,EAAE,OAAO,CAAA;CAC1B;AAED,UAAU,gBAAgB;IACxB,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,cAAc,EAAE,CAAA;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,gBAAgB,CAAA;CAC3B;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAgBD,qBAAa,OAAO;IAClB,OAAO,CAAC,MAAM,CAAQ;gBAEV,MAAM,EAAE,MAAM;IAIpB,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAOlD,kBAAkB,CAAC,OAAO,GAAE,yBAA8B,GAAG,OAAO,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;IAyBnG,aAAa,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;CAGtG"}
|
package/dist/regions.js
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// Region listing via Fly GraphQL API.
|
|
2
|
+
const getRegionsQuery = `query {
|
|
3
|
+
platform {
|
|
4
|
+
requestRegion
|
|
5
|
+
regions {
|
|
6
|
+
name
|
|
7
|
+
code
|
|
8
|
+
latitude
|
|
9
|
+
longitude
|
|
10
|
+
gatewayAvailable
|
|
11
|
+
requiresPaidPlan
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}`;
|
|
15
|
+
export class Regions {
|
|
16
|
+
client;
|
|
17
|
+
constructor(client) {
|
|
18
|
+
this.client = client;
|
|
19
|
+
}
|
|
20
|
+
async getRegions() {
|
|
21
|
+
return this.client.gqlPostOrThrow({
|
|
22
|
+
query: getRegionsQuery,
|
|
23
|
+
variables: {},
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
async getPlatformRegions(payload = {}) {
|
|
27
|
+
const params = new URLSearchParams();
|
|
28
|
+
if (payload.size) {
|
|
29
|
+
params.set('size', payload.size);
|
|
30
|
+
}
|
|
31
|
+
if (payload.cpu_kind) {
|
|
32
|
+
params.set('cpu_kind', payload.cpu_kind);
|
|
33
|
+
}
|
|
34
|
+
if (payload.memory_mb !== undefined) {
|
|
35
|
+
params.set('memory_mb', String(payload.memory_mb));
|
|
36
|
+
}
|
|
37
|
+
if (payload.cpus !== undefined) {
|
|
38
|
+
params.set('cpus', String(payload.cpus));
|
|
39
|
+
}
|
|
40
|
+
if (payload.gpus !== undefined) {
|
|
41
|
+
params.set('gpus', String(payload.gpus));
|
|
42
|
+
}
|
|
43
|
+
if (payload.gpu_kind) {
|
|
44
|
+
params.set('gpu_kind', payload.gpu_kind);
|
|
45
|
+
}
|
|
46
|
+
const query = params.toString();
|
|
47
|
+
const path = `platform/regions${query ? `?${query}` : ''}`;
|
|
48
|
+
return await this.client.restOrThrow(path);
|
|
49
|
+
}
|
|
50
|
+
async getPlacements(request) {
|
|
51
|
+
return await this.client.restOrThrow('platform/placements', 'POST', request);
|
|
52
|
+
}
|
|
53
|
+
}
|
package/dist/secret.d.ts
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Client } from './client.ts';
|
|
2
|
+
import type { FlyResult } from './errors.ts';
|
|
3
|
+
export interface SetSecretsInput {
|
|
4
|
+
appId: string;
|
|
5
|
+
secrets: {
|
|
6
|
+
key: string;
|
|
7
|
+
value: string;
|
|
8
|
+
}[];
|
|
9
|
+
replaceAll?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface SetSecretsOutput {
|
|
12
|
+
setSecrets: {
|
|
13
|
+
release: {
|
|
14
|
+
id: string;
|
|
15
|
+
version: string;
|
|
16
|
+
reason: string;
|
|
17
|
+
description: string;
|
|
18
|
+
user: {
|
|
19
|
+
id: string;
|
|
20
|
+
email: string;
|
|
21
|
+
name: string;
|
|
22
|
+
};
|
|
23
|
+
evaluationId: string;
|
|
24
|
+
createdAt: string;
|
|
25
|
+
} | null;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export interface UnsetSecretsInput {
|
|
29
|
+
appId: string;
|
|
30
|
+
keys: string[];
|
|
31
|
+
}
|
|
32
|
+
export interface UnsetSecretsOutput {
|
|
33
|
+
unsetSecrets: {
|
|
34
|
+
release: {
|
|
35
|
+
id: string;
|
|
36
|
+
version: string;
|
|
37
|
+
reason: string;
|
|
38
|
+
description: string;
|
|
39
|
+
user: {
|
|
40
|
+
id: string;
|
|
41
|
+
email: string;
|
|
42
|
+
name: string;
|
|
43
|
+
};
|
|
44
|
+
evaluationId: string;
|
|
45
|
+
createdAt: string;
|
|
46
|
+
} | null;
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
export declare class Secret {
|
|
50
|
+
private client;
|
|
51
|
+
constructor(client: Client);
|
|
52
|
+
setSecrets(input: SetSecretsInput): Promise<FlyResult<SetSecretsOutput>>;
|
|
53
|
+
unsetSecrets(input: UnsetSecretsInput): Promise<FlyResult<UnsetSecretsOutput>>;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=secret.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret.d.ts","sourceRoot":"","sources":["../src/secret.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE5C,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACzC,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE;QACV,OAAO,EAAE;YACP,EAAE,EAAE,MAAM,CAAA;YACV,OAAO,EAAE,MAAM,CAAA;YACf,MAAM,EAAE,MAAM,CAAA;YACd,WAAW,EAAE,MAAM,CAAA;YACnB,IAAI,EAAE;gBAAE,EAAE,EAAE,MAAM,CAAC;gBAAC,KAAK,EAAE,MAAM,CAAC;gBAAC,IAAI,EAAE,MAAM,CAAA;aAAE,CAAA;YACjD,YAAY,EAAE,MAAM,CAAA;YACpB,SAAS,EAAE,MAAM,CAAA;SAClB,GAAG,IAAI,CAAA;KACT,CAAA;CACF;AAoBD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,EAAE,CAAA;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE;QACZ,OAAO,EAAE;YACP,EAAE,EAAE,MAAM,CAAA;YACV,OAAO,EAAE,MAAM,CAAA;YACf,MAAM,EAAE,MAAM,CAAA;YACd,WAAW,EAAE,MAAM,CAAA;YACnB,IAAI,EAAE;gBAAE,EAAE,EAAE,MAAM,CAAC;gBAAC,KAAK,EAAE,MAAM,CAAC;gBAAC,IAAI,EAAE,MAAM,CAAA;aAAE,CAAA;YACjD,YAAY,EAAE,MAAM,CAAA;YACpB,SAAS,EAAE,MAAM,CAAA;SAClB,GAAG,IAAI,CAAA;KACT,CAAA;CACF;AAoBD,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAQ;gBAEV,MAAM,EAAE,MAAM;IAIpB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAOxE,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;CAMrF"}
|
package/dist/secret.js
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// Secrets management via Fly GraphQL API.
|
|
2
|
+
const setSecretsQuery = `mutation($input: SetSecretsInput!) {
|
|
3
|
+
setSecrets(input: $input) {
|
|
4
|
+
release {
|
|
5
|
+
id
|
|
6
|
+
version
|
|
7
|
+
reason
|
|
8
|
+
description
|
|
9
|
+
user {
|
|
10
|
+
id
|
|
11
|
+
email
|
|
12
|
+
name
|
|
13
|
+
}
|
|
14
|
+
evaluationId
|
|
15
|
+
createdAt
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}`;
|
|
19
|
+
const unsetSecretsQuery = `mutation($input: UnsetSecretsInput!) {
|
|
20
|
+
unsetSecrets(input: $input) {
|
|
21
|
+
release {
|
|
22
|
+
id
|
|
23
|
+
version
|
|
24
|
+
reason
|
|
25
|
+
description
|
|
26
|
+
user {
|
|
27
|
+
id
|
|
28
|
+
email
|
|
29
|
+
name
|
|
30
|
+
}
|
|
31
|
+
evaluationId
|
|
32
|
+
createdAt
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}`;
|
|
36
|
+
export class Secret {
|
|
37
|
+
client;
|
|
38
|
+
constructor(client) {
|
|
39
|
+
this.client = client;
|
|
40
|
+
}
|
|
41
|
+
async setSecrets(input) {
|
|
42
|
+
return await this.client.gqlPostOrThrow({
|
|
43
|
+
query: setSecretsQuery,
|
|
44
|
+
variables: { input },
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
async unsetSecrets(input) {
|
|
48
|
+
return await this.client.gqlPostOrThrow({
|
|
49
|
+
query: unsetSecretsQuery,
|
|
50
|
+
variables: { input },
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
package/dist/token.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Client } from './client.ts';
|
|
2
|
+
import type { CreateOIDCTokenRequest, CurrentTokenResponse } from './types.ts';
|
|
3
|
+
import type { FlyResult } from './errors.ts';
|
|
4
|
+
export interface RequestOIDCTokenRequest {
|
|
5
|
+
request: CreateOIDCTokenRequest;
|
|
6
|
+
}
|
|
7
|
+
export declare class Token {
|
|
8
|
+
private client;
|
|
9
|
+
constructor(client: Client);
|
|
10
|
+
requestKmsToken(): Promise<FlyResult<string>>;
|
|
11
|
+
requestOidcToken(payload: RequestOIDCTokenRequest): Promise<FlyResult<string>>;
|
|
12
|
+
getCurrentToken(): Promise<FlyResult<CurrentTokenResponse>>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=token.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../src/token.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,KAAK,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAC9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE5C,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,sBAAsB,CAAA;CAChC;AAED,qBAAa,KAAK;IAChB,OAAO,CAAC,MAAM,CAAQ;gBAEV,MAAM,EAAE,MAAM;IAIpB,eAAe,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAI7C,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAI9E,eAAe,IAAI,OAAO,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;CAGlE"}
|
package/dist/token.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// Token management for Fly Machines REST API.
|
|
2
|
+
export class Token {
|
|
3
|
+
client;
|
|
4
|
+
constructor(client) {
|
|
5
|
+
this.client = client;
|
|
6
|
+
}
|
|
7
|
+
async requestKmsToken() {
|
|
8
|
+
return await this.client.restOrThrow('tokens/kms', 'POST');
|
|
9
|
+
}
|
|
10
|
+
async requestOidcToken(payload) {
|
|
11
|
+
return await this.client.restOrThrow('tokens/oidc', 'POST', payload.request);
|
|
12
|
+
}
|
|
13
|
+
async getCurrentToken() {
|
|
14
|
+
return await this.client.restOrThrow('tokens/current');
|
|
15
|
+
}
|
|
16
|
+
}
|