@tinybirdco/sdk 0.0.3 → 0.0.6

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.
Files changed (122) hide show
  1. package/README.md +87 -14
  2. package/dist/api/deploy.d.ts +41 -3
  3. package/dist/api/deploy.d.ts.map +1 -1
  4. package/dist/api/deploy.js +141 -19
  5. package/dist/api/deploy.js.map +1 -1
  6. package/dist/api/deploy.test.js +77 -29
  7. package/dist/api/deploy.test.js.map +1 -1
  8. package/dist/api/local.d.ts +92 -0
  9. package/dist/api/local.d.ts.map +1 -0
  10. package/dist/api/local.js +176 -0
  11. package/dist/api/local.js.map +1 -0
  12. package/dist/api/local.test.d.ts +2 -0
  13. package/dist/api/local.test.d.ts.map +1 -0
  14. package/dist/api/local.test.js +182 -0
  15. package/dist/api/local.test.js.map +1 -0
  16. package/dist/api/resources.d.ts +178 -0
  17. package/dist/api/resources.d.ts.map +1 -0
  18. package/dist/api/resources.js +244 -0
  19. package/dist/api/resources.js.map +1 -0
  20. package/dist/api/resources.test.d.ts +2 -0
  21. package/dist/api/resources.test.d.ts.map +1 -0
  22. package/dist/api/resources.test.js +255 -0
  23. package/dist/api/resources.test.js.map +1 -0
  24. package/dist/cli/commands/build.d.ts +6 -4
  25. package/dist/cli/commands/build.d.ts.map +1 -1
  26. package/dist/cli/commands/build.js +95 -47
  27. package/dist/cli/commands/build.js.map +1 -1
  28. package/dist/cli/commands/deploy.d.ts +39 -0
  29. package/dist/cli/commands/deploy.d.ts.map +1 -0
  30. package/dist/cli/commands/deploy.js +90 -0
  31. package/dist/cli/commands/deploy.js.map +1 -0
  32. package/dist/cli/commands/dev.d.ts +9 -2
  33. package/dist/cli/commands/dev.d.ts.map +1 -1
  34. package/dist/cli/commands/dev.js +60 -31
  35. package/dist/cli/commands/dev.js.map +1 -1
  36. package/dist/cli/commands/init.d.ts +24 -1
  37. package/dist/cli/commands/init.d.ts.map +1 -1
  38. package/dist/cli/commands/init.js +174 -23
  39. package/dist/cli/commands/init.js.map +1 -1
  40. package/dist/cli/commands/init.test.js +190 -30
  41. package/dist/cli/commands/init.test.js.map +1 -1
  42. package/dist/cli/config.d.ts +14 -0
  43. package/dist/cli/config.d.ts.map +1 -1
  44. package/dist/cli/config.js +7 -0
  45. package/dist/cli/config.js.map +1 -1
  46. package/dist/cli/config.test.js +29 -0
  47. package/dist/cli/config.test.js.map +1 -1
  48. package/dist/cli/index.js +107 -11
  49. package/dist/cli/index.js.map +1 -1
  50. package/dist/cli/utils/package-manager.d.ts +8 -0
  51. package/dist/cli/utils/package-manager.d.ts.map +1 -0
  52. package/dist/cli/utils/package-manager.js +45 -0
  53. package/dist/cli/utils/package-manager.js.map +1 -0
  54. package/dist/cli/utils/package-manager.test.d.ts +2 -0
  55. package/dist/cli/utils/package-manager.test.d.ts.map +1 -0
  56. package/dist/cli/utils/package-manager.test.js +85 -0
  57. package/dist/cli/utils/package-manager.test.js.map +1 -0
  58. package/dist/codegen/index.d.ts +39 -0
  59. package/dist/codegen/index.d.ts.map +1 -0
  60. package/dist/codegen/index.js +300 -0
  61. package/dist/codegen/index.js.map +1 -0
  62. package/dist/codegen/index.test.d.ts +2 -0
  63. package/dist/codegen/index.test.d.ts.map +1 -0
  64. package/dist/codegen/index.test.js +310 -0
  65. package/dist/codegen/index.test.js.map +1 -0
  66. package/dist/codegen/type-mapper.d.ts +20 -0
  67. package/dist/codegen/type-mapper.d.ts.map +1 -0
  68. package/dist/codegen/type-mapper.js +238 -0
  69. package/dist/codegen/type-mapper.js.map +1 -0
  70. package/dist/codegen/type-mapper.test.d.ts +2 -0
  71. package/dist/codegen/type-mapper.test.d.ts.map +1 -0
  72. package/dist/codegen/type-mapper.test.js +167 -0
  73. package/dist/codegen/type-mapper.test.js.map +1 -0
  74. package/dist/codegen/utils.d.ts +46 -0
  75. package/dist/codegen/utils.d.ts.map +1 -0
  76. package/dist/codegen/utils.js +141 -0
  77. package/dist/codegen/utils.js.map +1 -0
  78. package/dist/codegen/utils.test.d.ts +2 -0
  79. package/dist/codegen/utils.test.d.ts.map +1 -0
  80. package/dist/codegen/utils.test.js +178 -0
  81. package/dist/codegen/utils.test.js.map +1 -0
  82. package/dist/generator/index.d.ts +3 -0
  83. package/dist/generator/index.d.ts.map +1 -1
  84. package/dist/generator/index.js +17 -1
  85. package/dist/generator/index.js.map +1 -1
  86. package/dist/generator/index.test.js +104 -1
  87. package/dist/generator/index.test.js.map +1 -1
  88. package/dist/generator/loader.d.ts +15 -0
  89. package/dist/generator/loader.d.ts.map +1 -1
  90. package/dist/generator/loader.js +24 -0
  91. package/dist/generator/loader.js.map +1 -1
  92. package/dist/test/handlers.d.ts +49 -0
  93. package/dist/test/handlers.d.ts.map +1 -1
  94. package/dist/test/handlers.js +45 -0
  95. package/dist/test/handlers.js.map +1 -1
  96. package/package.json +4 -2
  97. package/src/api/deploy.test.ts +135 -34
  98. package/src/api/deploy.ts +203 -23
  99. package/src/api/local.test.ts +250 -0
  100. package/src/api/local.ts +270 -0
  101. package/src/api/resources.test.ts +332 -0
  102. package/src/api/resources.ts +554 -0
  103. package/src/cli/commands/build.ts +115 -53
  104. package/src/cli/commands/deploy.ts +126 -0
  105. package/src/cli/commands/dev.ts +81 -36
  106. package/src/cli/commands/init.test.ts +239 -30
  107. package/src/cli/commands/init.ts +243 -26
  108. package/src/cli/config.test.ts +47 -0
  109. package/src/cli/config.ts +20 -0
  110. package/src/cli/index.ts +120 -11
  111. package/src/cli/utils/package-manager.test.ts +118 -0
  112. package/src/cli/utils/package-manager.ts +44 -0
  113. package/src/codegen/index.test.ts +367 -0
  114. package/src/codegen/index.ts +379 -0
  115. package/src/codegen/type-mapper.test.ts +224 -0
  116. package/src/codegen/type-mapper.ts +265 -0
  117. package/src/codegen/utils.test.ts +221 -0
  118. package/src/codegen/utils.ts +174 -0
  119. package/src/generator/index.test.ts +121 -1
  120. package/src/generator/index.ts +19 -1
  121. package/src/generator/loader.ts +43 -0
  122. package/src/test/handlers.ts +58 -0
package/README.md CHANGED
@@ -160,28 +160,65 @@ const result = await tinybird.query.topPages({
160
160
 
161
161
  ### `npx tinybird init`
162
162
 
163
- Initialize a new Tinybird TypeScript project.
163
+ Initialize a new Tinybird TypeScript project. If you have existing `.datasource` and `.pipe` files in your repository, the CLI will detect them and ask if you want to include them in your configuration.
164
164
 
165
165
  ```bash
166
166
  npx tinybird init
167
- npx tinybird init --force # Overwrite existing files
167
+ npx tinybird init --force # Overwrite existing files
168
+ npx tinybird init --skip-login # Skip browser login flow
168
169
  ```
169
170
 
170
- ### `npx tinybird build`
171
+ This enables incremental migration for existing Tinybird projects - you can keep your `.datasource` and `.pipe` files alongside TypeScript definitions.
171
172
 
172
- Build and push resources to Tinybird.
173
+ ### `tinybird dev`
174
+
175
+ Watch for changes and sync with Tinybird automatically. Only works on feature branches (not main).
173
176
 
174
177
  ```bash
175
- npx tinybird build
176
- npx tinybird build --dry-run # Preview without pushing
178
+ tinybird dev
179
+ tinybird dev --local # Sync with local Tinybird container
180
+ tinybird dev --branch # Explicitly use Tinybird cloud with branches
177
181
  ```
178
182
 
179
- ### `npx tinybird dev`
183
+ **Note:** `dev` mode is blocked on the main branch to prevent accidental production deployments. Use `tinybird deploy` for production, or switch to a feature branch.
184
+
185
+ ### `tinybird build`
180
186
 
181
- Watch for changes and sync with Tinybird automatically.
187
+ Build and push resources to a Tinybird branch (not main).
182
188
 
183
189
  ```bash
184
- npx tinybird dev
190
+ tinybird build
191
+ tinybird build --dry-run # Preview without pushing
192
+ tinybird build --local # Build to local Tinybird container
193
+ ```
194
+
195
+ **Note:** `build` is blocked on the main branch. Use `tinybird deploy` for production deployments.
196
+
197
+ ### `tinybird deploy`
198
+
199
+ Deploy resources to the main Tinybird workspace (production). This is the only way to deploy to main.
200
+
201
+ ```bash
202
+ tinybird deploy
203
+ tinybird deploy --dry-run # Preview without pushing
204
+ ```
205
+
206
+ ### `tinybird login`
207
+
208
+ Authenticate with Tinybird via browser.
209
+
210
+ ```bash
211
+ tinybird login
212
+ ```
213
+
214
+ ### `tinybird branch`
215
+
216
+ Manage Tinybird branches.
217
+
218
+ ```bash
219
+ tinybird branch list # List all branches
220
+ tinybird branch status # Show current branch status
221
+ tinybird branch delete <name> # Delete a branch
185
222
  ```
186
223
 
187
224
  ## Configuration
@@ -192,16 +229,52 @@ Create a `tinybird.json` in your project root:
192
229
  {
193
230
  "include": [
194
231
  "src/tinybird/datasources.ts",
195
- "src/tinybird/pipes.ts"
232
+ "src/tinybird/pipes.ts",
233
+ "src/tinybird/legacy.datasource",
234
+ "src/tinybird/legacy.pipe"
196
235
  ],
197
236
  "token": "${TINYBIRD_TOKEN}",
198
- "baseUrl": "https://api.tinybird.co"
237
+ "baseUrl": "https://api.tinybird.co",
238
+ "devMode": "branch"
199
239
  }
200
240
  ```
201
241
 
202
- - `include` - Array of TypeScript files to scan for datasources and pipes
203
- - `token` - API token (supports environment variable interpolation)
204
- - `baseUrl` - Tinybird API URL (defaults to EU region)
242
+ You can mix TypeScript files with raw `.datasource` and `.pipe` files for incremental migration.
243
+
244
+ ### Configuration Options
245
+
246
+ | Option | Type | Default | Description |
247
+ |--------|------|---------|-------------|
248
+ | `include` | `string[]` | *required* | Array of TypeScript files or raw `.datasource`/`.pipe` files to include |
249
+ | `token` | `string` | *required* | API token. Supports `${ENV_VAR}` interpolation for environment variables |
250
+ | `baseUrl` | `string` | `"https://api.tinybird.co"` | Tinybird API URL. Use `"https://api.us-east.tinybird.co"` for US region |
251
+ | `devMode` | `"branch"` \| `"local"` | `"branch"` | Development mode. `"branch"` uses Tinybird cloud with branches, `"local"` uses local Docker container |
252
+
253
+ ### Local Development Mode
254
+
255
+ Use a local Tinybird container for development without affecting your cloud workspace:
256
+
257
+ 1. Start the local container:
258
+ ```bash
259
+ docker run -d -p 7181:7181 --name tinybird-local tinybirdco/tinybird-local:latest
260
+ ```
261
+
262
+ 2. Configure your project:
263
+ ```json
264
+ {
265
+ "devMode": "local"
266
+ }
267
+ ```
268
+
269
+ Or use the CLI flag:
270
+ ```bash
271
+ npx tinybird dev --local
272
+ ```
273
+
274
+ In local mode:
275
+ - Tokens are automatically obtained from the local container
276
+ - A workspace is created per git branch
277
+ - No cloud authentication required
205
278
 
206
279
  ## Defining Resources
207
280
 
@@ -1,15 +1,51 @@
1
1
  /**
2
2
  * Deploy resources to Tinybird main workspace
3
- * Uses the /v1/deploy endpoint (same payload format as /v1/build)
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";
7
+ /**
8
+ * Deployment object returned by the /v1/deploy endpoint
9
+ */
10
+ export interface Deployment {
11
+ id: string;
12
+ status: string;
13
+ live?: boolean;
14
+ created_at?: string;
15
+ updated_at?: string;
16
+ }
17
+ /**
18
+ * Response from /v1/deployments list endpoint
19
+ */
20
+ export interface DeploymentsListResponse {
21
+ deployments: Deployment[];
22
+ }
23
+ /**
24
+ * Response from /v1/deploy endpoint
25
+ */
26
+ export interface DeployResponse {
27
+ result: "success" | "failed";
28
+ deployment?: Deployment;
29
+ error?: string;
30
+ errors?: Array<{
31
+ filename?: string;
32
+ error: string;
33
+ }>;
34
+ }
35
+ /**
36
+ * Response from /v1/deployments/{id} endpoint
37
+ */
38
+ export interface DeploymentStatusResponse {
39
+ result: string;
40
+ deployment: Deployment;
41
+ }
7
42
  /**
8
43
  * Deploy generated resources to Tinybird main workspace
9
44
  *
10
45
  * Uses the /v1/deploy endpoint which accepts all resources in a single
11
- * multipart form request. This is used for deploying to the main workspace
12
- * (not branches).
46
+ * multipart form request. After creating the deployment, this function:
47
+ * 1. Polls until the deployment is ready (status === 'data_ready')
48
+ * 2. Sets the deployment as live via /v1/deployments/{id}/set-live
13
49
  *
14
50
  * @param config - Build configuration with API URL and token
15
51
  * @param resources - Generated resources to deploy
@@ -35,5 +71,7 @@ import type { BuildConfig, BuildApiResult } from "./build.js";
35
71
  */
36
72
  export declare function deployToMain(config: BuildConfig, resources: GeneratedResources, options?: {
37
73
  debug?: boolean;
74
+ pollIntervalMs?: number;
75
+ maxPollAttempts?: number;
38
76
  }): Promise<BuildApiResult>;
39
77
  //# sourceMappingURL=deploy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/api/deploy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAiB,MAAM,YAAY,CAAC;AAE7E;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,kBAAkB,EAC7B,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5B,OAAO,CAAC,cAAc,CAAC,CA4HzB"}
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/api/deploy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC7B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtD;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,UAAU,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,kBAAkB,EAC7B,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/E,OAAO,CAAC,cAAc,CAAC,CAoQzB"}
@@ -1,13 +1,14 @@
1
1
  /**
2
2
  * Deploy resources to Tinybird main workspace
3
- * Uses the /v1/deploy endpoint (same payload format as /v1/build)
3
+ * Uses the /v1/deploy endpoint to create a deployment, then sets it live
4
4
  */
5
5
  /**
6
6
  * Deploy generated resources to Tinybird main workspace
7
7
  *
8
8
  * Uses the /v1/deploy endpoint which accepts all resources in a single
9
- * multipart form request. This is used for deploying to the main workspace
10
- * (not branches).
9
+ * multipart form request. After creating the deployment, this function:
10
+ * 1. Polls until the deployment is ready (status === 'data_ready')
11
+ * 2. Sets the deployment as live via /v1/deployments/{id}/set-live
11
12
  *
12
13
  * @param config - Build configuration with API URL and token
13
14
  * @param resources - Generated resources to deploy
@@ -33,6 +34,9 @@
33
34
  */
34
35
  export async function deployToMain(config, resources, options) {
35
36
  const debug = options?.debug ?? !!process.env.TINYBIRD_DEBUG;
37
+ const pollIntervalMs = options?.pollIntervalMs ?? 1000;
38
+ const maxPollAttempts = options?.maxPollAttempts ?? 120; // 2 minutes max
39
+ const baseUrl = config.baseUrl.replace(/\/$/, "");
36
40
  const formData = new FormData();
37
41
  // Add datasources
38
42
  for (const ds of resources.datasources) {
@@ -54,12 +58,42 @@ export async function deployToMain(config, resources, options) {
54
58
  }
55
59
  formData.append(fieldName, new Blob([pipe.content], { type: "text/plain" }), fileName);
56
60
  }
57
- // Make the request to /v1/deploy (instead of /v1/build)
58
- const url = `${config.baseUrl.replace(/\/$/, "")}/v1/deploy`;
61
+ // Step 0: Clean up any stale non-live deployments that might block the new deployment
62
+ try {
63
+ const deploymentsUrl = `${baseUrl}/v1/deployments`;
64
+ const deploymentsResponse = await fetch(deploymentsUrl, {
65
+ headers: {
66
+ Authorization: `Bearer ${config.token}`,
67
+ },
68
+ });
69
+ if (deploymentsResponse.ok) {
70
+ const deploymentsBody = (await deploymentsResponse.json());
71
+ const staleDeployments = deploymentsBody.deployments.filter((d) => !d.live && d.status !== "live");
72
+ for (const stale of staleDeployments) {
73
+ if (debug) {
74
+ console.log(`[debug] Cleaning up stale deployment: ${stale.id} (status: ${stale.status})`);
75
+ }
76
+ await fetch(`${baseUrl}/v1/deployments/${stale.id}`, {
77
+ method: "DELETE",
78
+ headers: {
79
+ Authorization: `Bearer ${config.token}`,
80
+ },
81
+ });
82
+ }
83
+ }
84
+ }
85
+ catch (e) {
86
+ // Ignore errors during cleanup - we'll try to deploy anyway
87
+ if (debug) {
88
+ console.log(`[debug] Failed to clean up stale deployments: ${e}`);
89
+ }
90
+ }
91
+ // Step 1: Create deployment via /v1/deploy
92
+ const deployUrl = `${baseUrl}/v1/deploy`;
59
93
  if (debug) {
60
- console.log(`[debug] POST ${url}`);
94
+ console.log(`[debug] POST ${deployUrl}`);
61
95
  }
62
- const response = await fetch(url, {
96
+ const response = await fetch(deployUrl, {
63
97
  method: "POST",
64
98
  headers: {
65
99
  Authorization: `Bearer ${config.token}`,
@@ -103,7 +137,7 @@ export async function deployToMain(config, resources, options) {
103
137
  };
104
138
  }
105
139
  // Handle API result
106
- if (body.result === "failed") {
140
+ if (body.result === "failed" || !body.deployment) {
107
141
  return {
108
142
  success: false,
109
143
  result: "failed",
@@ -113,26 +147,114 @@ export async function deployToMain(config, resources, options) {
113
147
  connectionCount: resources.connections?.length ?? 0,
114
148
  };
115
149
  }
150
+ const deploymentId = body.deployment.id;
151
+ if (debug) {
152
+ console.log(`[debug] Deployment created with ID: ${deploymentId}`);
153
+ }
154
+ // Step 2: Poll until deployment is ready
155
+ let deployment = body.deployment;
156
+ let attempts = 0;
157
+ while (deployment.status !== "data_ready" && attempts < maxPollAttempts) {
158
+ await sleep(pollIntervalMs);
159
+ attempts++;
160
+ if (debug) {
161
+ console.log(`[debug] Polling deployment status (attempt ${attempts})...`);
162
+ }
163
+ const statusUrl = `${baseUrl}/v1/deployments/${deploymentId}`;
164
+ const statusResponse = await fetch(statusUrl, {
165
+ headers: {
166
+ Authorization: `Bearer ${config.token}`,
167
+ },
168
+ });
169
+ if (!statusResponse.ok) {
170
+ return {
171
+ success: false,
172
+ result: "failed",
173
+ error: `Failed to check deployment status: ${statusResponse.status} ${statusResponse.statusText}`,
174
+ datasourceCount: resources.datasources.length,
175
+ pipeCount: resources.pipes.length,
176
+ connectionCount: resources.connections?.length ?? 0,
177
+ buildId: deploymentId,
178
+ };
179
+ }
180
+ const statusBody = (await statusResponse.json());
181
+ deployment = statusBody.deployment;
182
+ if (debug) {
183
+ console.log(`[debug] Deployment status: ${deployment.status}`);
184
+ }
185
+ // Check for failed status
186
+ if (deployment.status === "failed" || deployment.status === "error") {
187
+ return {
188
+ success: false,
189
+ result: "failed",
190
+ error: `Deployment failed with status: ${deployment.status}`,
191
+ datasourceCount: resources.datasources.length,
192
+ pipeCount: resources.pipes.length,
193
+ connectionCount: resources.connections?.length ?? 0,
194
+ buildId: deploymentId,
195
+ };
196
+ }
197
+ }
198
+ if (deployment.status !== "data_ready") {
199
+ return {
200
+ success: false,
201
+ result: "failed",
202
+ error: `Deployment timed out after ${maxPollAttempts} attempts. Last status: ${deployment.status}`,
203
+ datasourceCount: resources.datasources.length,
204
+ pipeCount: resources.pipes.length,
205
+ connectionCount: resources.connections?.length ?? 0,
206
+ buildId: deploymentId,
207
+ };
208
+ }
209
+ // Step 3: Set the deployment as live
210
+ const setLiveUrl = `${baseUrl}/v1/deployments/${deploymentId}/set-live`;
211
+ if (debug) {
212
+ console.log(`[debug] POST ${setLiveUrl}`);
213
+ }
214
+ const setLiveResponse = await fetch(setLiveUrl, {
215
+ method: "POST",
216
+ headers: {
217
+ Authorization: `Bearer ${config.token}`,
218
+ },
219
+ });
220
+ if (!setLiveResponse.ok) {
221
+ const setLiveBody = await setLiveResponse.text();
222
+ return {
223
+ success: false,
224
+ result: "failed",
225
+ error: `Failed to set deployment as live: ${setLiveResponse.status} ${setLiveResponse.statusText}\n${setLiveBody}`,
226
+ datasourceCount: resources.datasources.length,
227
+ pipeCount: resources.pipes.length,
228
+ connectionCount: resources.connections?.length ?? 0,
229
+ buildId: deploymentId,
230
+ };
231
+ }
232
+ if (debug) {
233
+ console.log(`[debug] Deployment ${deploymentId} is now live`);
234
+ }
116
235
  return {
117
236
  success: true,
118
- result: body.result,
237
+ result: "success",
119
238
  datasourceCount: resources.datasources.length,
120
239
  pipeCount: resources.pipes.length,
121
240
  connectionCount: resources.connections?.length ?? 0,
122
- buildId: body.build?.id,
241
+ buildId: deploymentId,
123
242
  pipes: {
124
- changed: body.build?.changed_pipe_names ?? [],
125
- created: body.build?.new_pipe_names ?? [],
126
- deleted: body.build?.deleted_pipe_names ?? [],
243
+ changed: [],
244
+ created: [],
245
+ deleted: [],
127
246
  },
128
247
  datasources: {
129
- changed: body.build?.changed_datasource_names ?? [],
130
- created: body.build?.new_datasource_names ?? [],
131
- deleted: body.build?.deleted_datasource_names ?? [],
248
+ changed: [],
249
+ created: [],
250
+ deleted: [],
132
251
  },
133
- // Keep deprecated fields for backwards compatibility
134
- changedPipeNames: body.build?.changed_pipe_names ?? [],
135
- newPipeNames: body.build?.new_pipe_names ?? [],
136
252
  };
137
253
  }
254
+ /**
255
+ * Helper function to sleep for a given number of milliseconds
256
+ */
257
+ function sleep(ms) {
258
+ return new Promise((resolve) => setTimeout(resolve, ms));
259
+ }
138
260
  //# sourceMappingURL=deploy.js.map
@@ -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":"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"}
@@ -1,10 +1,16 @@
1
- import { describe, it, expect, beforeAll, afterEach, afterAll } 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, createBuildSuccessResponse, createBuildFailureResponse, createBuildMultipleErrorsResponse, createNoChangesResponse, } 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", () => {
@@ -21,31 +27,41 @@ describe("Deploy API", () => {
21
27
  ],
22
28
  connections: [],
23
29
  };
30
+ // Helper to set up successful deploy flow
31
+ function setupSuccessfulDeployFlow(deploymentId = "deploy-abc") {
32
+ server.use(http.post(`${BASE_URL}/v1/deploy`, () => {
33
+ return HttpResponse.json(createDeploySuccessResponse({ deploymentId, status: "pending" }));
34
+ }), http.get(`${BASE_URL}/v1/deployments/${deploymentId}`, () => {
35
+ return HttpResponse.json(createDeploymentStatusResponse({ deploymentId, status: "data_ready" }));
36
+ }), http.post(`${BASE_URL}/v1/deployments/${deploymentId}/set-live`, () => {
37
+ return HttpResponse.json(createSetLiveSuccessResponse());
38
+ }));
39
+ }
24
40
  describe("deployToMain", () => {
25
- it("successfully deploys resources", async () => {
26
- server.use(http.post(`${BASE_URL}/v1/deploy`, () => {
27
- return HttpResponse.json(createBuildSuccessResponse({
28
- buildId: "deploy-abc",
29
- newPipes: ["top_events"],
30
- newDatasources: ["events"],
31
- }));
32
- }));
33
- const result = await deployToMain(config, resources);
41
+ it("successfully deploys resources with full flow", async () => {
42
+ setupSuccessfulDeployFlow("deploy-abc");
43
+ const result = await deployToMain(config, resources, { pollIntervalMs: 1 });
34
44
  expect(result.success).toBe(true);
35
45
  expect(result.result).toBe("success");
36
46
  expect(result.buildId).toBe("deploy-abc");
37
47
  expect(result.datasourceCount).toBe(1);
38
48
  expect(result.pipeCount).toBe(1);
39
- expect(result.pipes?.created).toEqual(["top_events"]);
40
- expect(result.datasources?.created).toEqual(["events"]);
41
49
  });
42
- it("handles no changes response", async () => {
50
+ it("polls until deployment is ready", async () => {
51
+ let pollCount = 0;
43
52
  server.use(http.post(`${BASE_URL}/v1/deploy`, () => {
44
- return HttpResponse.json(createNoChangesResponse());
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());
45
61
  }));
46
- const result = await deployToMain(config, resources);
62
+ const result = await deployToMain(config, resources, { pollIntervalMs: 1 });
47
63
  expect(result.success).toBe(true);
48
- expect(result.result).toBe("no_changes");
64
+ expect(pollCount).toBe(3);
49
65
  });
50
66
  it("handles deploy failure with single error", async () => {
51
67
  server.use(http.post(`${BASE_URL}/v1/deploy`, () => {
@@ -89,31 +105,63 @@ describe("Deploy API", () => {
89
105
  let capturedUrl = null;
90
106
  server.use(http.post(`${BASE_URL}/v1/deploy`, ({ request }) => {
91
107
  capturedUrl = request.url;
92
- return HttpResponse.json(createBuildSuccessResponse());
108
+ return HttpResponse.json(createDeploySuccessResponse({ deploymentId: "deploy-url-test" }));
109
+ }), http.get(`${BASE_URL}/v1/deployments/deploy-url-test`, () => {
110
+ return HttpResponse.json(createDeploymentStatusResponse({ deploymentId: "deploy-url-test", status: "data_ready" }));
111
+ }), http.post(`${BASE_URL}/v1/deployments/deploy-url-test/set-live`, () => {
112
+ return HttpResponse.json(createSetLiveSuccessResponse());
93
113
  }));
94
- await deployToMain(config, resources);
114
+ await deployToMain(config, resources, { pollIntervalMs: 1 });
95
115
  expect(capturedUrl).toBe(`${BASE_URL}/v1/deploy`);
96
116
  });
97
- it("tracks changed and deleted resources", async () => {
117
+ it("handles failed deployment status", async () => {
98
118
  server.use(http.post(`${BASE_URL}/v1/deploy`, () => {
99
- return HttpResponse.json(createBuildSuccessResponse({
100
- changedPipes: ["top_events"],
101
- deletedDatasources: ["old_ds"],
102
- }));
119
+ return HttpResponse.json(createDeploySuccessResponse({ deploymentId: "deploy-fail", status: "pending" }));
120
+ }), http.get(`${BASE_URL}/v1/deployments/deploy-fail`, () => {
121
+ return HttpResponse.json(createDeploymentStatusResponse({ deploymentId: "deploy-fail", status: "failed" }));
103
122
  }));
104
- const result = await deployToMain(config, resources);
105
- expect(result.pipes?.changed).toEqual(["top_events"]);
106
- expect(result.datasources?.deleted).toEqual(["old_ds"]);
123
+ const result = await deployToMain(config, resources, { pollIntervalMs: 1 });
124
+ expect(result.success).toBe(false);
125
+ expect(result.error).toContain("Deployment failed with status: failed");
126
+ });
127
+ it("handles set-live failure", async () => {
128
+ server.use(http.post(`${BASE_URL}/v1/deploy`, () => {
129
+ return HttpResponse.json(createDeploySuccessResponse({ deploymentId: "deploy-setlive-fail" }));
130
+ }), http.get(`${BASE_URL}/v1/deployments/deploy-setlive-fail`, () => {
131
+ return HttpResponse.json(createDeploymentStatusResponse({ deploymentId: "deploy-setlive-fail", status: "data_ready" }));
132
+ }), http.post(`${BASE_URL}/v1/deployments/deploy-setlive-fail/set-live`, () => {
133
+ return HttpResponse.json({ error: "Set live failed" }, { status: 500 });
134
+ }));
135
+ const result = await deployToMain(config, resources, { pollIntervalMs: 1 });
136
+ expect(result.success).toBe(false);
137
+ expect(result.error).toContain("Failed to set deployment as live");
107
138
  });
108
139
  it("normalizes baseUrl with trailing slash", async () => {
109
140
  let capturedUrl = null;
110
141
  server.use(http.post(`${BASE_URL}/v1/deploy`, ({ request }) => {
111
142
  capturedUrl = request.url;
112
- return HttpResponse.json(createBuildSuccessResponse());
143
+ return HttpResponse.json(createDeploySuccessResponse({ deploymentId: "deploy-slash" }));
144
+ }), http.get(`${BASE_URL}/v1/deployments/deploy-slash`, () => {
145
+ return HttpResponse.json(createDeploymentStatusResponse({ deploymentId: "deploy-slash", status: "data_ready" }));
146
+ }), http.post(`${BASE_URL}/v1/deployments/deploy-slash/set-live`, () => {
147
+ return HttpResponse.json(createSetLiveSuccessResponse());
113
148
  }));
114
- await deployToMain({ ...config, baseUrl: `${BASE_URL}/` }, resources);
149
+ await deployToMain({ ...config, baseUrl: `${BASE_URL}/` }, resources, { pollIntervalMs: 1 });
115
150
  expect(capturedUrl).toBe(`${BASE_URL}/v1/deploy`);
116
151
  });
152
+ it("times out when deployment never becomes ready", async () => {
153
+ server.use(http.post(`${BASE_URL}/v1/deploy`, () => {
154
+ return HttpResponse.json(createDeploySuccessResponse({ deploymentId: "deploy-timeout", status: "pending" }));
155
+ }), http.get(`${BASE_URL}/v1/deployments/deploy-timeout`, () => {
156
+ return HttpResponse.json(createDeploymentStatusResponse({ deploymentId: "deploy-timeout", status: "pending" }));
157
+ }));
158
+ const result = await deployToMain(config, resources, {
159
+ pollIntervalMs: 1,
160
+ maxPollAttempts: 3,
161
+ });
162
+ expect(result.success).toBe(false);
163
+ expect(result.error).toContain("Deployment timed out");
164
+ });
117
165
  });
118
166
  });
119
167
  //# sourceMappingURL=deploy.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.test.js","sourceRoot":"","sources":["../../src/api/deploy.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deploy.test.js","sourceRoot":"","sources":["../../src/api/deploy.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EACL,QAAQ,EACR,2BAA2B,EAC3B,8BAA8B,EAC9B,4BAA4B,EAC5B,0BAA0B,EAC1B,iCAAiC,EACjC,6BAA6B,GAC9B,MAAM,qBAAqB,CAAC;AAG7B,MAAM,MAAM,GAAG,WAAW,EAAE,CAAC;AAE7B,SAAS,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AAChE,UAAU,CAAC,GAAG,EAAE;IACd,iFAAiF;IACjF,MAAM,CAAC,GAAG,CACR,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,iBAAiB,EAAE,GAAG,EAAE;QAC1C,OAAO,YAAY,CAAC,IAAI,CAAC,6BAA6B,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC,CACH,CAAC;AACJ,CAAC,CAAC,CAAC;AACH,SAAS,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;AACxC,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAE/B,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,MAAM,MAAM,GAAgB;QAC1B,OAAO,EAAE,QAAQ;QACjB,KAAK,EAAE,cAAc;KACtB,CAAC;IAEF,MAAM,SAAS,GAAuB;QACpC,WAAW,EAAE;YACX,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,6BAA6B,EAAE;SAC3D;QACD,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,uCAAuC,EAAE;SACzE;QACD,WAAW,EAAE,EAAE;KAChB,CAAC;IAEF,0CAA0C;IAC1C,SAAS,yBAAyB,CAAC,YAAY,GAAG,YAAY;QAC5D,MAAM,CAAC,GAAG,CACR,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,YAAY,EAAE,GAAG,EAAE;YACtC,OAAO,YAAY,CAAC,IAAI,CACtB,2BAA2B,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CACjE,CAAC;QACJ,CAAC,CAAC,EACF,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,mBAAmB,YAAY,EAAE,EAAE,GAAG,EAAE;YAC1D,OAAO,YAAY,CAAC,IAAI,CACtB,8BAA8B,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CACvE,CAAC;QACJ,CAAC,CAAC,EACF,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,mBAAmB,YAAY,WAAW,EAAE,GAAG,EAAE;YACpE,OAAO,YAAY,CAAC,IAAI,CAAC,4BAA4B,EAAE,CAAC,CAAC;QAC3D,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,yBAAyB,CAAC,YAAY,CAAC,CAAC;YAExC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC;YAE5E,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC1C,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YAC/C,IAAI,SAAS,GAAG,CAAC,CAAC;YAElB,MAAM,CAAC,GAAG,CACR,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,YAAY,EAAE,GAAG,EAAE;gBACtC,OAAO,YAAY,CAAC,IAAI,CACtB,2BAA2B,CAAC,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAChF,CAAC;YACJ,CAAC,CAAC,EACF,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,6BAA6B,EAAE,GAAG,EAAE;gBACtD,SAAS,EAAE,CAAC;gBACZ,oDAAoD;gBACpD,MAAM,MAAM,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC;gBACxD,OAAO,YAAY,CAAC,IAAI,CACtB,8BAA8B,CAAC,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CACxE,CAAC;YACJ,CAAC,CAAC,EACF,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,sCAAsC,EAAE,GAAG,EAAE;gBAChE,OAAO,YAAY,CAAC,IAAI,CAAC,4BAA4B,EAAE,CAAC,CAAC;YAC3D,CAAC,CAAC,CACH,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC;YAE5E,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,MAAM,CAAC,GAAG,CACR,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,YAAY,EAAE,GAAG,EAAE;gBACtC,OAAO,YAAY,CAAC,IAAI,CACtB,0BAA0B,CAAC,mBAAmB,CAAC,EAC/C,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAC;YACJ,CAAC,CAAC,CACH,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAErD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,CAAC,GAAG,CACR,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,YAAY,EAAE,GAAG,EAAE;gBACtC,OAAO,YAAY,CAAC,IAAI,CACtB,iCAAiC,CAAC;oBAChC,EAAE,QAAQ,EAAE,mBAAmB,EAAE,KAAK,EAAE,iBAAiB,EAAE;oBAC3D,EAAE,KAAK,EAAE,gCAAgC,EAAE;iBAC5C,CAAC,EACF,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAC;YACJ,CAAC,CAAC,CACH,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAErD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,qCAAqC,CAAC,CAAC;YACtE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;YAC5C,MAAM,CAAC,GAAG,CACR,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,YAAY,EAAE,GAAG,EAAE;gBACtC,OAAO,YAAY,CAAC,IAAI,CACtB,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,EACxC,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAC;YACJ,CAAC,CAAC,CACH,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAErD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YAC/C,MAAM,CAAC,GAAG,CACR,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,YAAY,EAAE,GAAG,EAAE;gBACtC,OAAO,IAAI,YAAY,CAAC,gBAAgB,EAAE;oBACxC,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE;iBAC1C,CAAC,CAAC;YACL,CAAC,CAAC,CACH,CAAC;YAEF,MAAM,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAC3D,0BAA0B,CAC3B,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,IAAI,WAAW,GAAkB,IAAI,CAAC;YAEtC,MAAM,CAAC,GAAG,CACR,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;gBACjD,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;gBAC1B,OAAO,YAAY,CAAC,IAAI,CACtB,2BAA2B,CAAC,EAAE,YAAY,EAAE,iBAAiB,EAAE,CAAC,CACjE,CAAC;YACJ,CAAC,CAAC,EACF,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,iCAAiC,EAAE,GAAG,EAAE;gBAC1D,OAAO,YAAY,CAAC,IAAI,CACtB,8BAA8B,CAAC,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAC1F,CAAC;YACJ,CAAC,CAAC,EACF,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,0CAA0C,EAAE,GAAG,EAAE;gBACpE,OAAO,YAAY,CAAC,IAAI,CAAC,4BAA4B,EAAE,CAAC,CAAC;YAC3D,CAAC,CAAC,CACH,CAAC;YAEF,MAAM,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC;YAE7D,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,QAAQ,YAAY,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;YAChD,MAAM,CAAC,GAAG,CACR,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,YAAY,EAAE,GAAG,EAAE;gBACtC,OAAO,YAAY,CAAC,IAAI,CACtB,2BAA2B,CAAC,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAChF,CAAC;YACJ,CAAC,CAAC,EACF,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,6BAA6B,EAAE,GAAG,EAAE;gBACtD,OAAO,YAAY,CAAC,IAAI,CACtB,8BAA8B,CAAC,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAClF,CAAC;YACJ,CAAC,CAAC,CACH,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC;YAE5E,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,uCAAuC,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;YACxC,MAAM,CAAC,GAAG,CACR,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,YAAY,EAAE,GAAG,EAAE;gBACtC,OAAO,YAAY,CAAC,IAAI,CACtB,2BAA2B,CAAC,EAAE,YAAY,EAAE,qBAAqB,EAAE,CAAC,CACrE,CAAC;YACJ,CAAC,CAAC,EACF,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,qCAAqC,EAAE,GAAG,EAAE;gBAC9D,OAAO,YAAY,CAAC,IAAI,CACtB,8BAA8B,CAAC,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAC9F,CAAC;YACJ,CAAC,CAAC,EACF,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,8CAA8C,EAAE,GAAG,EAAE;gBACxE,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YAC1E,CAAC,CAAC,CACH,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC;YAE5E,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,IAAI,WAAW,GAAkB,IAAI,CAAC;YAEtC,MAAM,CAAC,GAAG,CACR,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;gBACjD,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;gBAC1B,OAAO,YAAY,CAAC,IAAI,CACtB,2BAA2B,CAAC,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC,CAC9D,CAAC;YACJ,CAAC,CAAC,EACF,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,8BAA8B,EAAE,GAAG,EAAE;gBACvD,OAAO,YAAY,CAAC,IAAI,CACtB,8BAA8B,CAAC,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CACvF,CAAC;YACJ,CAAC,CAAC,EACF,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,uCAAuC,EAAE,GAAG,EAAE;gBACjE,OAAO,YAAY,CAAC,IAAI,CAAC,4BAA4B,EAAE,CAAC,CAAC;YAC3D,CAAC,CAAC,CACH,CAAC;YAEF,MAAM,YAAY,CAChB,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,GAAG,EAAE,EACtC,SAAS,EACT,EAAE,cAAc,EAAE,CAAC,EAAE,CACtB,CAAC;YAEF,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,QAAQ,YAAY,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,CAAC,GAAG,CACR,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,YAAY,EAAE,GAAG,EAAE;gBACtC,OAAO,YAAY,CAAC,IAAI,CACtB,2BAA2B,CAAC,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CACnF,CAAC;YACJ,CAAC,CAAC,EACF,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,gCAAgC,EAAE,GAAG,EAAE;gBACzD,OAAO,YAAY,CAAC,IAAI,CACtB,8BAA8B,CAAC,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CACtF,CAAC;YACJ,CAAC,CAAC,CACH,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE;gBACnD,cAAc,EAAE,CAAC;gBACjB,eAAe,EAAE,CAAC;aACnB,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}