@tinybirdco/sdk 0.0.24 → 0.0.25
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/cli/commands/preview.d.ts +4 -1
- package/dist/cli/commands/preview.d.ts.map +1 -1
- package/dist/cli/commands/preview.js +28 -6
- package/dist/cli/commands/preview.js.map +1 -1
- package/dist/cli/commands/preview.test.js +11 -15
- package/dist/cli/commands/preview.test.js.map +1 -1
- package/dist/cli/git.d.ts.map +1 -1
- package/dist/cli/git.js +4 -0
- package/dist/cli/git.js.map +1 -1
- package/dist/client/base.d.ts.map +1 -1
- package/dist/client/base.js +17 -0
- package/dist/client/base.js.map +1 -1
- package/dist/client/preview.d.ts.map +1 -1
- package/dist/client/preview.js +6 -2
- package/dist/client/preview.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/commands/preview.test.ts +11 -16
- package/src/cli/commands/preview.ts +29 -9
- package/src/cli/git.ts +5 -0
- package/src/client/base.ts +18 -0
- package/src/client/preview.ts +6 -2
|
@@ -46,7 +46,10 @@ export interface PreviewCommandResult {
|
|
|
46
46
|
durationMs: number;
|
|
47
47
|
}
|
|
48
48
|
/**
|
|
49
|
-
* Generate preview branch name with format: tmp_ci_${branch}
|
|
49
|
+
* Generate preview branch name with format: tmp_ci_${branch}
|
|
50
|
+
*
|
|
51
|
+
* Uses a deterministic name based on the git branch so that Vercel preview
|
|
52
|
+
* deployments can find the branch by name.
|
|
50
53
|
*
|
|
51
54
|
* @param gitBranch - Current git branch name (or null)
|
|
52
55
|
* @returns Preview branch name
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/preview.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAmD,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAa7F;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,0CAA0C;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,yDAAyD;IACzD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,mCAAmC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,yCAAyC;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,yBAAyB;IACzB,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,uBAAuB;IACvB,KAAK,CAAC,EAAE;QACN,eAAe,EAAE,MAAM,CAAC;QACxB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,oBAAoB;IACpB,MAAM,CAAC,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED
|
|
1
|
+
{"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/preview.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAmD,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAa7F;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,0CAA0C;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,yDAAyD;IACzD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,mCAAmC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,yCAAyC;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,yBAAyB;IACzB,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,uBAAuB;IACvB,KAAK,CAAC,EAAE;QACN,eAAe,EAAE,MAAM,CAAC;QACxB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,oBAAoB;IACpB,MAAM,CAAC,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAG1E;AAED;;;;;;;;GAQG;AACH,wBAAsB,UAAU,CAAC,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAuPnG"}
|
|
@@ -3,21 +3,23 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { loadConfig, LOCAL_BASE_URL } from "../config.js";
|
|
5
5
|
import { buildFromInclude } from "../../generator/index.js";
|
|
6
|
-
import { createBranch } from "../../api/branches.js";
|
|
6
|
+
import { createBranch, deleteBranch, getBranch } from "../../api/branches.js";
|
|
7
7
|
import { deployToMain } from "../../api/deploy.js";
|
|
8
8
|
import { buildToTinybird } from "../../api/build.js";
|
|
9
9
|
import { getLocalTokens, getOrCreateLocalWorkspace, LocalNotRunningError, } from "../../api/local.js";
|
|
10
10
|
import { sanitizeBranchName, getCurrentGitBranch } from "../git.js";
|
|
11
11
|
/**
|
|
12
|
-
* Generate preview branch name with format: tmp_ci_${branch}
|
|
12
|
+
* Generate preview branch name with format: tmp_ci_${branch}
|
|
13
|
+
*
|
|
14
|
+
* Uses a deterministic name based on the git branch so that Vercel preview
|
|
15
|
+
* deployments can find the branch by name.
|
|
13
16
|
*
|
|
14
17
|
* @param gitBranch - Current git branch name (or null)
|
|
15
18
|
* @returns Preview branch name
|
|
16
19
|
*/
|
|
17
20
|
export function generatePreviewBranchName(gitBranch) {
|
|
18
|
-
const timestamp = Math.floor(Date.now() / 1000);
|
|
19
21
|
const branchPart = gitBranch ? sanitizeBranchName(gitBranch) : "unknown";
|
|
20
|
-
return `tmp_ci_${branchPart}
|
|
22
|
+
return `tmp_ci_${branchPart}`;
|
|
21
23
|
}
|
|
22
24
|
/**
|
|
23
25
|
* Run the preview command
|
|
@@ -152,13 +154,33 @@ export async function runPreview(options = {}) {
|
|
|
152
154
|
};
|
|
153
155
|
}
|
|
154
156
|
}
|
|
155
|
-
// Cloud mode -
|
|
157
|
+
// Cloud mode - delete existing branch if it exists, then create fresh and deploy
|
|
156
158
|
let branch;
|
|
157
159
|
try {
|
|
160
|
+
const apiConfig = { baseUrl: config.baseUrl, token: config.token };
|
|
161
|
+
// Check if branch already exists and delete it for a fresh start
|
|
162
|
+
try {
|
|
163
|
+
const existingBranch = await getBranch(apiConfig, previewBranchName);
|
|
164
|
+
if (existingBranch) {
|
|
165
|
+
if (debug) {
|
|
166
|
+
console.log(`[debug] Deleting existing preview branch: ${previewBranchName}`);
|
|
167
|
+
}
|
|
168
|
+
await deleteBranch(apiConfig, previewBranchName);
|
|
169
|
+
if (debug) {
|
|
170
|
+
console.log(`[debug] Existing branch deleted`);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
catch {
|
|
175
|
+
// Branch doesn't exist, that's fine
|
|
176
|
+
if (debug) {
|
|
177
|
+
console.log(`[debug] No existing branch to delete`);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
158
180
|
if (debug) {
|
|
159
181
|
console.log(`[debug] Creating preview branch: ${previewBranchName}`);
|
|
160
182
|
}
|
|
161
|
-
branch = await createBranch(
|
|
183
|
+
branch = await createBranch(apiConfig, previewBranchName);
|
|
162
184
|
if (debug) {
|
|
163
185
|
console.log(`[debug] Branch created: ${branch.name} (${branch.id})`);
|
|
164
186
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preview.js","sourceRoot":"","sources":["../../../src/cli/commands/preview.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,cAAc,EAAqC,MAAM,cAAc,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAA+B,MAAM,0BAA0B,CAAC;AACzF,OAAO,EAAE,YAAY,EAAuB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"preview.js","sourceRoot":"","sources":["../../../src/cli/commands/preview.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,cAAc,EAAqC,MAAM,cAAc,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAA+B,MAAM,0BAA0B,CAAC;AACzF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAuB,MAAM,uBAAuB,CAAC;AACnG,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EACL,cAAc,EACd,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAgDpE;;;;;;;;GAQG;AACH,MAAM,UAAU,yBAAyB,CAAC,SAAwB;IAChE,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzE,OAAO,UAAU,UAAU,EAAE,CAAC;AAChC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,UAAiC,EAAE;IAClE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAEzC,cAAc;IACd,IAAI,MAAsB,CAAC;IAC3B,IAAI,CAAC;QACH,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAG,KAAe,CAAC,OAAO;YAC/B,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SACnC,CAAC;IACJ,CAAC;IAED,0DAA0D;IAC1D,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;IACxC,MAAM,iBAAiB,GAAG,OAAO,CAAC,IAAI,IAAI,yBAAyB,CAAC,SAAS,CAAC,CAAC;IAE/E,qCAAqC;IACrC,IAAI,WAAmC,CAAC;IACxC,IAAI,CAAC;QACH,WAAW,GAAG,MAAM,gBAAgB,CAAC;YACnC,YAAY,EAAE,MAAM,CAAC,OAAO;YAC5B,GAAG,EAAE,MAAM,CAAC,GAAG;SAChB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,iBAAkB,KAAe,CAAC,OAAO,EAAE;YAClD,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SACnC,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG;QACjB,eAAe,EAAE,WAAW,CAAC,KAAK,CAAC,eAAe;QAClD,SAAS,EAAE,WAAW,CAAC,KAAK,CAAC,SAAS;KACvC,CAAC;IAEF,0DAA0D;IAC1D,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE;gBACN,IAAI,EAAE,iBAAiB;gBACvB,EAAE,EAAE,WAAW;gBACf,KAAK,EAAE,WAAW;gBAClB,GAAG,EAAE,MAAM,CAAC,OAAO;gBACnB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACrC;YACD,KAAK,EAAE,UAAU;YACjB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SACnC,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,eAAe,IAAI,MAAM,CAAC,OAAO,CAAC;IAE1D,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,8BAA8B,iBAAiB,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,oBAAoB;IACpB,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,GAAG,CAAC,qCAAqC,cAAc,SAAS,CAAC,CAAC;YAC5E,CAAC;YAED,MAAM,WAAW,GAAG,MAAM,cAAc,EAAE,CAAC;YAE3C,4CAA4C;YAC5C,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,GAAG,CAAC,qCAAqC,iBAAiB,EAAE,CAAC,CAAC;YACxE,CAAC;YAED,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,yBAAyB,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;YAClG,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,GAAG,CAAC,qBAAqB,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1F,CAAC;YAED,wDAAwD;YACxD,MAAM,YAAY,GAAG,MAAM,eAAe,CACxC;gBACE,OAAO,EAAE,cAAc;gBACvB,KAAK,EAAE,SAAS,CAAC,KAAK;aACvB,EACD,WAAW,CAAC,SAAS,CACtB,CAAC;YAEF,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;gBAC1B,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE;wBACN,IAAI,EAAE,iBAAiB;wBACvB,EAAE,EAAE,SAAS,CAAC,EAAE;wBAChB,KAAK,EAAE,SAAS,CAAC,KAAK;wBACtB,GAAG,EAAE,cAAc;wBACnB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;qBACrC;oBACD,KAAK,EAAE,UAAU;oBACjB,KAAK,EAAE,YAAY,CAAC,KAAK;oBACzB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;iBACnC,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE;oBACN,IAAI,EAAE,iBAAiB;oBACvB,EAAE,EAAE,SAAS,CAAC,EAAE;oBAChB,KAAK,EAAE,SAAS,CAAC,KAAK;oBACtB,GAAG,EAAE,cAAc;oBACnB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACrC;gBACD,KAAK,EAAE,UAAU;gBACjB,MAAM,EAAE;oBACN,MAAM,EAAE,YAAY,CAAC,MAAM;iBAC5B;gBACD,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;aACnC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,oBAAoB,EAAE,CAAC;gBAC1C,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,KAAK,CAAC,OAAO;oBACpB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;iBACnC,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,yBAA0B,KAAe,CAAC,OAAO,EAAE;gBAC1D,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;aACnC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,iFAAiF;IACjF,IAAI,MAAsB,CAAC;IAC3B,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QAEnE,iEAAiE;QACjE,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,MAAM,SAAS,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;YACrE,IAAI,cAAc,EAAE,CAAC;gBACnB,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,CAAC,GAAG,CAAC,6CAA6C,iBAAiB,EAAE,CAAC,CAAC;gBAChF,CAAC;gBACD,MAAM,YAAY,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;gBACjD,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,oCAAoC;YACpC,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,oCAAoC,iBAAiB,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;QAE1D,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,2BAA2B,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,oCAAqC,KAAe,CAAC,OAAO,EAAE;YACrE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SACnC,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,8CAA8C;YACrD,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SACnC,CAAC;IACJ,CAAC;IAED,iEAAiE;IACjE,IAAI,YAA4B,CAAC;IACjC,IAAI,CAAC;QACH,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;QACxE,CAAC;QAED,YAAY,GAAG,MAAM,YAAY,CAC/B,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,EAChD,WAAW,CAAC,SAAS,EACrB,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,0BAA0B,EAAE,IAAI,EAAE,CAC3D,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE;gBACN,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,GAAG,EAAE,MAAM,CAAC,OAAO;gBACnB,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B;YACD,KAAK,EAAE,UAAU;YACjB,KAAK,EAAE,kBAAmB,KAAe,CAAC,OAAO,EAAE;YACnD,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SACnC,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC1B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE;gBACN,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,GAAG,EAAE,MAAM,CAAC,OAAO;gBACnB,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B;YACD,KAAK,EAAE,UAAU;YACjB,KAAK,EAAE,YAAY,CAAC,KAAK;YACzB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SACnC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,MAAM,EAAE;YACN,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,GAAG,EAAE,MAAM,CAAC,OAAO;YACnB,UAAU,EAAE,MAAM,CAAC,UAAU;SAC9B;QACD,KAAK,EAAE,UAAU;QACjB,MAAM,EAAE;YACN,MAAM,EAAE,YAAY,CAAC,MAAM;SAC5B;QACD,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;KACnC,CAAC;AACJ,CAAC"}
|
|
@@ -1,35 +1,31 @@
|
|
|
1
|
-
import { describe, it, expect
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
2
|
import { generatePreviewBranchName } from "./preview.js";
|
|
3
3
|
describe("Preview command", () => {
|
|
4
4
|
describe("generatePreviewBranchName", () => {
|
|
5
|
-
|
|
6
|
-
vi.useFakeTimers();
|
|
7
|
-
vi.setSystemTime(new Date("2024-02-06T12:00:00Z"));
|
|
8
|
-
});
|
|
9
|
-
it("generates name with branch and timestamp", () => {
|
|
5
|
+
it("generates name with tmp_ci prefix", () => {
|
|
10
6
|
const result = generatePreviewBranchName("feature-branch");
|
|
11
|
-
expect(result).toBe("
|
|
7
|
+
expect(result).toBe("tmp_ci_feature_branch");
|
|
12
8
|
});
|
|
13
9
|
it("sanitizes branch name with slashes", () => {
|
|
14
10
|
const result = generatePreviewBranchName("feature/add-login");
|
|
15
|
-
expect(result).toBe("
|
|
11
|
+
expect(result).toBe("tmp_ci_feature_add_login");
|
|
16
12
|
});
|
|
17
13
|
it("sanitizes branch name with dots", () => {
|
|
18
14
|
const result = generatePreviewBranchName("release.1.0");
|
|
19
|
-
expect(result).toBe("
|
|
15
|
+
expect(result).toBe("tmp_ci_release_1_0");
|
|
20
16
|
});
|
|
21
17
|
it("handles complex branch names", () => {
|
|
22
18
|
const result = generatePreviewBranchName("feature/JIRA-123/add-user-auth");
|
|
23
|
-
expect(result).toBe("
|
|
19
|
+
expect(result).toBe("tmp_ci_feature_JIRA_123_add_user_auth");
|
|
24
20
|
});
|
|
25
21
|
it("uses 'unknown' when branch is null", () => {
|
|
26
22
|
const result = generatePreviewBranchName(null);
|
|
27
|
-
expect(result).toBe("
|
|
23
|
+
expect(result).toBe("tmp_ci_unknown");
|
|
28
24
|
});
|
|
29
|
-
it("
|
|
30
|
-
|
|
31
|
-
const
|
|
32
|
-
expect(
|
|
25
|
+
it("produces deterministic names for same branch", () => {
|
|
26
|
+
const result1 = generatePreviewBranchName("test-branch");
|
|
27
|
+
const result2 = generatePreviewBranchName("test-branch");
|
|
28
|
+
expect(result1).toBe(result2);
|
|
33
29
|
});
|
|
34
30
|
});
|
|
35
31
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preview.test.js","sourceRoot":"","sources":["../../../src/cli/commands/preview.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"preview.test.js","sourceRoot":"","sources":["../../../src/cli/commands/preview.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAEzD,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACzC,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,MAAM,GAAG,yBAAyB,CAAC,gBAAgB,CAAC,CAAC;YAC3D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,MAAM,GAAG,yBAAyB,CAAC,mBAAmB,CAAC,CAAC;YAC9D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,MAAM,GAAG,yBAAyB,CAAC,aAAa,CAAC,CAAC;YACxD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACtC,MAAM,MAAM,GAAG,yBAAyB,CAAC,gCAAgC,CAAC,CAAC;YAC3E,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,MAAM,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACtD,MAAM,OAAO,GAAG,yBAAyB,CAAC,aAAa,CAAC,CAAC;YACzD,MAAM,OAAO,GAAG,yBAAyB,CAAC,aAAa,CAAC,CAAC;YACzD,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/cli/git.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/cli/git.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/cli/git.ts"],"names":[],"mappings":"AAAA;;GAEG;AAuDH;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,IAAI,CAkBnD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAGtC;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAUnC;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,MAAM,GAAG,IAAI,CAS1C;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAO7D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,GAAG,IAAI,CAMrD"}
|
package/dist/cli/git.js
CHANGED
|
@@ -7,6 +7,10 @@ import { execSync } from "child_process";
|
|
|
7
7
|
* Returns null if not in a known CI environment
|
|
8
8
|
*/
|
|
9
9
|
function getBranchFromCIEnv() {
|
|
10
|
+
// Vercel
|
|
11
|
+
if (process.env.VERCEL_GIT_COMMIT_REF) {
|
|
12
|
+
return process.env.VERCEL_GIT_COMMIT_REF;
|
|
13
|
+
}
|
|
10
14
|
// GitHub Actions
|
|
11
15
|
// GITHUB_HEAD_REF is set for pull requests, GITHUB_REF_NAME for pushes
|
|
12
16
|
const githubBranch = process.env.GITHUB_HEAD_REF || process.env.GITHUB_REF_NAME;
|
package/dist/cli/git.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/cli/git.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/cli/git.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/client/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,EACd,MAAM,YAAY,CAAC;AAcpB;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkC;IAC9D,OAAO,CAAC,cAAc,CAAuC;IAC7D,OAAO,CAAC,eAAe,CAA8B;gBAEzC,MAAM,EAAE,YAAY;IAgBhC;;OAEG;YACW,QAAQ;IAKtB;;;OAGG;YACW,cAAc;IAwB5B;;OAEG;IACH,OAAO,CAAC,YAAY;IAWpB;;OAEG;YACW,oBAAoB;
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/client/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,EACd,MAAM,YAAY,CAAC;AAcpB;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkC;IAC9D,OAAO,CAAC,cAAc,CAAuC;IAC7D,OAAO,CAAC,eAAe,CAA8B;gBAEzC,MAAM,EAAE,YAAY;IAgBhC;;OAEG;YACW,QAAQ;IAKtB;;;OAGG;YACW,cAAc;IAwB5B;;OAEG;IACH,OAAO,CAAC,YAAY;IAWpB;;OAEG;YACW,oBAAoB;IA4DlC;;;;;;;OAOG;IACG,KAAK,CAAC,CAAC,GAAG,OAAO,EACrB,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACpC,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAU1B;;;;;;;OAOG;IACG,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5C,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,CAAC,EACR,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC;IAIxB;;;;;;;OAOG;IACG,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjD,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,CAAC,EAAE,EACX,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC;IAUxB;;;;;;OAMG;IACG,GAAG,CAAC,CAAC,GAAG,OAAO,EACnB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAU1B;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC;IAI1C,OAAO,CAAC,MAAM;IAiBd,OAAO,CAAC,eAAe;CAWxB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,cAAc,CAEjE"}
|
package/dist/client/base.js
CHANGED
|
@@ -103,6 +103,23 @@ export class TinybirdClient {
|
|
|
103
103
|
// out of the client bundle when not using dev mode
|
|
104
104
|
const { loadConfig } = await import("../cli/config.js");
|
|
105
105
|
const { getOrCreateBranch } = await import("../api/branches.js");
|
|
106
|
+
const { isPreviewEnvironment, getPreviewBranchName } = await import("./preview.js");
|
|
107
|
+
// In preview environments (Vercel preview, CI), the token was already resolved
|
|
108
|
+
// by resolveToken() in project.ts - skip branch creation to avoid conflicts
|
|
109
|
+
if (isPreviewEnvironment()) {
|
|
110
|
+
const gitBranchName = getPreviewBranchName();
|
|
111
|
+
// Preview branches use the tmp_ci_ prefix (matches what tinybird preview creates)
|
|
112
|
+
const sanitized = gitBranchName
|
|
113
|
+
? gitBranchName.replace(/[^a-zA-Z0-9_]/g, "_").replace(/_+/g, "_").replace(/^_|_$/g, "")
|
|
114
|
+
: undefined;
|
|
115
|
+
const tinybirdBranchName = sanitized ? `tmp_ci_${sanitized}` : undefined;
|
|
116
|
+
return this.buildContext({
|
|
117
|
+
token: this.config.token,
|
|
118
|
+
isBranchToken: !!tinybirdBranchName,
|
|
119
|
+
branchName: tinybirdBranchName,
|
|
120
|
+
gitBranch: gitBranchName ?? undefined,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
106
123
|
// Use configDir if provided (important for monorepo setups where process.cwd()
|
|
107
124
|
// may not be in the same directory tree as tinybird.json)
|
|
108
125
|
const config = loadConfig(this.config.configDir);
|
package/dist/client/base.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/client/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAY9D;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,OAAO,cAAc;IACR,MAAM,CAAe;IACrB,WAAW,GAAG,IAAI,GAAG,EAAuB,CAAC;IACtD,cAAc,GAAkC,IAAI,CAAC;IACrD,eAAe,GAAyB,IAAI,CAAC;IAErD,YAAY,MAAoB;QAC9B,2BAA2B;QAC3B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QAED,6CAA6C;QAC7C,IAAI,CAAC,MAAM,GAAG;YACZ,GAAG,MAAM;YACT,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;SAC3C,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,QAAQ;QACpB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5C,OAAO,OAAO,CAAC,KAAK,CAAC;IACvB,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,cAAc;QAC1B,iCAAiC;QACjC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,eAAe,CAAC;QAC9B,CAAC;QAED,+CAA+C;QAC/C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC;gBACvC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;gBACxB,aAAa,EAAE,KAAK;aACrB,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,eAAe,CAAC;QAC9B,CAAC;QAED,+CAA+C;QAC/C,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACpD,CAAC;QAED,IAAI,CAAC,eAAe,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC;QACjD,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,SAA4B;QAC/C,OAAO;YACL,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK;YACrC,aAAa,EAAE,SAAS,CAAC,aAAa;YACtC,UAAU,EAAE,SAAS,CAAC,UAAU,IAAI,IAAI;YACxC,SAAS,EAAE,SAAS,CAAC,SAAS,IAAI,IAAI;SACvC,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,oBAAoB;QAChC,IAAI,CAAC;YACH,qEAAqE;YACrE,mDAAmD;YACnD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;YACxD,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/client/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +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;
|
|
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;AAiDD;;;;;;;;;;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,CAiDlB;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAGtC"}
|
package/dist/client/preview.js
CHANGED
|
@@ -79,10 +79,13 @@ function sanitizeBranchName(branchName) {
|
|
|
79
79
|
}
|
|
80
80
|
/**
|
|
81
81
|
* Fetch branch token from Tinybird API
|
|
82
|
+
* Looks for branches with the tmp_ci_ prefix (created by tinybird preview)
|
|
82
83
|
*/
|
|
83
84
|
async function fetchBranchToken(baseUrl, workspaceToken, branchName) {
|
|
84
85
|
const sanitizedName = sanitizeBranchName(branchName);
|
|
85
|
-
|
|
86
|
+
// Look for the preview branch with tmp_ci_ prefix (matches what tinybird preview creates)
|
|
87
|
+
const previewBranchName = `tmp_ci_${sanitizedName}`;
|
|
88
|
+
const url = new URL(`/v0/environments/${encodeURIComponent(previewBranchName)}`, baseUrl);
|
|
86
89
|
url.searchParams.set("with_token", "true");
|
|
87
90
|
try {
|
|
88
91
|
const response = await tinybirdFetch(url.toString(), {
|
|
@@ -143,7 +146,8 @@ export async function resolveToken(options) {
|
|
|
143
146
|
}
|
|
144
147
|
// Branch doesn't exist - fall back to workspace token
|
|
145
148
|
// This allows the app to still work, just using main workspace
|
|
146
|
-
|
|
149
|
+
const expectedBranchName = `tmp_ci_${sanitizeBranchName(branchName)}`;
|
|
150
|
+
console.warn(`[tinybird] Preview branch "${expectedBranchName}" not found. ` +
|
|
147
151
|
`Run "tinybird preview" to create it. Falling back to workspace token.`);
|
|
148
152
|
}
|
|
149
153
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preview.js","sourceRoot":"","sources":["../../src/client/preview.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAYlD;;GAEG;AACH,IAAI,iBAAiB,GAAkB,IAAI,CAAC;AAC5C,IAAI,gBAAgB,GAAkB,IAAI,CAAC;AAE3C;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,CAAC,CAAC;IACP,6BAA6B;IAC7B,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,SAAS;QACpC,uBAAuB;QACvB,OAAO,CAAC,GAAG,CAAC,eAAe;QAC3B,6BAA6B;QAC7B,OAAO,CAAC,GAAG,CAAC,mCAAmC;QAC/C,oCAAoC;QACpC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,KAAK,MAAM,CAAC,CACjE,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB;IAClC,oBAAoB;IACpB,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;QACrC,OAAO,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IAC1C,CAAC;IAED,SAAS;IACT,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;QACtC,OAAO,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;IAC3C,CAAC;IAED,sBAAsB;IACtB,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IACrC,CAAC;IAED,wBAAwB;IACxB,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IACrC,CAAC;IAED,4BAA4B;IAC5B,IAAI,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAAE,CAAC;QACpD,OAAO,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC;IACzD,CAAC;IAED,qBAAqB;IACrB,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IACtC,CAAC;IAED,WAAW;IACX,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAC9B,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IACnC,CAAC;IAED,kBAAkB;IAClB,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC;QACvC,OAAO,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;IAC5C,CAAC;IAED,sBAAsB;IACtB,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IACtC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CAAC,UAAkB;IAC5C,OAAO,UAAU;SACd,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;SAC9B,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAC3B,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"preview.js","sourceRoot":"","sources":["../../src/client/preview.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,42 +1,37 @@
|
|
|
1
|
-
import { describe, it, expect
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
2
|
import { generatePreviewBranchName } from "./preview.js";
|
|
3
3
|
|
|
4
4
|
describe("Preview command", () => {
|
|
5
5
|
describe("generatePreviewBranchName", () => {
|
|
6
|
-
|
|
7
|
-
vi.useFakeTimers();
|
|
8
|
-
vi.setSystemTime(new Date("2024-02-06T12:00:00Z"));
|
|
9
|
-
});
|
|
10
|
-
|
|
11
|
-
it("generates name with branch and timestamp", () => {
|
|
6
|
+
it("generates name with tmp_ci prefix", () => {
|
|
12
7
|
const result = generatePreviewBranchName("feature-branch");
|
|
13
|
-
expect(result).toBe("
|
|
8
|
+
expect(result).toBe("tmp_ci_feature_branch");
|
|
14
9
|
});
|
|
15
10
|
|
|
16
11
|
it("sanitizes branch name with slashes", () => {
|
|
17
12
|
const result = generatePreviewBranchName("feature/add-login");
|
|
18
|
-
expect(result).toBe("
|
|
13
|
+
expect(result).toBe("tmp_ci_feature_add_login");
|
|
19
14
|
});
|
|
20
15
|
|
|
21
16
|
it("sanitizes branch name with dots", () => {
|
|
22
17
|
const result = generatePreviewBranchName("release.1.0");
|
|
23
|
-
expect(result).toBe("
|
|
18
|
+
expect(result).toBe("tmp_ci_release_1_0");
|
|
24
19
|
});
|
|
25
20
|
|
|
26
21
|
it("handles complex branch names", () => {
|
|
27
22
|
const result = generatePreviewBranchName("feature/JIRA-123/add-user-auth");
|
|
28
|
-
expect(result).toBe("
|
|
23
|
+
expect(result).toBe("tmp_ci_feature_JIRA_123_add_user_auth");
|
|
29
24
|
});
|
|
30
25
|
|
|
31
26
|
it("uses 'unknown' when branch is null", () => {
|
|
32
27
|
const result = generatePreviewBranchName(null);
|
|
33
|
-
expect(result).toBe("
|
|
28
|
+
expect(result).toBe("tmp_ci_unknown");
|
|
34
29
|
});
|
|
35
30
|
|
|
36
|
-
it("
|
|
37
|
-
|
|
38
|
-
const
|
|
39
|
-
expect(
|
|
31
|
+
it("produces deterministic names for same branch", () => {
|
|
32
|
+
const result1 = generatePreviewBranchName("test-branch");
|
|
33
|
+
const result2 = generatePreviewBranchName("test-branch");
|
|
34
|
+
expect(result1).toBe(result2);
|
|
40
35
|
});
|
|
41
36
|
});
|
|
42
37
|
});
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import { loadConfig, LOCAL_BASE_URL, type ResolvedConfig, type DevMode } from "../config.js";
|
|
6
6
|
import { buildFromInclude, type BuildFromIncludeResult } from "../../generator/index.js";
|
|
7
|
-
import { createBranch, type TinybirdBranch } from "../../api/branches.js";
|
|
7
|
+
import { createBranch, deleteBranch, getBranch, type TinybirdBranch } from "../../api/branches.js";
|
|
8
8
|
import { deployToMain } from "../../api/deploy.js";
|
|
9
9
|
import { buildToTinybird } from "../../api/build.js";
|
|
10
10
|
import {
|
|
@@ -61,15 +61,17 @@ export interface PreviewCommandResult {
|
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
/**
|
|
64
|
-
* Generate preview branch name with format: tmp_ci_${branch}
|
|
64
|
+
* Generate preview branch name with format: tmp_ci_${branch}
|
|
65
|
+
*
|
|
66
|
+
* Uses a deterministic name based on the git branch so that Vercel preview
|
|
67
|
+
* deployments can find the branch by name.
|
|
65
68
|
*
|
|
66
69
|
* @param gitBranch - Current git branch name (or null)
|
|
67
70
|
* @returns Preview branch name
|
|
68
71
|
*/
|
|
69
72
|
export function generatePreviewBranchName(gitBranch: string | null): string {
|
|
70
|
-
const timestamp = Math.floor(Date.now() / 1000);
|
|
71
73
|
const branchPart = gitBranch ? sanitizeBranchName(gitBranch) : "unknown";
|
|
72
|
-
return `tmp_ci_${branchPart}
|
|
74
|
+
return `tmp_ci_${branchPart}`;
|
|
73
75
|
}
|
|
74
76
|
|
|
75
77
|
/**
|
|
@@ -220,17 +222,35 @@ export async function runPreview(options: PreviewCommandOptions = {}): Promise<P
|
|
|
220
222
|
}
|
|
221
223
|
}
|
|
222
224
|
|
|
223
|
-
// Cloud mode -
|
|
225
|
+
// Cloud mode - delete existing branch if it exists, then create fresh and deploy
|
|
224
226
|
let branch: TinybirdBranch;
|
|
225
227
|
try {
|
|
228
|
+
const apiConfig = { baseUrl: config.baseUrl, token: config.token };
|
|
229
|
+
|
|
230
|
+
// Check if branch already exists and delete it for a fresh start
|
|
231
|
+
try {
|
|
232
|
+
const existingBranch = await getBranch(apiConfig, previewBranchName);
|
|
233
|
+
if (existingBranch) {
|
|
234
|
+
if (debug) {
|
|
235
|
+
console.log(`[debug] Deleting existing preview branch: ${previewBranchName}`);
|
|
236
|
+
}
|
|
237
|
+
await deleteBranch(apiConfig, previewBranchName);
|
|
238
|
+
if (debug) {
|
|
239
|
+
console.log(`[debug] Existing branch deleted`);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
} catch {
|
|
243
|
+
// Branch doesn't exist, that's fine
|
|
244
|
+
if (debug) {
|
|
245
|
+
console.log(`[debug] No existing branch to delete`);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
|
|
226
249
|
if (debug) {
|
|
227
250
|
console.log(`[debug] Creating preview branch: ${previewBranchName}`);
|
|
228
251
|
}
|
|
229
252
|
|
|
230
|
-
branch = await createBranch(
|
|
231
|
-
{ baseUrl: config.baseUrl, token: config.token },
|
|
232
|
-
previewBranchName
|
|
233
|
-
);
|
|
253
|
+
branch = await createBranch(apiConfig, previewBranchName);
|
|
234
254
|
|
|
235
255
|
if (debug) {
|
|
236
256
|
console.log(`[debug] Branch created: ${branch.name} (${branch.id})`);
|
package/src/cli/git.ts
CHANGED
|
@@ -9,6 +9,11 @@ import { execSync } from "child_process";
|
|
|
9
9
|
* Returns null if not in a known CI environment
|
|
10
10
|
*/
|
|
11
11
|
function getBranchFromCIEnv(): string | null {
|
|
12
|
+
// Vercel
|
|
13
|
+
if (process.env.VERCEL_GIT_COMMIT_REF) {
|
|
14
|
+
return process.env.VERCEL_GIT_COMMIT_REF;
|
|
15
|
+
}
|
|
16
|
+
|
|
12
17
|
// GitHub Actions
|
|
13
18
|
// GITHUB_HEAD_REF is set for pull requests, GITHUB_REF_NAME for pushes
|
|
14
19
|
const githubBranch = process.env.GITHUB_HEAD_REF || process.env.GITHUB_REF_NAME;
|
package/src/client/base.ts
CHANGED
|
@@ -132,6 +132,24 @@ export class TinybirdClient {
|
|
|
132
132
|
// out of the client bundle when not using dev mode
|
|
133
133
|
const { loadConfig } = await import("../cli/config.js");
|
|
134
134
|
const { getOrCreateBranch } = await import("../api/branches.js");
|
|
135
|
+
const { isPreviewEnvironment, getPreviewBranchName } = await import("./preview.js");
|
|
136
|
+
|
|
137
|
+
// In preview environments (Vercel preview, CI), the token was already resolved
|
|
138
|
+
// by resolveToken() in project.ts - skip branch creation to avoid conflicts
|
|
139
|
+
if (isPreviewEnvironment()) {
|
|
140
|
+
const gitBranchName = getPreviewBranchName();
|
|
141
|
+
// Preview branches use the tmp_ci_ prefix (matches what tinybird preview creates)
|
|
142
|
+
const sanitized = gitBranchName
|
|
143
|
+
? gitBranchName.replace(/[^a-zA-Z0-9_]/g, "_").replace(/_+/g, "_").replace(/^_|_$/g, "")
|
|
144
|
+
: undefined;
|
|
145
|
+
const tinybirdBranchName = sanitized ? `tmp_ci_${sanitized}` : undefined;
|
|
146
|
+
return this.buildContext({
|
|
147
|
+
token: this.config.token,
|
|
148
|
+
isBranchToken: !!tinybirdBranchName,
|
|
149
|
+
branchName: tinybirdBranchName,
|
|
150
|
+
gitBranch: gitBranchName ?? undefined,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
135
153
|
|
|
136
154
|
// Use configDir if provided (important for monorepo setups where process.cwd()
|
|
137
155
|
// may not be in the same directory tree as tinybird.json)
|
package/src/client/preview.ts
CHANGED
|
@@ -105,6 +105,7 @@ function sanitizeBranchName(branchName: string): string {
|
|
|
105
105
|
|
|
106
106
|
/**
|
|
107
107
|
* Fetch branch token from Tinybird API
|
|
108
|
+
* Looks for branches with the tmp_ci_ prefix (created by tinybird preview)
|
|
108
109
|
*/
|
|
109
110
|
async function fetchBranchToken(
|
|
110
111
|
baseUrl: string,
|
|
@@ -112,7 +113,9 @@ async function fetchBranchToken(
|
|
|
112
113
|
branchName: string
|
|
113
114
|
): Promise<string | null> {
|
|
114
115
|
const sanitizedName = sanitizeBranchName(branchName);
|
|
115
|
-
|
|
116
|
+
// Look for the preview branch with tmp_ci_ prefix (matches what tinybird preview creates)
|
|
117
|
+
const previewBranchName = `tmp_ci_${sanitizedName}`;
|
|
118
|
+
const url = new URL(`/v0/environments/${encodeURIComponent(previewBranchName)}`, baseUrl);
|
|
116
119
|
url.searchParams.set("with_token", "true");
|
|
117
120
|
|
|
118
121
|
try {
|
|
@@ -189,8 +192,9 @@ export async function resolveToken(options?: {
|
|
|
189
192
|
|
|
190
193
|
// Branch doesn't exist - fall back to workspace token
|
|
191
194
|
// This allows the app to still work, just using main workspace
|
|
195
|
+
const expectedBranchName = `tmp_ci_${sanitizeBranchName(branchName)}`;
|
|
192
196
|
console.warn(
|
|
193
|
-
`[tinybird] Preview branch "${
|
|
197
|
+
`[tinybird] Preview branch "${expectedBranchName}" not found. ` +
|
|
194
198
|
`Run "tinybird preview" to create it. Falling back to workspace token.`
|
|
195
199
|
);
|
|
196
200
|
}
|