@tinybirdco/sdk 0.0.53 → 0.0.55

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.
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Deploy resources to Tinybird main workspace
3
- * Uses the /v1/deploy endpoint with auto-promotion enabled
3
+ * Uses the /v1/deploy endpoint to create a deployment, then sets it live
4
4
  */
5
5
  import type { GeneratedResources } from "../generator/index.js";
6
6
  import type { BuildConfig, BuildApiResult } from "./build.js";
@@ -8,7 +8,7 @@ import type { BuildConfig, BuildApiResult } from "./build.js";
8
8
  * Feedback item from deployment response
9
9
  */
10
10
  export interface DeploymentFeedback {
11
- resource: string;
11
+ resource: string | null;
12
12
  level: "ERROR" | "WARNING" | "INFO";
13
13
  message: string;
14
14
  }
@@ -23,6 +23,12 @@ export interface Deployment {
23
23
  updated_at?: string;
24
24
  feedback?: DeploymentFeedback[];
25
25
  }
26
+ /**
27
+ * Response from /v1/deployments list endpoint
28
+ */
29
+ export interface DeploymentsListResponse {
30
+ deployments: Deployment[];
31
+ }
26
32
  /**
27
33
  * Response from /v1/deploy endpoint
28
34
  */
@@ -35,13 +41,6 @@ export interface DeployResponse {
35
41
  error: string;
36
42
  }>;
37
43
  }
38
- /**
39
- * Response from /v1/deployments/{id} endpoint
40
- */
41
- export interface DeploymentStatusResponse {
42
- result: string;
43
- deployment: Deployment;
44
- }
45
44
  /**
46
45
  * Detailed deployment information with resource changes
47
46
  */
@@ -70,11 +69,20 @@ export interface DeploymentDetails extends Deployment {
70
69
  error: string;
71
70
  }>;
72
71
  }
72
+ /**
73
+ * Response from /v1/deployments/{id} endpoint
74
+ */
75
+ export interface DeploymentStatusResponse {
76
+ result: string;
77
+ deployment: Deployment;
78
+ }
73
79
  /**
74
80
  * Deploy generated resources to Tinybird main workspace
75
81
  *
76
82
  * Uses the /v1/deploy endpoint which accepts all resources in a single
77
- * multipart form request.
83
+ * multipart form request. After creating the deployment, this function:
84
+ * 1. Polls until the deployment is ready (status === 'data_ready')
85
+ * 2. Sets the deployment as live via /v1/deployments/{id}/set-live
78
86
  *
79
87
  * @param config - Build configuration with API URL and token
80
88
  * @param resources - Generated resources to deploy
@@ -142,7 +150,6 @@ export declare function deployToMain(config: BuildConfig, resources: GeneratedRe
142
150
  pollIntervalMs?: number;
143
151
  maxPollAttempts?: number;
144
152
  check?: boolean;
145
- autoPromote?: boolean;
146
153
  allowDestructiveOperations?: boolean;
147
154
  callbacks?: DeployCallbacks;
148
155
  }): Promise<BuildApiResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/api/deploy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/api/deploy.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,13 @@
1
1
  /**
2
2
  * Deploy resources to Tinybird main workspace
3
- * Uses the /v1/deploy endpoint with auto-promotion enabled
3
+ * Uses the /v1/deploy endpoint to create a deployment, then sets it live
4
4
  */
5
5
  import { tinybirdFetch } from "./fetcher.js";
6
6
  const FORWARD_CLASSIC_GUIDANCE = "Use the Tinybird Classic CLI (`tb`) from a Tinybird Classic workspace for this operation.";
7
7
  export async function deployToMain(config, resources, options) {
8
8
  const debug = options?.debug ?? !!process.env.TINYBIRD_DEBUG;
9
9
  const pollIntervalMs = options?.pollIntervalMs ?? 1000;
10
- const maxPollAttempts = options?.maxPollAttempts ?? 120;
10
+ const maxPollAttempts = options?.maxPollAttempts ?? 120; // 2 minutes max
11
11
  const baseUrl = config.baseUrl.replace(/\/$/, "");
12
12
  const formData = new FormData();
13
13
  // Add datasources
@@ -30,17 +30,42 @@ export async function deployToMain(config, resources, options) {
30
30
  }
31
31
  formData.append(fieldName, new Blob([pipe.content], { type: "text/plain" }), fileName);
32
32
  }
33
- // Create deployment via /v1/deploy.
34
- // `auto_promote=true` makes the API promote the deployment automatically.
33
+ // Step 0: Clean up any stale non-live deployments that might block the new deployment
34
+ try {
35
+ const deploymentsUrl = `${baseUrl}/v1/deployments`;
36
+ const deploymentsResponse = await tinybirdFetch(deploymentsUrl, {
37
+ headers: {
38
+ Authorization: `Bearer ${config.token}`,
39
+ },
40
+ });
41
+ if (deploymentsResponse.ok) {
42
+ const deploymentsBody = (await deploymentsResponse.json());
43
+ const staleDeployments = deploymentsBody.deployments.filter((d) => !d.live && d.status !== "live");
44
+ for (const stale of staleDeployments) {
45
+ if (debug) {
46
+ console.log(`[debug] Cleaning up stale deployment: ${stale.id} (status: ${stale.status})`);
47
+ }
48
+ await tinybirdFetch(`${baseUrl}/v1/deployments/${stale.id}`, {
49
+ method: "DELETE",
50
+ headers: {
51
+ Authorization: `Bearer ${config.token}`,
52
+ },
53
+ });
54
+ }
55
+ }
56
+ }
57
+ catch (e) {
58
+ // Ignore errors during cleanup - we'll try to deploy anyway
59
+ if (debug) {
60
+ console.log(`[debug] Failed to clean up stale deployments: ${e}`);
61
+ }
62
+ }
63
+ // Step 1: Create deployment via /v1/deploy
35
64
  const deployUrlBase = `${baseUrl}/v1/deploy`;
36
65
  const urlParams = new URLSearchParams();
37
66
  if (options?.check) {
38
67
  urlParams.set("check", "true");
39
68
  }
40
- const autoPromote = options?.autoPromote ?? !options?.check;
41
- if (autoPromote) {
42
- urlParams.set("auto_promote", "true");
43
- }
44
69
  if (options?.allowDestructiveOperations) {
45
70
  urlParams.set("allow_destructive_operations", "true");
46
71
  }
@@ -74,7 +99,7 @@ export async function deployToMain(config, resources, options) {
74
99
  return feedback
75
100
  .map((f) => {
76
101
  // Extract just the filename from "Datasource events.datasource" format
77
- const resourceName = f.resource.split(" ").pop() ?? f.resource;
102
+ const resourceName = f.resource?.split(" ").pop() ?? f.resource ?? "unknown";
78
103
  return `${resourceName}: ${normalizeDeployErrorMessage(f.message)}`;
79
104
  })
80
105
  .join("\n");
@@ -189,17 +214,15 @@ export async function deployToMain(config, resources, options) {
189
214
  },
190
215
  });
191
216
  }
192
- let deployment = deploymentDetails;
193
- let statusAttempts = 0;
217
+ // Step 2: Poll until deployment is ready
218
+ let deployment = body.deployment;
219
+ let attempts = 0;
194
220
  options?.callbacks?.onWaitingForReady?.();
195
- while (deployment.status !== "data_ready" &&
196
- deployment.status !== "failed" &&
197
- deployment.status !== "error" &&
198
- statusAttempts < maxPollAttempts) {
221
+ while (deployment.status !== "data_ready" && attempts < maxPollAttempts) {
199
222
  await sleep(pollIntervalMs);
200
- statusAttempts++;
223
+ attempts++;
201
224
  if (debug) {
202
- console.log(`[debug] Polling deployment status (attempt ${statusAttempts})...`);
225
+ console.log(`[debug] Polling deployment status (attempt ${attempts})...`);
203
226
  }
204
227
  const statusUrl = `${baseUrl}/v1/deployments/${deploymentId}`;
205
228
  const statusResponse = await tinybirdFetch(statusUrl, {
@@ -220,79 +243,61 @@ export async function deployToMain(config, resources, options) {
220
243
  }
221
244
  const statusBody = (await statusResponse.json());
222
245
  deployment = statusBody.deployment;
246
+ if (debug) {
247
+ console.log(`[debug] Deployment status: ${deployment.status}`);
248
+ }
249
+ // Check for failed status
250
+ if (deployment.status === "failed" || deployment.status === "error") {
251
+ return {
252
+ success: false,
253
+ result: "failed",
254
+ error: `Deployment failed with status: ${deployment.status}`,
255
+ datasourceCount: resources.datasources.length,
256
+ pipeCount: resources.pipes.length,
257
+ connectionCount: resources.connections?.length ?? 0,
258
+ buildId: deploymentId,
259
+ };
260
+ }
223
261
  }
224
- if (deployment.status === "failed" || deployment.status === "error") {
262
+ if (deployment.status !== "data_ready") {
225
263
  return {
226
264
  success: false,
227
265
  result: "failed",
228
- error: `Deployment failed with status: ${deployment.status}`,
266
+ error: `Deployment timed out after ${maxPollAttempts} attempts. Last status: ${deployment.status}`,
229
267
  datasourceCount: resources.datasources.length,
230
268
  pipeCount: resources.pipes.length,
231
269
  connectionCount: resources.connections?.length ?? 0,
232
270
  buildId: deploymentId,
233
271
  };
234
272
  }
235
- if (deployment.status !== "data_ready") {
273
+ options?.callbacks?.onDeploymentReady?.();
274
+ // Step 3: Set the deployment as live
275
+ const setLiveUrl = `${baseUrl}/v1/deployments/${deploymentId}/set-live`;
276
+ if (debug) {
277
+ console.log(`[debug] POST ${setLiveUrl}`);
278
+ }
279
+ const setLiveResponse = await tinybirdFetch(setLiveUrl, {
280
+ method: "POST",
281
+ headers: {
282
+ Authorization: `Bearer ${config.token}`,
283
+ },
284
+ });
285
+ if (!setLiveResponse.ok) {
286
+ const setLiveBody = await setLiveResponse.text();
236
287
  return {
237
288
  success: false,
238
289
  result: "failed",
239
- error: `Deployment timed out after ${maxPollAttempts} attempts. Last status: ${deployment.status}`,
290
+ error: `Failed to set deployment as live: ${setLiveResponse.status} ${setLiveResponse.statusText}\n${setLiveBody}`,
240
291
  datasourceCount: resources.datasources.length,
241
292
  pipeCount: resources.pipes.length,
242
293
  connectionCount: resources.connections?.length ?? 0,
243
294
  buildId: deploymentId,
244
295
  };
245
296
  }
246
- options?.callbacks?.onDeploymentReady?.();
247
- if (autoPromote && !deployment.live) {
248
- let promotionAttempts = 0;
249
- options?.callbacks?.onWaitingForPromote?.();
250
- while (!deployment.live && promotionAttempts < maxPollAttempts) {
251
- await sleep(pollIntervalMs);
252
- promotionAttempts++;
253
- if (debug) {
254
- console.log(`[debug] Polling auto-promote status (attempt ${promotionAttempts})...`);
255
- }
256
- const statusUrl = `${baseUrl}/v1/deployments/${deploymentId}`;
257
- const statusResponse = await tinybirdFetch(statusUrl, {
258
- headers: {
259
- Authorization: `Bearer ${config.token}`,
260
- },
261
- });
262
- if (!statusResponse.ok) {
263
- return {
264
- success: false,
265
- result: "failed",
266
- error: `Failed to check deployment status: ${statusResponse.status} ${statusResponse.statusText}`,
267
- datasourceCount: resources.datasources.length,
268
- pipeCount: resources.pipes.length,
269
- connectionCount: resources.connections?.length ?? 0,
270
- buildId: deploymentId,
271
- };
272
- }
273
- const statusBody = (await statusResponse.json());
274
- deployment = statusBody.deployment;
275
- }
276
- if (!deployment.live) {
277
- return {
278
- success: false,
279
- result: "failed",
280
- error: `Deployment reached data_ready but auto-promote did not complete after ${maxPollAttempts} attempts`,
281
- datasourceCount: resources.datasources.length,
282
- pipeCount: resources.pipes.length,
283
- connectionCount: resources.connections?.length ?? 0,
284
- buildId: deploymentId,
285
- };
286
- }
287
- options?.callbacks?.onDeploymentPromoted?.();
288
- }
289
297
  if (debug) {
290
- const stateLabel = deployment.live ? "live" : "ready";
291
- console.log(`[debug] Deployment ${deploymentId} is now ${stateLabel}`);
292
- }
293
- if (deployment.live) {
294
- options?.callbacks?.onDeploymentLive?.(deploymentId);
298
+ console.log(`[debug] Deployment ${deploymentId} is now live`);
295
299
  }
300
+ options?.callbacks?.onDeploymentLive?.(deploymentId);
296
301
  return {
297
302
  success: true,
298
303
  result: "success",
@@ -312,6 +317,9 @@ export async function deployToMain(config, resources, options) {
312
317
  },
313
318
  };
314
319
  }
320
+ /**
321
+ * Helper function to sleep for a given number of milliseconds
322
+ */
315
323
  function sleep(ms) {
316
324
  return new Promise((resolve) => setTimeout(resolve, ms));
317
325
  }
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/api/deploy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/api/deploy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,wBAAwB,GAC5B,2FAA2F,CAAC;AAiJ9F,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAmB,EACnB,SAA6B,EAC7B,OAOC;IAED,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAC7D,MAAM,cAAc,GAAG,OAAO,EAAE,cAAc,IAAI,IAAI,CAAC;IACvD,MAAM,eAAe,GAAG,OAAO,EAAE,eAAe,IAAI,GAAG,CAAC,CAAC,gBAAgB;IACzE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAElD,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;IAEhC,kBAAkB;IAClB,KAAK,MAAM,EAAE,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,SAAS,GAAG,iBAAiB,CAAC;QACpC,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,IAAI,aAAa,CAAC;QACzC,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,8BAA8B,SAAS,eAAe,QAAQ,GAAG,CAAC,CAAC;YAC/E,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC,OAAO,IAAI,CAAC,CAAC;QACnD,CAAC;QACD,QAAQ,CAAC,MAAM,CACb,SAAS,EACT,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAC9C,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,YAAY;IACZ,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,iBAAiB,CAAC;QACpC,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,IAAI,OAAO,CAAC;QACrC,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,wBAAwB,SAAS,eAAe,QAAQ,GAAG,CAAC,CAAC;YACzE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;QACrD,CAAC;QACD,QAAQ,CAAC,MAAM,CACb,SAAS,EACT,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAChD,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,sFAAsF;IACtF,IAAI,CAAC;QACH,MAAM,cAAc,GAAG,GAAG,OAAO,iBAAiB,CAAC;QACnD,MAAM,mBAAmB,GAAG,MAAM,aAAa,CAAC,cAAc,EAAE;YAC9D,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,MAAM,CAAC,KAAK,EAAE;aACxC;SACF,CAAC,CAAC;QAEH,IAAI,mBAAmB,CAAC,EAAE,EAAE,CAAC;YAC3B,MAAM,eAAe,GAAG,CAAC,MAAM,mBAAmB,CAAC,IAAI,EAAE,CAA4B,CAAC;YACtF,MAAM,gBAAgB,GAAG,eAAe,CAAC,WAAW,CAAC,MAAM,CACzD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CACtC,CAAC;YAEF,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;gBACrC,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,CAAC,GAAG,CAAC,yCAAyC,KAAK,CAAC,EAAE,aAAa,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC7F,CAAC;gBACD,MAAM,aAAa,CAAC,GAAG,OAAO,mBAAmB,KAAK,CAAC,EAAE,EAAE,EAAE;oBAC3D,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE;wBACP,aAAa,EAAE,UAAU,MAAM,CAAC,KAAK,EAAE;qBACxC;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,4DAA4D;QAC5D,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,2CAA2C;IAC3C,MAAM,aAAa,GAAG,GAAG,OAAO,YAAY,CAAC;IAC7C,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;IACxC,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;QACnB,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,OAAO,EAAE,0BAA0B,EAAE,CAAC;QACxC,SAAS,CAAC,GAAG,CAAC,8BAA8B,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,aAAa,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;IAElF,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,gBAAgB,SAAS,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE;QAC9C,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,MAAM,CAAC,KAAK,EAAE;SACxC;QACD,IAAI,EAAE,QAAQ;KACf,CAAC,CAAC;IAEH,iBAAiB;IACjB,IAAI,IAAoB,CAAC;IACzB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEtC,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,4BAA4B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,0BAA0B,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAmB,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,+CAA+C,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,WAAW,OAAO,EAAE,CAC1G,CAAC;IACJ,CAAC;IAED,4CAA4C;IAC5C,MAAM,cAAc,GAAG,CAAC,QAA8B,EAAU,EAAE;QAChE,OAAO,QAAQ;aACZ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,uEAAuE;YACvE,MAAM,YAAY,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ,IAAI,SAAS,CAAC;YAC7E,OAAO,GAAG,YAAY,KAAK,2BAA2B,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QACtE,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC,CAAC;IAEF,0BAA0B;IAC1B,MAAM,YAAY,GAAG,GAAW,EAAE;QAChC,8DAA8D;QAC9D,IAAI,IAAI,CAAC,UAAU,EAAE,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrE,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;YAC3E,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC,MAAM;iBACf,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACT,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpD,OAAO,GAAG,MAAM,GAAG,2BAA2B,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5D,CAAC,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,CAAC;QACD,gFAAgF;QAChF,OAAO,QAAQ,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,eAAe,OAAO,EAAE,CAAC;IACjF,CAAC,CAAC;IAEF,0BAA0B;IAC1B,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,YAAY,EAAE;YACrB,eAAe,EAAE,SAAS,CAAC,WAAW,CAAC,MAAM;YAC7C,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM;YACjC,eAAe,EAAE,SAAS,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;SACpD,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;QACnB,OAAO,CAAC,SAAS,EAAE,YAAY,EAAE,EAAE,CAAC;QAEpC,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,QAAQ;gBAChB,KAAK,EAAE,YAAY,EAAE;gBACrB,eAAe,EAAE,SAAS,CAAC,WAAW,CAAC,MAAM;gBAC7C,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM;gBACjC,eAAe,EAAE,SAAS,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;aACpD,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,SAAS;YAChC,eAAe,EAAE,SAAS,CAAC,WAAW,CAAC,MAAM;YAC7C,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM;YACjC,eAAe,EAAE,SAAS,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;SACpD,CAAC;IACJ,CAAC;IAED,wEAAwE;IACxE,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QACjC,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,YAAY;YACpB,eAAe,EAAE,SAAS,CAAC,WAAW,CAAC,MAAM;YAC7C,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM;YACjC,eAAe,EAAE,SAAS,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;YACnD,KAAK,EAAE;gBACL,OAAO,EAAE,EAAE;gBACX,OAAO,EAAE,EAAE;gBACX,OAAO,EAAE,EAAE;aACZ;YACD,WAAW,EAAE;gBACX,OAAO,EAAE,EAAE;gBACX,OAAO,EAAE,EAAE;gBACX,OAAO,EAAE,EAAE;aACZ;SACF,CAAC;IACJ,CAAC;IAED,oBAAoB;IACpB,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACjD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,YAAY,EAAE;YACrB,eAAe,EAAE,SAAS,CAAC,WAAW,CAAC,MAAM;YAC7C,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM;YACjC,eAAe,EAAE,SAAS,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;SACpD,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;IACxC,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC;IAE1C,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,uCAAuC,YAAY,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,+DAA+D;IAC/D,IAAI,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;QAClC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC;YAC1B,WAAW,EAAE;gBACX,OAAO,EAAE,iBAAiB,CAAC,oBAAoB,IAAI,EAAE;gBACrD,OAAO,EAAE,iBAAiB,CAAC,wBAAwB,IAAI,EAAE;gBACzD,OAAO,EAAE,iBAAiB,CAAC,wBAAwB,IAAI,EAAE;aAC1D;YACD,KAAK,EAAE;gBACL,OAAO,EAAE,iBAAiB,CAAC,cAAc,IAAI,EAAE;gBAC/C,OAAO,EAAE,iBAAiB,CAAC,kBAAkB,IAAI,EAAE;gBACnD,OAAO,EAAE,iBAAiB,CAAC,kBAAkB,IAAI,EAAE;aACpD;YACD,WAAW,EAAE;gBACX,OAAO,EAAE,iBAAiB,CAAC,wBAAwB,IAAI,EAAE;gBACzD,OAAO,EAAE,iBAAiB,CAAC,4BAA4B,IAAI,EAAE;gBAC7D,OAAO,EAAE,iBAAiB,CAAC,4BAA4B,IAAI,EAAE;aAC9D;SACF,CAAC,CAAC;IACL,CAAC;IAED,yCAAyC;IACzC,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACjC,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,CAAC;IAE1C,OAAO,UAAU,CAAC,MAAM,KAAK,YAAY,IAAI,QAAQ,GAAG,eAAe,EAAE,CAAC;QACxE,MAAM,KAAK,CAAC,cAAc,CAAC,CAAC;QAC5B,QAAQ,EAAE,CAAC;QAEX,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,8CAA8C,QAAQ,MAAM,CAAC,CAAC;QAC5E,CAAC;QAED,MAAM,SAAS,GAAG,GAAG,OAAO,mBAAmB,YAAY,EAAE,CAAC;QAC9D,MAAM,cAAc,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE;YACpD,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,MAAM,CAAC,KAAK,EAAE;aACxC;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;YACvB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,QAAQ;gBAChB,KAAK,EAAE,sCAAsC,cAAc,CAAC,MAAM,IAAI,cAAc,CAAC,UAAU,EAAE;gBACjG,eAAe,EAAE,SAAS,CAAC,WAAW,CAAC,MAAM;gBAC7C,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM;gBACjC,eAAe,EAAE,SAAS,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;gBACnD,OAAO,EAAE,YAAY;aACtB,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAG,CAAC,MAAM,cAAc,CAAC,IAAI,EAAE,CAA6B,CAAC;QAC7E,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;QAEnC,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,8BAA8B,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,0BAA0B;QAC1B,IAAI,UAAU,CAAC,MAAM,KAAK,QAAQ,IAAI,UAAU,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YACpE,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,QAAQ;gBAChB,KAAK,EAAE,kCAAkC,UAAU,CAAC,MAAM,EAAE;gBAC5D,eAAe,EAAE,SAAS,CAAC,WAAW,CAAC,MAAM;gBAC7C,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM;gBACjC,eAAe,EAAE,SAAS,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;gBACnD,OAAO,EAAE,YAAY;aACtB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QACvC,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,8BAA8B,eAAe,2BAA2B,UAAU,CAAC,MAAM,EAAE;YAClG,eAAe,EAAE,SAAS,CAAC,WAAW,CAAC,MAAM;YAC7C,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM;YACjC,eAAe,EAAE,SAAS,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;YACnD,OAAO,EAAE,YAAY;SACtB,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,CAAC;IAE1C,qCAAqC;IACrC,MAAM,UAAU,GAAG,GAAG,OAAO,mBAAmB,YAAY,WAAW,CAAC;IAExE,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,gBAAgB,UAAU,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,eAAe,GAAG,MAAM,aAAa,CAAC,UAAU,EAAE;QACtD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,MAAM,CAAC,KAAK,EAAE;SACxC;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC;QACxB,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,CAAC;QACjD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,qCAAqC,eAAe,CAAC,MAAM,IAAI,eAAe,CAAC,UAAU,KAAK,WAAW,EAAE;YAClH,eAAe,EAAE,SAAS,CAAC,WAAW,CAAC,MAAM;YAC7C,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM;YACjC,eAAe,EAAE,SAAS,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;YACnD,OAAO,EAAE,YAAY;SACtB,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,sBAAsB,YAAY,cAAc,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,YAAY,CAAC,CAAC;IAErD,OAAO;QACL,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,SAAS;QACjB,eAAe,EAAE,SAAS,CAAC,WAAW,CAAC,MAAM;QAC7C,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM;QACjC,eAAe,EAAE,SAAS,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;QACnD,OAAO,EAAE,YAAY;QACrB,KAAK,EAAE;YACL,OAAO,EAAE,iBAAiB,CAAC,kBAAkB,IAAI,EAAE;YACnD,OAAO,EAAE,iBAAiB,CAAC,cAAc,IAAI,EAAE;YAC/C,OAAO,EAAE,iBAAiB,CAAC,kBAAkB,IAAI,EAAE;SACpD;QACD,WAAW,EAAE;YACX,OAAO,EAAE,iBAAiB,CAAC,wBAAwB,IAAI,EAAE;YACzD,OAAO,EAAE,iBAAiB,CAAC,oBAAoB,IAAI,EAAE;YACrD,OAAO,EAAE,iBAAiB,CAAC,wBAAwB,IAAI,EAAE;SAC1D;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,2BAA2B,CAAC,OAAe;IAClD,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IACtC,MAAM,qBAAqB,GACzB,cAAc,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QACrD,cAAc,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC;IAEzD,IAAI,CAAC,qBAAqB,IAAI,cAAc,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;QAChF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,GAAG,cAAc,KAAK,wBAAwB,EAAE,CAAC;AAC1D,CAAC"}
@@ -1,10 +1,16 @@
1
- import { describe, it, expect, beforeAll, afterEach, afterAll, vi } from "vitest";
1
+ import { describe, it, expect, beforeAll, beforeEach, afterEach, afterAll } from "vitest";
2
2
  import { setupServer } from "msw/node";
3
3
  import { http, HttpResponse } from "msw";
4
4
  import { deployToMain } from "./deploy.js";
5
- import { BASE_URL, createDeploySuccessResponse, createBuildFailureResponse, createBuildMultipleErrorsResponse, } from "../test/handlers.js";
5
+ import { BASE_URL, createDeploySuccessResponse, createDeploymentStatusResponse, createSetLiveSuccessResponse, createBuildFailureResponse, createBuildMultipleErrorsResponse, createDeploymentsListResponse, } from "../test/handlers.js";
6
6
  const server = setupServer();
7
7
  beforeAll(() => server.listen({ onUnhandledRequest: "error" }));
8
+ beforeEach(() => {
9
+ // Set up default handler for deployments list (used by stale deployment cleanup)
10
+ server.use(http.get(`${BASE_URL}/v1/deployments`, () => {
11
+ return HttpResponse.json(createDeploymentsListResponse());
12
+ }));
13
+ });
8
14
  afterEach(() => server.resetHandlers());
9
15
  afterAll(() => server.close());
10
16
  describe("Deploy API", () => {
@@ -13,44 +19,53 @@ describe("Deploy API", () => {
13
19
  token: "p.test-token",
14
20
  };
15
21
  const resources = {
16
- datasources: [{ name: "events", content: "SCHEMA > timestamp DateTime" }],
17
- pipes: [{ name: "top_events", content: "NODE main\nSQL > SELECT * FROM events" }],
22
+ datasources: [
23
+ { name: "events", content: "SCHEMA > timestamp DateTime" },
24
+ ],
25
+ pipes: [
26
+ { name: "top_events", content: "NODE main\nSQL > SELECT * FROM events" },
27
+ ],
18
28
  connections: [],
19
29
  };
20
- function setupAutoPromoteSuccessFlow(deploymentId = "deploy-abc") {
30
+ // Helper to set up successful deploy flow
31
+ function setupSuccessfulDeployFlow(deploymentId = "deploy-abc") {
21
32
  server.use(http.post(`${BASE_URL}/v1/deploy`, () => {
22
33
  return HttpResponse.json(createDeploySuccessResponse({ deploymentId, status: "pending" }));
23
34
  }), http.get(`${BASE_URL}/v1/deployments/${deploymentId}`, () => {
24
- return HttpResponse.json({
25
- result: "success",
26
- deployment: {
27
- id: deploymentId,
28
- status: "data_ready",
29
- live: true,
30
- },
31
- });
35
+ return HttpResponse.json(createDeploymentStatusResponse({ deploymentId, status: "data_ready" }));
36
+ }), http.post(`${BASE_URL}/v1/deployments/${deploymentId}/set-live`, () => {
37
+ return HttpResponse.json(createSetLiveSuccessResponse());
32
38
  }));
33
39
  }
34
40
  describe("deployToMain", () => {
35
- it("successfully deploys resources with auto-promote flow", async () => {
36
- setupAutoPromoteSuccessFlow("deploy-abc");
37
- const onDeploymentLive = vi.fn();
38
- const result = await deployToMain(config, resources, {
39
- pollIntervalMs: 1,
40
- callbacks: { onDeploymentLive },
41
- });
41
+ it("successfully deploys resources with full flow", async () => {
42
+ setupSuccessfulDeployFlow("deploy-abc");
43
+ const result = await deployToMain(config, resources, { pollIntervalMs: 1 });
42
44
  expect(result.success).toBe(true);
43
45
  expect(result.result).toBe("success");
44
46
  expect(result.buildId).toBe("deploy-abc");
45
47
  expect(result.datasourceCount).toBe(1);
46
48
  expect(result.pipeCount).toBe(1);
47
- expect(onDeploymentLive).toHaveBeenCalledWith("deploy-abc");
49
+ });
50
+ it("polls until deployment is ready", async () => {
51
+ let pollCount = 0;
52
+ server.use(http.post(`${BASE_URL}/v1/deploy`, () => {
53
+ return HttpResponse.json(createDeploySuccessResponse({ deploymentId: "deploy-poll", status: "pending" }));
54
+ }), http.get(`${BASE_URL}/v1/deployments/deploy-poll`, () => {
55
+ pollCount++;
56
+ // Return pending for first 2 polls, then data_ready
57
+ const status = pollCount < 3 ? "pending" : "data_ready";
58
+ return HttpResponse.json(createDeploymentStatusResponse({ deploymentId: "deploy-poll", status }));
59
+ }), http.post(`${BASE_URL}/v1/deployments/deploy-poll/set-live`, () => {
60
+ return HttpResponse.json(createSetLiveSuccessResponse());
61
+ }));
62
+ const result = await deployToMain(config, resources, { pollIntervalMs: 1 });
63
+ expect(result.success).toBe(true);
64
+ expect(pollCount).toBe(3);
48
65
  });
49
66
  it("handles deploy failure with single error", async () => {
50
67
  server.use(http.post(`${BASE_URL}/v1/deploy`, () => {
51
- return HttpResponse.json(createBuildFailureResponse("Permission denied"), {
52
- status: 200,
53
- });
68
+ return HttpResponse.json(createBuildFailureResponse("Permission denied"), { status: 200 });
54
69
  }));
55
70
  const result = await deployToMain(config, resources);
56
71
  expect(result.success).toBe(false);
@@ -69,6 +84,22 @@ describe("Deploy API", () => {
69
84
  expect(result.error).toContain("[events.datasource] Schema mismatch");
70
85
  expect(result.error).toContain("General error without filename");
71
86
  });
87
+ it("handles deployment feedback entries with null resource", async () => {
88
+ server.use(http.post(`${BASE_URL}/v1/deploy`, () => {
89
+ return HttpResponse.json({
90
+ result: "failed",
91
+ deployment: {
92
+ id: "deploy-null-resource",
93
+ status: "failed",
94
+ feedback: [{ resource: null, level: "ERROR", message: "Invalid token" }],
95
+ },
96
+ }, { status: 200 });
97
+ }));
98
+ const result = await deployToMain(config, resources);
99
+ expect(result.success).toBe(false);
100
+ expect(result.result).toBe("failed");
101
+ expect(result.error).toContain("unknown: Invalid token");
102
+ });
72
103
  it("handles HTTP error responses", async () => {
73
104
  server.use(http.post(`${BASE_URL}/v1/deploy`, () => {
74
105
  return HttpResponse.json({ result: "failed", error: "Forbidden" }, { status: 403 });
@@ -86,33 +117,33 @@ describe("Deploy API", () => {
86
117
  }));
87
118
  await expect(deployToMain(config, resources)).rejects.toThrow("Failed to parse response");
88
119
  });
89
- it("uses /v1/deploy endpoint and sends auto_promote by default", async () => {
120
+ it("uses /v1/deploy endpoint (not /v1/build)", async () => {
90
121
  let capturedUrl = null;
91
122
  server.use(http.post(`${BASE_URL}/v1/deploy`, ({ request }) => {
92
123
  capturedUrl = request.url;
93
- return HttpResponse.json(createDeploySuccessResponse({ deploymentId: "deploy-url-test", status: "pending" }));
124
+ return HttpResponse.json(createDeploySuccessResponse({ deploymentId: "deploy-url-test" }));
94
125
  }), http.get(`${BASE_URL}/v1/deployments/deploy-url-test`, () => {
95
- return HttpResponse.json({
96
- result: "success",
97
- deployment: { id: "deploy-url-test", status: "data_ready", live: true },
98
- });
126
+ return HttpResponse.json(createDeploymentStatusResponse({ deploymentId: "deploy-url-test", status: "data_ready" }));
127
+ }), http.post(`${BASE_URL}/v1/deployments/deploy-url-test/set-live`, () => {
128
+ return HttpResponse.json(createSetLiveSuccessResponse());
99
129
  }));
100
130
  await deployToMain(config, resources, { pollIntervalMs: 1 });
101
131
  const parsed = new URL(capturedUrl ?? "");
102
132
  expect(parsed.pathname).toBe("/v1/deploy");
103
133
  expect(parsed.searchParams.get("from")).toBe("ts-sdk");
104
- expect(parsed.searchParams.get("auto_promote")).toBe("true");
105
134
  });
106
135
  it("passes allow_destructive_operations when explicitly enabled", async () => {
107
136
  let capturedUrl = null;
108
137
  server.use(http.post(`${BASE_URL}/v1/deploy`, ({ request }) => {
109
138
  capturedUrl = request.url;
110
- return HttpResponse.json(createDeploySuccessResponse({ deploymentId: "deploy-destructive", status: "pending" }));
139
+ return HttpResponse.json(createDeploySuccessResponse({ deploymentId: "deploy-destructive" }));
111
140
  }), http.get(`${BASE_URL}/v1/deployments/deploy-destructive`, () => {
112
- return HttpResponse.json({
113
- result: "success",
114
- deployment: { id: "deploy-destructive", status: "data_ready", live: true },
115
- });
141
+ return HttpResponse.json(createDeploymentStatusResponse({
142
+ deploymentId: "deploy-destructive",
143
+ status: "data_ready",
144
+ }));
145
+ }), http.post(`${BASE_URL}/v1/deployments/deploy-destructive/set-live`, () => {
146
+ return HttpResponse.json(createSetLiveSuccessResponse());
116
147
  }));
117
148
  await deployToMain(config, resources, {
118
149
  pollIntervalMs: 1,
@@ -120,19 +151,6 @@ describe("Deploy API", () => {
120
151
  });
121
152
  const parsed = new URL(capturedUrl ?? "");
122
153
  expect(parsed.searchParams.get("allow_destructive_operations")).toBe("true");
123
- expect(parsed.searchParams.get("auto_promote")).toBe("true");
124
- });
125
- it("does not send auto_promote in check mode", async () => {
126
- let capturedUrl = null;
127
- server.use(http.post(`${BASE_URL}/v1/deploy`, ({ request }) => {
128
- capturedUrl = request.url;
129
- return HttpResponse.json({ result: "success" });
130
- }));
131
- const result = await deployToMain(config, resources, { check: true });
132
- expect(result.success).toBe(true);
133
- const parsed = new URL(capturedUrl ?? "");
134
- expect(parsed.searchParams.get("check")).toBe("true");
135
- expect(parsed.searchParams.get("auto_promote")).toBeNull();
136
154
  });
137
155
  it("adds actionable guidance to Forward/Classic workspace errors", async () => {
138
156
  server.use(http.post(`${BASE_URL}/v1/deploy`, () => {
@@ -146,22 +164,55 @@ describe("Deploy API", () => {
146
164
  expect(result.error).toContain("Tinybird Forward workspace");
147
165
  expect(result.error).toContain("Use the Tinybird Classic CLI (`tb`) from a Tinybird Classic workspace for this operation.");
148
166
  });
167
+ it("handles failed deployment status", async () => {
168
+ server.use(http.post(`${BASE_URL}/v1/deploy`, () => {
169
+ return HttpResponse.json(createDeploySuccessResponse({ deploymentId: "deploy-fail", status: "pending" }));
170
+ }), http.get(`${BASE_URL}/v1/deployments/deploy-fail`, () => {
171
+ return HttpResponse.json(createDeploymentStatusResponse({ deploymentId: "deploy-fail", status: "failed" }));
172
+ }));
173
+ const result = await deployToMain(config, resources, { pollIntervalMs: 1 });
174
+ expect(result.success).toBe(false);
175
+ expect(result.error).toContain("Deployment failed with status: failed");
176
+ });
177
+ it("handles set-live failure", async () => {
178
+ server.use(http.post(`${BASE_URL}/v1/deploy`, () => {
179
+ return HttpResponse.json(createDeploySuccessResponse({ deploymentId: "deploy-setlive-fail" }));
180
+ }), http.get(`${BASE_URL}/v1/deployments/deploy-setlive-fail`, () => {
181
+ return HttpResponse.json(createDeploymentStatusResponse({ deploymentId: "deploy-setlive-fail", status: "data_ready" }));
182
+ }), http.post(`${BASE_URL}/v1/deployments/deploy-setlive-fail/set-live`, () => {
183
+ return HttpResponse.json({ error: "Set live failed" }, { status: 500 });
184
+ }));
185
+ const result = await deployToMain(config, resources, { pollIntervalMs: 1 });
186
+ expect(result.success).toBe(false);
187
+ expect(result.error).toContain("Failed to set deployment as live");
188
+ });
149
189
  it("normalizes baseUrl with trailing slash", async () => {
150
190
  let capturedUrl = null;
151
191
  server.use(http.post(`${BASE_URL}/v1/deploy`, ({ request }) => {
152
192
  capturedUrl = request.url;
153
- return HttpResponse.json(createDeploySuccessResponse({ deploymentId: "deploy-slash", status: "pending" }));
193
+ return HttpResponse.json(createDeploySuccessResponse({ deploymentId: "deploy-slash" }));
154
194
  }), http.get(`${BASE_URL}/v1/deployments/deploy-slash`, () => {
155
- return HttpResponse.json({
156
- result: "success",
157
- deployment: { id: "deploy-slash", status: "data_ready", live: true },
158
- });
195
+ return HttpResponse.json(createDeploymentStatusResponse({ deploymentId: "deploy-slash", status: "data_ready" }));
196
+ }), http.post(`${BASE_URL}/v1/deployments/deploy-slash/set-live`, () => {
197
+ return HttpResponse.json(createSetLiveSuccessResponse());
159
198
  }));
160
199
  await deployToMain({ ...config, baseUrl: `${BASE_URL}/` }, resources, { pollIntervalMs: 1 });
161
200
  const parsed = new URL(capturedUrl ?? "");
162
201
  expect(parsed.pathname).toBe("/v1/deploy");
163
202
  expect(parsed.searchParams.get("from")).toBe("ts-sdk");
164
- expect(parsed.searchParams.get("auto_promote")).toBe("true");
203
+ });
204
+ it("times out when deployment never becomes ready", async () => {
205
+ server.use(http.post(`${BASE_URL}/v1/deploy`, () => {
206
+ return HttpResponse.json(createDeploySuccessResponse({ deploymentId: "deploy-timeout", status: "pending" }));
207
+ }), http.get(`${BASE_URL}/v1/deployments/deploy-timeout`, () => {
208
+ return HttpResponse.json(createDeploymentStatusResponse({ deploymentId: "deploy-timeout", status: "pending" }));
209
+ }));
210
+ const result = await deployToMain(config, resources, {
211
+ pollIntervalMs: 1,
212
+ maxPollAttempts: 3,
213
+ });
214
+ expect(result.success).toBe(false);
215
+ expect(result.error).toContain("Deployment timed out");
165
216
  });
166
217
  });
167
218
  });