@heramb1/provider-railway 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/dist/index.d.ts +33 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +302 -0
- package/dist/index.js.map +1 -0
- package/package.json +39 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { DeployOptions, DeployResult, DestroyResult, EnvVarResult, ProviderLock, StatusResult } from '@heramb1/core';
|
|
2
|
+
export interface RailwayLockOptions {
|
|
3
|
+
token: string;
|
|
4
|
+
}
|
|
5
|
+
export declare class RailwayLock implements ProviderLock {
|
|
6
|
+
readonly name = "railway";
|
|
7
|
+
private client;
|
|
8
|
+
constructor(options: RailwayLockOptions);
|
|
9
|
+
deploy(options: DeployOptions): Promise<DeployResult>;
|
|
10
|
+
/** Find an existing Railway project by name or create one. */
|
|
11
|
+
findOrCreateProject(name: string): Promise<{
|
|
12
|
+
id: string;
|
|
13
|
+
name: string;
|
|
14
|
+
}>;
|
|
15
|
+
/** Find an existing service in a project or create an empty one. */
|
|
16
|
+
findOrCreateService(projectId: string, name: string): Promise<{
|
|
17
|
+
id: string;
|
|
18
|
+
name: string;
|
|
19
|
+
}>;
|
|
20
|
+
private listProjects;
|
|
21
|
+
private listServices;
|
|
22
|
+
getStatus(serviceId: string): Promise<StatusResult>;
|
|
23
|
+
setEnvVars(serviceId: string, vars: Record<string, string>): Promise<EnvVarResult>;
|
|
24
|
+
getLogs(serviceId: string): AsyncIterable<string>;
|
|
25
|
+
destroy(serviceId: string): Promise<DestroyResult>;
|
|
26
|
+
private triggerDeploy;
|
|
27
|
+
private getEnvironmentIdForService;
|
|
28
|
+
private getDefaultEnvironmentId;
|
|
29
|
+
private waitForDeploy;
|
|
30
|
+
private getProjectIdForService;
|
|
31
|
+
}
|
|
32
|
+
export declare function createRailwayLock(token: string): RailwayLock;
|
|
33
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,YAAY,EACb,MAAM,eAAe,CAAC;AAIvB,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,WAAY,YAAW,YAAY;IAC9C,QAAQ,CAAC,IAAI,aAAa;IAC1B,OAAO,CAAC,MAAM,CAAgB;gBAElB,OAAO,EAAE,kBAAkB;IASjC,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IA6B3D,8DAA8D;IACxD,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAqB9E,oEAAoE;IAC9D,mBAAmB,CACvB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;YAqB1B,YAAY;YAwBZ,YAAY;IA0BpB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA2CnD,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IA8BjF,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;IAMlD,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;YAiB1C,aAAa;YAUb,0BAA0B;YA6B1B,uBAAuB;YA4BvB,aAAa;YAyBb,sBAAsB;CAarC;AAwBD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAE5D"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
import { GraphQLClient, gql } from 'graphql-request';
|
|
2
|
+
const RAILWAY_API = 'https://backboard.railway.app/graphql/v2';
|
|
3
|
+
export class RailwayLock {
|
|
4
|
+
name = 'railway';
|
|
5
|
+
client;
|
|
6
|
+
constructor(options) {
|
|
7
|
+
this.client = new GraphQLClient(RAILWAY_API, {
|
|
8
|
+
headers: {
|
|
9
|
+
Authorization: `Bearer ${options.token}`,
|
|
10
|
+
'Content-Type': 'application/json',
|
|
11
|
+
},
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
async deploy(options) {
|
|
15
|
+
let { serviceId, projectId } = options;
|
|
16
|
+
const { envVars } = options;
|
|
17
|
+
if (!serviceId && options.name) {
|
|
18
|
+
const project = await this.findOrCreateProject(options.name);
|
|
19
|
+
projectId = project.id;
|
|
20
|
+
const service = await this.findOrCreateService(projectId, options.name);
|
|
21
|
+
serviceId = service.id;
|
|
22
|
+
}
|
|
23
|
+
if (!serviceId && projectId) {
|
|
24
|
+
const service = await this.findOrCreateService(projectId, options.name ?? 'backend');
|
|
25
|
+
serviceId = service.id;
|
|
26
|
+
}
|
|
27
|
+
if (envVars && serviceId) {
|
|
28
|
+
await this.setEnvVars(serviceId, envVars);
|
|
29
|
+
}
|
|
30
|
+
if (serviceId) {
|
|
31
|
+
await this.triggerDeploy(serviceId);
|
|
32
|
+
const url = await this.waitForDeploy(serviceId);
|
|
33
|
+
return { url, serviceId };
|
|
34
|
+
}
|
|
35
|
+
throw new Error('Railway deploy requires serviceId, projectId, or name for auto-provision');
|
|
36
|
+
}
|
|
37
|
+
/** Find an existing Railway project by name or create one. */
|
|
38
|
+
async findOrCreateProject(name) {
|
|
39
|
+
const existing = await this.listProjects();
|
|
40
|
+
const match = existing.find((p) => p.name === name);
|
|
41
|
+
if (match)
|
|
42
|
+
return match;
|
|
43
|
+
const mutation = gql `
|
|
44
|
+
mutation projectCreate($input: ProjectCreateInput!) {
|
|
45
|
+
projectCreate(input: $input) {
|
|
46
|
+
id
|
|
47
|
+
name
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
`;
|
|
51
|
+
const data = await this.client.request(mutation, { input: { name } });
|
|
52
|
+
return data.projectCreate;
|
|
53
|
+
}
|
|
54
|
+
/** Find an existing service in a project or create an empty one. */
|
|
55
|
+
async findOrCreateService(projectId, name) {
|
|
56
|
+
const existing = await this.listServices(projectId);
|
|
57
|
+
const match = existing.find((s) => s.name === name);
|
|
58
|
+
if (match)
|
|
59
|
+
return match;
|
|
60
|
+
const mutation = gql `
|
|
61
|
+
mutation serviceCreate($input: ServiceCreateInput!) {
|
|
62
|
+
serviceCreate(input: $input) {
|
|
63
|
+
id
|
|
64
|
+
name
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
`;
|
|
68
|
+
const data = await this.client.request(mutation, { input: { projectId, name } });
|
|
69
|
+
return data.serviceCreate;
|
|
70
|
+
}
|
|
71
|
+
async listProjects() {
|
|
72
|
+
const query = gql `
|
|
73
|
+
query projects {
|
|
74
|
+
projects {
|
|
75
|
+
edges {
|
|
76
|
+
node {
|
|
77
|
+
id
|
|
78
|
+
name
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
`;
|
|
84
|
+
try {
|
|
85
|
+
const data = await this.client.request(query);
|
|
86
|
+
return data.projects.edges.map((e) => e.node);
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
return [];
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
async listServices(projectId) {
|
|
93
|
+
const query = gql `
|
|
94
|
+
query project($id: String!) {
|
|
95
|
+
project(id: $id) {
|
|
96
|
+
services {
|
|
97
|
+
edges {
|
|
98
|
+
node {
|
|
99
|
+
id
|
|
100
|
+
name
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
`;
|
|
107
|
+
try {
|
|
108
|
+
const data = await this.client.request(query, { id: projectId });
|
|
109
|
+
return data.project?.services?.edges.map((e) => e.node) ?? [];
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
return [];
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
async getStatus(serviceId) {
|
|
116
|
+
const query = gql `
|
|
117
|
+
query service($id: String!) {
|
|
118
|
+
service(id: $id) {
|
|
119
|
+
id
|
|
120
|
+
name
|
|
121
|
+
serviceInstances {
|
|
122
|
+
edges {
|
|
123
|
+
node {
|
|
124
|
+
latestDeployment {
|
|
125
|
+
status
|
|
126
|
+
staticUrl
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
`;
|
|
134
|
+
try {
|
|
135
|
+
const data = await this.client.request(query, { id: serviceId });
|
|
136
|
+
const deployment = data.service?.serviceInstances?.edges[0]?.node?.latestDeployment;
|
|
137
|
+
const status = mapRailwayStatus(deployment?.status);
|
|
138
|
+
const url = deployment?.staticUrl ? `https://${deployment.staticUrl}` : undefined;
|
|
139
|
+
return { status, url };
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
return { status: 'unknown' };
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
async setEnvVars(serviceId, vars) {
|
|
146
|
+
try {
|
|
147
|
+
const query = gql `
|
|
148
|
+
mutation variableCollectionUpsert($input: VariableCollectionUpsertInput!) {
|
|
149
|
+
variableCollectionUpsert(input: $input)
|
|
150
|
+
}
|
|
151
|
+
`;
|
|
152
|
+
const projectId = await this.getProjectIdForService(serviceId);
|
|
153
|
+
const environmentId = await this.getEnvironmentIdForService(serviceId);
|
|
154
|
+
await this.client.request(query, {
|
|
155
|
+
input: {
|
|
156
|
+
projectId,
|
|
157
|
+
serviceId,
|
|
158
|
+
environmentId,
|
|
159
|
+
variables: vars,
|
|
160
|
+
replace: false,
|
|
161
|
+
},
|
|
162
|
+
});
|
|
163
|
+
return { ok: true };
|
|
164
|
+
}
|
|
165
|
+
catch (err) {
|
|
166
|
+
return {
|
|
167
|
+
ok: false,
|
|
168
|
+
error: err instanceof Error ? err.message : String(err),
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
async *getLogs(serviceId) {
|
|
173
|
+
const status = await this.getStatus(serviceId);
|
|
174
|
+
yield `[railway] Service ${serviceId} — status: ${status.status}${status.url ? ` (${status.url})` : ''}`;
|
|
175
|
+
yield `[railway] Use Railway dashboard or CLI for full log streaming`;
|
|
176
|
+
}
|
|
177
|
+
async destroy(serviceId) {
|
|
178
|
+
try {
|
|
179
|
+
const mutation = gql `
|
|
180
|
+
mutation serviceDelete($id: String!) {
|
|
181
|
+
serviceDelete(id: $id)
|
|
182
|
+
}
|
|
183
|
+
`;
|
|
184
|
+
await this.client.request(mutation, { id: serviceId });
|
|
185
|
+
return { ok: true };
|
|
186
|
+
}
|
|
187
|
+
catch (err) {
|
|
188
|
+
return {
|
|
189
|
+
ok: false,
|
|
190
|
+
error: err instanceof Error ? err.message : String(err),
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
async triggerDeploy(serviceId) {
|
|
195
|
+
const environmentId = await this.getEnvironmentIdForService(serviceId);
|
|
196
|
+
const mutation = gql `
|
|
197
|
+
mutation serviceInstanceDeploy($serviceId: String!, $environmentId: String!) {
|
|
198
|
+
serviceInstanceDeploy(serviceId: $serviceId, environmentId: $environmentId)
|
|
199
|
+
}
|
|
200
|
+
`;
|
|
201
|
+
await this.client.request(mutation, { serviceId, environmentId });
|
|
202
|
+
}
|
|
203
|
+
async getEnvironmentIdForService(serviceId) {
|
|
204
|
+
const query = gql `
|
|
205
|
+
query service($id: String!) {
|
|
206
|
+
service(id: $id) {
|
|
207
|
+
projectId
|
|
208
|
+
serviceInstances {
|
|
209
|
+
edges {
|
|
210
|
+
node {
|
|
211
|
+
environmentId
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
`;
|
|
218
|
+
const data = await this.client.request(query, { id: serviceId });
|
|
219
|
+
const fromInstance = data.service.serviceInstances?.edges[0]?.node?.environmentId;
|
|
220
|
+
if (fromInstance)
|
|
221
|
+
return fromInstance;
|
|
222
|
+
return this.getDefaultEnvironmentId(data.service.projectId);
|
|
223
|
+
}
|
|
224
|
+
async getDefaultEnvironmentId(projectId) {
|
|
225
|
+
const query = gql `
|
|
226
|
+
query project($id: String!) {
|
|
227
|
+
project(id: $id) {
|
|
228
|
+
environments {
|
|
229
|
+
edges {
|
|
230
|
+
node {
|
|
231
|
+
id
|
|
232
|
+
name
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
`;
|
|
239
|
+
const data = await this.client.request(query, { id: projectId });
|
|
240
|
+
const envs = data.project?.environments?.edges.map((e) => e.node) ?? [];
|
|
241
|
+
const production = envs.find((e) => e.name.toLowerCase() === 'production') ?? envs[0];
|
|
242
|
+
if (!production) {
|
|
243
|
+
throw new Error(`No Railway environment found for project ${projectId}`);
|
|
244
|
+
}
|
|
245
|
+
return production.id;
|
|
246
|
+
}
|
|
247
|
+
async waitForDeploy(serviceId, maxAttempts = 24) {
|
|
248
|
+
for (let i = 0; i < maxAttempts; i++) {
|
|
249
|
+
const status = await this.getStatus(serviceId);
|
|
250
|
+
if (status.status === 'live' && status.url) {
|
|
251
|
+
return status.url;
|
|
252
|
+
}
|
|
253
|
+
if (status.status === 'failed') {
|
|
254
|
+
throw new Error(`Railway deployment failed for service ${serviceId}. Check build logs in the Railway dashboard.`);
|
|
255
|
+
}
|
|
256
|
+
if (i >= 5 && status.status === 'pending' && !status.url) {
|
|
257
|
+
throw new Error('Railway service has no deployment yet. In Railway dashboard: connect this service to your GitHub repo, ' +
|
|
258
|
+
'set root directory (e.g. packages/api), build & start commands, then run heramb deploy again. ' +
|
|
259
|
+
`Service ID: ${serviceId}`);
|
|
260
|
+
}
|
|
261
|
+
await sleep(5000);
|
|
262
|
+
}
|
|
263
|
+
throw new Error('Railway deployment timed out. Open the Railway dashboard — the service may need a GitHub repo linked or env vars set.');
|
|
264
|
+
}
|
|
265
|
+
async getProjectIdForService(serviceId) {
|
|
266
|
+
const query = gql `
|
|
267
|
+
query service($id: String!) {
|
|
268
|
+
service(id: $id) {
|
|
269
|
+
projectId
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
`;
|
|
273
|
+
const data = await this.client.request(query, {
|
|
274
|
+
id: serviceId,
|
|
275
|
+
});
|
|
276
|
+
return data.service.projectId;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
function mapRailwayStatus(status) {
|
|
280
|
+
switch (status?.toUpperCase()) {
|
|
281
|
+
case 'SUCCESS':
|
|
282
|
+
case 'ACTIVE':
|
|
283
|
+
return 'live';
|
|
284
|
+
case 'BUILDING':
|
|
285
|
+
case 'DEPLOYING':
|
|
286
|
+
return 'deploying';
|
|
287
|
+
case 'FAILED':
|
|
288
|
+
case 'CRASHED':
|
|
289
|
+
return 'failed';
|
|
290
|
+
case 'INITIALIZING':
|
|
291
|
+
return 'building';
|
|
292
|
+
default:
|
|
293
|
+
return 'pending';
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
function sleep(ms) {
|
|
297
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
298
|
+
}
|
|
299
|
+
export function createRailwayLock(token) {
|
|
300
|
+
return new RailwayLock({ token });
|
|
301
|
+
}
|
|
302
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@heramb1/provider-railway",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Railway lock — GraphQL API driver for Heramb",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"scripts": {
|
|
15
|
+
"build": "tsc"
|
|
16
|
+
},
|
|
17
|
+
"files": ["dist"],
|
|
18
|
+
"license": "MIT",
|
|
19
|
+
"publishConfig": {
|
|
20
|
+
"access": "public"
|
|
21
|
+
},
|
|
22
|
+
"repository": {
|
|
23
|
+
"type": "git",
|
|
24
|
+
"url": "git+https://github.com/buildwithrenuka/heremb.git",
|
|
25
|
+
"directory": "packages/providers/railway"
|
|
26
|
+
},
|
|
27
|
+
"keywords": ["deploy", "railway", "heramb"],
|
|
28
|
+
"engines": {
|
|
29
|
+
"node": ">=18"
|
|
30
|
+
},
|
|
31
|
+
"dependencies": {
|
|
32
|
+
"@heramb1/core": "0.1.0",
|
|
33
|
+
"graphql": "^16.9.0",
|
|
34
|
+
"graphql-request": "^7.1.2"
|
|
35
|
+
},
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"typescript": "^5.7.2"
|
|
38
|
+
}
|
|
39
|
+
}
|