@tinybirdco/sdk 0.0.13 → 0.0.14
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/api/deploy.d.ts +80 -2
- package/dist/api/deploy.d.ts.map +1 -1
- package/dist/api/deploy.js +82 -38
- package/dist/api/deploy.js.map +1 -1
- package/dist/cli/commands/deploy.d.ts +3 -0
- package/dist/cli/commands/deploy.d.ts.map +1 -1
- package/dist/cli/commands/deploy.js +1 -0
- package/dist/cli/commands/deploy.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +24 -2
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/preview.d.ts +65 -0
- package/dist/cli/commands/preview.d.ts.map +1 -0
- package/dist/cli/commands/preview.js +234 -0
- package/dist/cli/commands/preview.js.map +1 -0
- package/dist/cli/commands/preview.test.d.ts +2 -0
- package/dist/cli/commands/preview.test.d.ts.map +1 -0
- package/dist/cli/commands/preview.test.js +36 -0
- package/dist/cli/commands/preview.test.js.map +1 -0
- package/dist/cli/index.js +135 -36
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/output.d.ts +45 -0
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +73 -1
- package/dist/cli/output.js.map +1 -1
- package/dist/cli/output.test.js +98 -2
- package/dist/cli/output.test.js.map +1 -1
- package/dist/client/preview.d.ts +36 -0
- package/dist/client/preview.d.ts.map +1 -0
- package/dist/client/preview.js +161 -0
- package/dist/client/preview.js.map +1 -0
- package/dist/client/preview.test.d.ts +2 -0
- package/dist/client/preview.test.d.ts.map +1 -0
- package/dist/client/preview.test.js +137 -0
- package/dist/client/preview.test.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/schema/project.d.ts.map +1 -1
- package/dist/schema/project.js +7 -3
- package/dist/schema/project.js.map +1 -1
- package/package.json +1 -1
- package/src/api/deploy.ts +170 -10
- package/src/cli/commands/deploy.ts +4 -1
- package/src/cli/commands/init.ts +24 -2
- package/src/cli/commands/preview.test.ts +42 -0
- package/src/cli/commands/preview.ts +313 -0
- package/src/cli/index.ts +147 -37
- package/src/cli/output.test.ts +116 -1
- package/src/cli/output.ts +96 -1
- package/src/client/preview.test.ts +168 -0
- package/src/client/preview.ts +210 -0
- package/src/index.ts +8 -0
- package/src/schema/project.ts +9 -3
package/dist/cli/output.d.ts
CHANGED
|
@@ -40,8 +40,22 @@ export declare function formatTime(): string;
|
|
|
40
40
|
export declare function formatDuration(ms: number): string;
|
|
41
41
|
/**
|
|
42
42
|
* Show a resource change (checkmark + path + status)
|
|
43
|
+
* @deprecated Use showChangesTable instead for table format
|
|
43
44
|
*/
|
|
44
45
|
export declare function showResourceChange(path: string, status: "created" | "changed" | "deleted"): void;
|
|
46
|
+
/**
|
|
47
|
+
* Resource change entry for table display
|
|
48
|
+
*/
|
|
49
|
+
export interface ResourceChange {
|
|
50
|
+
status: "new" | "modified" | "deleted";
|
|
51
|
+
name: string;
|
|
52
|
+
type: "datasource" | "pipe" | "connection";
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Show changes table similar to Python CLI
|
|
56
|
+
* Displays a formatted table of resource changes
|
|
57
|
+
*/
|
|
58
|
+
export declare function showChangesTable(changes: ResourceChange[]): void;
|
|
45
59
|
/**
|
|
46
60
|
* Show a warning for a resource
|
|
47
61
|
*/
|
|
@@ -65,6 +79,30 @@ export declare function showBuildFailure(isRebuild?: boolean): void;
|
|
|
65
79
|
* Show no changes message
|
|
66
80
|
*/
|
|
67
81
|
export declare function showNoChanges(): void;
|
|
82
|
+
/**
|
|
83
|
+
* Show waiting for deployment message
|
|
84
|
+
*/
|
|
85
|
+
export declare function showWaitingForDeployment(): void;
|
|
86
|
+
/**
|
|
87
|
+
* Show deployment ready message
|
|
88
|
+
*/
|
|
89
|
+
export declare function showDeploymentReady(): void;
|
|
90
|
+
/**
|
|
91
|
+
* Show deployment live message
|
|
92
|
+
*/
|
|
93
|
+
export declare function showDeploymentLive(deploymentId: string): void;
|
|
94
|
+
/**
|
|
95
|
+
* Show validating deployment message
|
|
96
|
+
*/
|
|
97
|
+
export declare function showValidatingDeployment(): void;
|
|
98
|
+
/**
|
|
99
|
+
* Show final deploy success message
|
|
100
|
+
*/
|
|
101
|
+
export declare function showDeploySuccess(durationMs: number): void;
|
|
102
|
+
/**
|
|
103
|
+
* Show final deploy failure message
|
|
104
|
+
*/
|
|
105
|
+
export declare function showDeployFailure(): void;
|
|
68
106
|
/**
|
|
69
107
|
* Output object containing all output functions
|
|
70
108
|
*/
|
|
@@ -79,10 +117,17 @@ export declare const output: {
|
|
|
79
117
|
formatTime: typeof formatTime;
|
|
80
118
|
formatDuration: typeof formatDuration;
|
|
81
119
|
showResourceChange: typeof showResourceChange;
|
|
120
|
+
showChangesTable: typeof showChangesTable;
|
|
82
121
|
showResourceWarning: typeof showResourceWarning;
|
|
83
122
|
showBuildErrors: typeof showBuildErrors;
|
|
84
123
|
showBuildSuccess: typeof showBuildSuccess;
|
|
85
124
|
showBuildFailure: typeof showBuildFailure;
|
|
86
125
|
showNoChanges: typeof showNoChanges;
|
|
126
|
+
showWaitingForDeployment: typeof showWaitingForDeployment;
|
|
127
|
+
showDeploymentReady: typeof showDeploymentReady;
|
|
128
|
+
showDeploymentLive: typeof showDeploymentLive;
|
|
129
|
+
showValidatingDeployment: typeof showValidatingDeployment;
|
|
130
|
+
showDeploySuccess: typeof showDeploySuccess;
|
|
131
|
+
showDeployFailure: typeof showDeployFailure;
|
|
87
132
|
};
|
|
88
133
|
//# sourceMappingURL=output.d.ts.map
|
package/dist/cli/output.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/cli/output.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAqBH;;GAEG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7C;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE3C;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7C;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE1C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE/C;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE1C;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE1C;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAKjD;AAED
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/cli/output.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAqBH;;GAEG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7C;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE3C;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7C;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE1C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE/C;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE1C;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE1C;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAKjD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GACxC,IAAI,CAEN;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,KAAK,GAAG,UAAU,GAAG,SAAS,CAAC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,YAAY,GAAG,MAAM,GAAG,YAAY,CAAC;CAC5C;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,IAAI,CA8BhE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,IAAI,CAEN;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,IAAI,CAczF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,UAAQ,GAAG,IAAI,CAG5E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,UAAQ,GAAG,IAAI,CAGxD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAE7D;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAE1D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED;;GAEG;AACH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;CAuBlB,CAAC"}
|
package/dist/cli/output.js
CHANGED
|
@@ -78,10 +78,39 @@ export function formatDuration(ms) {
|
|
|
78
78
|
}
|
|
79
79
|
/**
|
|
80
80
|
* Show a resource change (checkmark + path + status)
|
|
81
|
+
* @deprecated Use showChangesTable instead for table format
|
|
81
82
|
*/
|
|
82
83
|
export function showResourceChange(path, status) {
|
|
83
84
|
console.log(`✓ ${path} ${status}`);
|
|
84
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* Show changes table similar to Python CLI
|
|
88
|
+
* Displays a formatted table of resource changes
|
|
89
|
+
*/
|
|
90
|
+
export function showChangesTable(changes) {
|
|
91
|
+
if (changes.length === 0) {
|
|
92
|
+
gray("* No changes to be deployed");
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
info("\n* Changes to be deployed:");
|
|
96
|
+
// Calculate column widths
|
|
97
|
+
const statusWidth = Math.max(6, ...changes.map((c) => c.status.length));
|
|
98
|
+
const nameWidth = Math.max(4, ...changes.map((c) => c.name.length));
|
|
99
|
+
const typeWidth = Math.max(4, ...changes.map((c) => c.type.length));
|
|
100
|
+
// Build table
|
|
101
|
+
const separator = `├${"─".repeat(statusWidth + 2)}┼${"─".repeat(nameWidth + 2)}┼${"─".repeat(typeWidth + 2)}┤`;
|
|
102
|
+
const topBorder = `┌${"─".repeat(statusWidth + 2)}┬${"─".repeat(nameWidth + 2)}┬${"─".repeat(typeWidth + 2)}┐`;
|
|
103
|
+
const bottomBorder = `└${"─".repeat(statusWidth + 2)}┴${"─".repeat(nameWidth + 2)}┴${"─".repeat(typeWidth + 2)}┘`;
|
|
104
|
+
const padRight = (str, width) => str + " ".repeat(width - str.length);
|
|
105
|
+
// Print table
|
|
106
|
+
console.log(topBorder);
|
|
107
|
+
console.log(`│ ${padRight("status", statusWidth)} │ ${padRight("name", nameWidth)} │ ${padRight("type", typeWidth)} │`);
|
|
108
|
+
console.log(separator);
|
|
109
|
+
for (const change of changes) {
|
|
110
|
+
console.log(`│ ${padRight(change.status, statusWidth)} │ ${padRight(change.name, nameWidth)} │ ${padRight(change.type, typeWidth)} │`);
|
|
111
|
+
}
|
|
112
|
+
console.log(bottomBorder);
|
|
113
|
+
}
|
|
85
114
|
/**
|
|
86
115
|
* Show a warning for a resource
|
|
87
116
|
*/
|
|
@@ -125,7 +154,43 @@ export function showBuildFailure(isRebuild = false) {
|
|
|
125
154
|
* Show no changes message
|
|
126
155
|
*/
|
|
127
156
|
export function showNoChanges() {
|
|
128
|
-
|
|
157
|
+
warning("△ Not deploying. No changes.");
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Show waiting for deployment message
|
|
161
|
+
*/
|
|
162
|
+
export function showWaitingForDeployment() {
|
|
163
|
+
info("» Waiting for deployment to be ready...");
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Show deployment ready message
|
|
167
|
+
*/
|
|
168
|
+
export function showDeploymentReady() {
|
|
169
|
+
success("✓ Deployment is ready");
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Show deployment live message
|
|
173
|
+
*/
|
|
174
|
+
export function showDeploymentLive(deploymentId) {
|
|
175
|
+
success(`✓ Deployment #${deploymentId} is live!`);
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Show validating deployment message
|
|
179
|
+
*/
|
|
180
|
+
export function showValidatingDeployment() {
|
|
181
|
+
info("» Validating deployment...");
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Show final deploy success message
|
|
185
|
+
*/
|
|
186
|
+
export function showDeploySuccess(durationMs) {
|
|
187
|
+
success(`\n✓ Deploy completed in ${formatDuration(durationMs)}`);
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Show final deploy failure message
|
|
191
|
+
*/
|
|
192
|
+
export function showDeployFailure() {
|
|
193
|
+
error(`\n✗ Deploy failed`);
|
|
129
194
|
}
|
|
130
195
|
/**
|
|
131
196
|
* Output object containing all output functions
|
|
@@ -141,10 +206,17 @@ export const output = {
|
|
|
141
206
|
formatTime,
|
|
142
207
|
formatDuration,
|
|
143
208
|
showResourceChange,
|
|
209
|
+
showChangesTable,
|
|
144
210
|
showResourceWarning,
|
|
145
211
|
showBuildErrors,
|
|
146
212
|
showBuildSuccess,
|
|
147
213
|
showBuildFailure,
|
|
148
214
|
showNoChanges,
|
|
215
|
+
showWaitingForDeployment,
|
|
216
|
+
showDeploymentReady,
|
|
217
|
+
showDeploymentLive,
|
|
218
|
+
showValidatingDeployment,
|
|
219
|
+
showDeploySuccess,
|
|
220
|
+
showDeployFailure,
|
|
149
221
|
};
|
|
150
222
|
//# sourceMappingURL=output.js.map
|
package/dist/cli/output.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/cli/output.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,mBAAmB;AACnB,MAAM,MAAM,GAAG;IACb,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,SAAS;IACf,GAAG,EAAE,UAAU;IACf,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,gBAAgB;IACxB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,UAAU;CACR,CAAC;AAEX,qCAAqC;AACrC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;AAE5E,SAAS,QAAQ,CAAC,IAAY,EAAE,KAA0B;IACxD,IAAI,OAAO;QAAE,OAAO,IAAI,CAAC;IACzB,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,OAAe;IACrC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,OAAe;IACnC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,OAAe;IACrC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,IAAI,CAAC,OAAe;IAClC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,IAAI,CAAC,OAAe;IAClC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,IAAI,CAAC,OAAe;IAClC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,IAAI,IAAI,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;AACnE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;QACd,OAAO,GAAG,EAAE,IAAI,CAAC;IACnB,CAAC;IACD,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AACtC,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/cli/output.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/output.test.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Tests for CLI output utilities
|
|
3
3
|
*/
|
|
4
4
|
import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
|
|
5
|
-
import { formatDuration, showResourceChange, showBuildErrors, showBuildSuccess, showBuildFailure, showNoChanges, } from "./output.js";
|
|
5
|
+
import { formatDuration, showResourceChange, showChangesTable, showBuildErrors, showBuildSuccess, showBuildFailure, showNoChanges, showWaitingForDeployment, showDeploymentReady, showDeploymentLive, showValidatingDeployment, showDeploySuccess, showDeployFailure, } from "./output.js";
|
|
6
6
|
describe("output utilities", () => {
|
|
7
7
|
let consoleLogSpy;
|
|
8
8
|
let consoleErrorSpy;
|
|
@@ -41,6 +41,45 @@ describe("output utilities", () => {
|
|
|
41
41
|
expect(consoleLogSpy).toHaveBeenCalledWith("✓ old_data.datasource deleted");
|
|
42
42
|
});
|
|
43
43
|
});
|
|
44
|
+
describe("showChangesTable", () => {
|
|
45
|
+
it("shows no changes message when empty", () => {
|
|
46
|
+
showChangesTable([]);
|
|
47
|
+
expect(consoleLogSpy).toHaveBeenCalled();
|
|
48
|
+
const call = consoleLogSpy.mock.calls[0][0];
|
|
49
|
+
expect(call).toContain("No changes to be deployed");
|
|
50
|
+
});
|
|
51
|
+
it("shows table with changes", () => {
|
|
52
|
+
showChangesTable([
|
|
53
|
+
{ status: "new", name: "events", type: "datasource" },
|
|
54
|
+
{ status: "modified", name: "top_pages", type: "pipe" },
|
|
55
|
+
{ status: "deleted", name: "old_data", type: "datasource" },
|
|
56
|
+
]);
|
|
57
|
+
// Check that table header and data were logged
|
|
58
|
+
const allCalls = consoleLogSpy.mock.calls.map((c) => c[0]).join("\n");
|
|
59
|
+
expect(allCalls).toContain("Changes to be deployed");
|
|
60
|
+
expect(allCalls).toContain("status");
|
|
61
|
+
expect(allCalls).toContain("name");
|
|
62
|
+
expect(allCalls).toContain("type");
|
|
63
|
+
expect(allCalls).toContain("new");
|
|
64
|
+
expect(allCalls).toContain("events");
|
|
65
|
+
expect(allCalls).toContain("datasource");
|
|
66
|
+
expect(allCalls).toContain("modified");
|
|
67
|
+
expect(allCalls).toContain("top_pages");
|
|
68
|
+
expect(allCalls).toContain("pipe");
|
|
69
|
+
expect(allCalls).toContain("deleted");
|
|
70
|
+
expect(allCalls).toContain("old_data");
|
|
71
|
+
});
|
|
72
|
+
it("shows table borders", () => {
|
|
73
|
+
showChangesTable([{ status: "new", name: "test", type: "pipe" }]);
|
|
74
|
+
const allCalls = consoleLogSpy.mock.calls.map((c) => c[0]).join("\n");
|
|
75
|
+
expect(allCalls).toContain("┌");
|
|
76
|
+
expect(allCalls).toContain("┐");
|
|
77
|
+
expect(allCalls).toContain("├");
|
|
78
|
+
expect(allCalls).toContain("┤");
|
|
79
|
+
expect(allCalls).toContain("└");
|
|
80
|
+
expect(allCalls).toContain("┘");
|
|
81
|
+
});
|
|
82
|
+
});
|
|
44
83
|
describe("showBuildErrors", () => {
|
|
45
84
|
it("shows errors with filename", () => {
|
|
46
85
|
showBuildErrors([
|
|
@@ -112,7 +151,64 @@ describe("output utilities", () => {
|
|
|
112
151
|
describe("showNoChanges", () => {
|
|
113
152
|
it("shows no changes message", () => {
|
|
114
153
|
showNoChanges();
|
|
115
|
-
expect(consoleLogSpy).
|
|
154
|
+
expect(consoleLogSpy).toHaveBeenCalled();
|
|
155
|
+
const call = consoleLogSpy.mock.calls[0][0];
|
|
156
|
+
expect(call).toContain("△");
|
|
157
|
+
expect(call).toContain("Not deploying. No changes.");
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
describe("showWaitingForDeployment", () => {
|
|
161
|
+
it("shows waiting for deployment message", () => {
|
|
162
|
+
showWaitingForDeployment();
|
|
163
|
+
expect(consoleLogSpy).toHaveBeenCalledWith("» Waiting for deployment to be ready...");
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
describe("showDeploymentReady", () => {
|
|
167
|
+
it("shows deployment ready message", () => {
|
|
168
|
+
showDeploymentReady();
|
|
169
|
+
expect(consoleLogSpy).toHaveBeenCalled();
|
|
170
|
+
const call = consoleLogSpy.mock.calls[0][0];
|
|
171
|
+
expect(call).toContain("✓");
|
|
172
|
+
expect(call).toContain("Deployment is ready");
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
describe("showDeploymentLive", () => {
|
|
176
|
+
it("shows deployment live message with ID", () => {
|
|
177
|
+
showDeploymentLive("abc123");
|
|
178
|
+
expect(consoleLogSpy).toHaveBeenCalled();
|
|
179
|
+
const call = consoleLogSpy.mock.calls[0][0];
|
|
180
|
+
expect(call).toContain("✓");
|
|
181
|
+
expect(call).toContain("Deployment #abc123 is live!");
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
describe("showValidatingDeployment", () => {
|
|
185
|
+
it("shows validating deployment message", () => {
|
|
186
|
+
showValidatingDeployment();
|
|
187
|
+
expect(consoleLogSpy).toHaveBeenCalledWith("» Validating deployment...");
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
describe("showDeploySuccess", () => {
|
|
191
|
+
it("shows deploy success with duration in ms", () => {
|
|
192
|
+
showDeploySuccess(500);
|
|
193
|
+
expect(consoleLogSpy).toHaveBeenCalled();
|
|
194
|
+
const call = consoleLogSpy.mock.calls[0][0];
|
|
195
|
+
expect(call).toContain("✓");
|
|
196
|
+
expect(call).toContain("Deploy completed in 500ms");
|
|
197
|
+
});
|
|
198
|
+
it("shows deploy success with duration in seconds", () => {
|
|
199
|
+
showDeploySuccess(2500);
|
|
200
|
+
expect(consoleLogSpy).toHaveBeenCalled();
|
|
201
|
+
const call = consoleLogSpy.mock.calls[0][0];
|
|
202
|
+
expect(call).toContain("Deploy completed in 2.5s");
|
|
203
|
+
});
|
|
204
|
+
});
|
|
205
|
+
describe("showDeployFailure", () => {
|
|
206
|
+
it("shows deploy failure", () => {
|
|
207
|
+
showDeployFailure();
|
|
208
|
+
expect(consoleErrorSpy).toHaveBeenCalled();
|
|
209
|
+
const call = consoleErrorSpy.mock.calls[0][0];
|
|
210
|
+
expect(call).toContain("✗");
|
|
211
|
+
expect(call).toContain("Deploy failed");
|
|
116
212
|
});
|
|
117
213
|
});
|
|
118
214
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.test.js","sourceRoot":"","sources":["../../src/cli/output.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,
|
|
1
|
+
{"version":3,"file":"output.test.js","sourceRoot":"","sources":["../../src/cli/output.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Preview environment detection and branch token resolution
|
|
3
|
+
*
|
|
4
|
+
* Automatically detects preview/CI environments and resolves the appropriate
|
|
5
|
+
* Tinybird branch token for the current git branch.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Detect if we're running in a preview/CI environment
|
|
9
|
+
*/
|
|
10
|
+
export declare function isPreviewEnvironment(): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Get the current git branch name from environment variables
|
|
13
|
+
* Supports various CI platforms
|
|
14
|
+
*/
|
|
15
|
+
export declare function getPreviewBranchName(): string | null;
|
|
16
|
+
/**
|
|
17
|
+
* Resolve the token to use for API calls
|
|
18
|
+
*
|
|
19
|
+
* Priority:
|
|
20
|
+
* 1. Explicit TINYBIRD_BRANCH_TOKEN env var
|
|
21
|
+
* 2. In preview environment: fetch branch token using workspace token
|
|
22
|
+
* 3. Fall back to TINYBIRD_TOKEN
|
|
23
|
+
*
|
|
24
|
+
* @param options - Optional configuration overrides
|
|
25
|
+
* @returns The resolved token to use
|
|
26
|
+
*/
|
|
27
|
+
export declare function resolveToken(options?: {
|
|
28
|
+
baseUrl?: string;
|
|
29
|
+
token?: string;
|
|
30
|
+
}): Promise<string>;
|
|
31
|
+
/**
|
|
32
|
+
* Clear the cached branch token
|
|
33
|
+
* Useful for testing or when switching branches
|
|
34
|
+
*/
|
|
35
|
+
export declare function clearTokenCache(): void;
|
|
36
|
+
//# sourceMappingURL=preview.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../src/client/preview.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoBH;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAW9C;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,IAAI,CA+CpD;AA8CD;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAAC,OAAO,CAAC,EAAE;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgDlB;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAGtC"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Preview environment detection and branch token resolution
|
|
3
|
+
*
|
|
4
|
+
* Automatically detects preview/CI environments and resolves the appropriate
|
|
5
|
+
* Tinybird branch token for the current git branch.
|
|
6
|
+
*/
|
|
7
|
+
import { tinybirdFetch } from "../api/fetcher.js";
|
|
8
|
+
/**
|
|
9
|
+
* Cached branch token to avoid repeated API calls
|
|
10
|
+
*/
|
|
11
|
+
let cachedBranchToken = null;
|
|
12
|
+
let cachedBranchName = null;
|
|
13
|
+
/**
|
|
14
|
+
* Detect if we're running in a preview/CI environment
|
|
15
|
+
*/
|
|
16
|
+
export function isPreviewEnvironment() {
|
|
17
|
+
return !!(
|
|
18
|
+
// Vercel preview deployments
|
|
19
|
+
process.env.VERCEL_ENV === "preview" ||
|
|
20
|
+
// GitHub Actions (PRs)
|
|
21
|
+
process.env.GITHUB_HEAD_REF ||
|
|
22
|
+
// GitLab CI (merge requests)
|
|
23
|
+
process.env.CI_MERGE_REQUEST_SOURCE_BRANCH_NAME ||
|
|
24
|
+
// Generic CI with preview indicator
|
|
25
|
+
(process.env.CI && process.env.TINYBIRD_PREVIEW_MODE === "true"));
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get the current git branch name from environment variables
|
|
29
|
+
* Supports various CI platforms
|
|
30
|
+
*/
|
|
31
|
+
export function getPreviewBranchName() {
|
|
32
|
+
// Explicit override
|
|
33
|
+
if (process.env.TINYBIRD_BRANCH_NAME) {
|
|
34
|
+
return process.env.TINYBIRD_BRANCH_NAME;
|
|
35
|
+
}
|
|
36
|
+
// Vercel
|
|
37
|
+
if (process.env.VERCEL_GIT_COMMIT_REF) {
|
|
38
|
+
return process.env.VERCEL_GIT_COMMIT_REF;
|
|
39
|
+
}
|
|
40
|
+
// GitHub Actions (PR)
|
|
41
|
+
if (process.env.GITHUB_HEAD_REF) {
|
|
42
|
+
return process.env.GITHUB_HEAD_REF;
|
|
43
|
+
}
|
|
44
|
+
// GitHub Actions (push)
|
|
45
|
+
if (process.env.GITHUB_REF_NAME) {
|
|
46
|
+
return process.env.GITHUB_REF_NAME;
|
|
47
|
+
}
|
|
48
|
+
// GitLab CI (merge request)
|
|
49
|
+
if (process.env.CI_MERGE_REQUEST_SOURCE_BRANCH_NAME) {
|
|
50
|
+
return process.env.CI_MERGE_REQUEST_SOURCE_BRANCH_NAME;
|
|
51
|
+
}
|
|
52
|
+
// GitLab CI (branch)
|
|
53
|
+
if (process.env.CI_COMMIT_BRANCH) {
|
|
54
|
+
return process.env.CI_COMMIT_BRANCH;
|
|
55
|
+
}
|
|
56
|
+
// CircleCI
|
|
57
|
+
if (process.env.CIRCLE_BRANCH) {
|
|
58
|
+
return process.env.CIRCLE_BRANCH;
|
|
59
|
+
}
|
|
60
|
+
// Azure Pipelines
|
|
61
|
+
if (process.env.BUILD_SOURCEBRANCHNAME) {
|
|
62
|
+
return process.env.BUILD_SOURCEBRANCHNAME;
|
|
63
|
+
}
|
|
64
|
+
// Bitbucket Pipelines
|
|
65
|
+
if (process.env.BITBUCKET_BRANCH) {
|
|
66
|
+
return process.env.BITBUCKET_BRANCH;
|
|
67
|
+
}
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Sanitize a git branch name for use as a Tinybird branch name
|
|
72
|
+
* Tinybird only accepts alphanumeric characters and underscores
|
|
73
|
+
*/
|
|
74
|
+
function sanitizeBranchName(branchName) {
|
|
75
|
+
return branchName
|
|
76
|
+
.replace(/[^a-zA-Z0-9_]/g, "_")
|
|
77
|
+
.replace(/_+/g, "_")
|
|
78
|
+
.replace(/^_|_$/g, "");
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Fetch branch token from Tinybird API
|
|
82
|
+
*/
|
|
83
|
+
async function fetchBranchToken(baseUrl, workspaceToken, branchName) {
|
|
84
|
+
const sanitizedName = sanitizeBranchName(branchName);
|
|
85
|
+
const url = new URL(`/v0/environments/${encodeURIComponent(sanitizedName)}`, baseUrl);
|
|
86
|
+
url.searchParams.set("with_token", "true");
|
|
87
|
+
try {
|
|
88
|
+
const response = await tinybirdFetch(url.toString(), {
|
|
89
|
+
method: "GET",
|
|
90
|
+
headers: {
|
|
91
|
+
Authorization: `Bearer ${workspaceToken}`,
|
|
92
|
+
},
|
|
93
|
+
});
|
|
94
|
+
if (!response.ok) {
|
|
95
|
+
// Branch doesn't exist or access denied
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
const branch = (await response.json());
|
|
99
|
+
return branch.token ?? null;
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
// Network error or other issue
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Resolve the token to use for API calls
|
|
108
|
+
*
|
|
109
|
+
* Priority:
|
|
110
|
+
* 1. Explicit TINYBIRD_BRANCH_TOKEN env var
|
|
111
|
+
* 2. In preview environment: fetch branch token using workspace token
|
|
112
|
+
* 3. Fall back to TINYBIRD_TOKEN
|
|
113
|
+
*
|
|
114
|
+
* @param options - Optional configuration overrides
|
|
115
|
+
* @returns The resolved token to use
|
|
116
|
+
*/
|
|
117
|
+
export async function resolveToken(options) {
|
|
118
|
+
// 1. Check for explicit branch token override
|
|
119
|
+
if (process.env.TINYBIRD_BRANCH_TOKEN) {
|
|
120
|
+
return process.env.TINYBIRD_BRANCH_TOKEN;
|
|
121
|
+
}
|
|
122
|
+
// Get the configured token (workspace token)
|
|
123
|
+
const configuredToken = options?.token ?? process.env.TINYBIRD_TOKEN;
|
|
124
|
+
if (!configuredToken) {
|
|
125
|
+
throw new Error("TINYBIRD_TOKEN is not configured. Set it in your environment or pass it to createTinybirdClient().");
|
|
126
|
+
}
|
|
127
|
+
// 2. Check if we're in a preview environment
|
|
128
|
+
if (isPreviewEnvironment()) {
|
|
129
|
+
const branchName = getPreviewBranchName();
|
|
130
|
+
if (branchName) {
|
|
131
|
+
// Check cache first
|
|
132
|
+
if (cachedBranchToken && cachedBranchName === branchName) {
|
|
133
|
+
return cachedBranchToken;
|
|
134
|
+
}
|
|
135
|
+
const baseUrl = options?.baseUrl ?? process.env.TINYBIRD_URL ?? "https://api.tinybird.co";
|
|
136
|
+
// Fetch branch token
|
|
137
|
+
const branchToken = await fetchBranchToken(baseUrl, configuredToken, branchName);
|
|
138
|
+
if (branchToken) {
|
|
139
|
+
// Cache for subsequent calls
|
|
140
|
+
cachedBranchToken = branchToken;
|
|
141
|
+
cachedBranchName = branchName;
|
|
142
|
+
return branchToken;
|
|
143
|
+
}
|
|
144
|
+
// Branch doesn't exist - fall back to workspace token
|
|
145
|
+
// This allows the app to still work, just using main workspace
|
|
146
|
+
console.warn(`[tinybird] Preview branch "${branchName}" not found. ` +
|
|
147
|
+
`Run "tinybird preview" to create it. Falling back to workspace token.`);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
// 3. Fall back to configured token
|
|
151
|
+
return configuredToken;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Clear the cached branch token
|
|
155
|
+
* Useful for testing or when switching branches
|
|
156
|
+
*/
|
|
157
|
+
export function clearTokenCache() {
|
|
158
|
+
cachedBranchToken = null;
|
|
159
|
+
cachedBranchName = null;
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=preview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preview.js","sourceRoot":"","sources":["../../src/client/preview.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preview.test.d.ts","sourceRoot":"","sources":["../../src/client/preview.test.ts"],"names":[],"mappings":""}
|