@tinybirdco/sdk 0.0.34 → 0.0.36
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/regions.d.ts +33 -0
- package/dist/api/regions.d.ts.map +1 -0
- package/dist/api/regions.js +52 -0
- package/dist/api/regions.js.map +1 -0
- package/dist/api/regions.test.d.ts +2 -0
- package/dist/api/regions.test.d.ts.map +1 -0
- package/dist/api/regions.test.js +69 -0
- package/dist/api/regions.test.js.map +1 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +43 -8
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/init.test.js +7 -0
- package/dist/cli/commands/init.test.js.map +1 -1
- package/dist/cli/commands/login.d.ts.map +1 -1
- package/dist/cli/commands/login.js +13 -3
- package/dist/cli/commands/login.js.map +1 -1
- package/dist/cli/commands/login.test.js +12 -1
- package/dist/cli/commands/login.test.js.map +1 -1
- package/dist/cli/index.js +9 -35
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/region-selector.d.ts +39 -0
- package/dist/cli/region-selector.d.ts.map +1 -0
- package/dist/cli/region-selector.js +118 -0
- package/dist/cli/region-selector.js.map +1 -0
- package/dist/cli/region-selector.test.d.ts +2 -0
- package/dist/cli/region-selector.test.d.ts.map +1 -0
- package/dist/cli/region-selector.test.js +176 -0
- package/dist/cli/region-selector.test.js.map +1 -0
- package/dist/cli/utils/package-manager.d.ts +1 -0
- package/dist/cli/utils/package-manager.d.ts.map +1 -1
- package/dist/cli/utils/package-manager.js +13 -0
- package/dist/cli/utils/package-manager.js.map +1 -1
- package/dist/cli/utils/package-manager.test.js +15 -1
- package/dist/cli/utils/package-manager.test.js.map +1 -1
- package/package.json +1 -1
- package/src/api/regions.test.ts +89 -0
- package/src/api/regions.ts +75 -0
- package/src/cli/commands/init.test.ts +8 -0
- package/src/cli/commands/init.ts +78 -15
- package/src/cli/commands/login.test.ts +13 -1
- package/src/cli/commands/login.ts +14 -3
- package/src/cli/index.ts +25 -43
- package/src/cli/region-selector.test.ts +227 -0
- package/src/cli/region-selector.ts +151 -0
- package/src/cli/utils/package-manager.test.ts +19 -0
- package/src/cli/utils/package-manager.ts +14 -0
|
@@ -2,7 +2,7 @@ import { describe, it, expect, beforeEach, afterEach } from "vitest";
|
|
|
2
2
|
import * as fs from "fs";
|
|
3
3
|
import * as path from "path";
|
|
4
4
|
import * as os from "os";
|
|
5
|
-
import { detectPackageManager, detectPackageManagerInstallCmd, detectPackageManagerRunCmd, getPackageManagerInstallCmd, getPackageManagerRunCmd, hasTinybirdSdkDependency, } from "./package-manager.js";
|
|
5
|
+
import { detectPackageManager, detectPackageManagerInstallCmd, detectPackageManagerRunCmd, getPackageManagerAddCmd, getPackageManagerInstallCmd, getPackageManagerRunCmd, hasTinybirdSdkDependency, } from "./package-manager.js";
|
|
6
6
|
let tempDir;
|
|
7
7
|
beforeEach(() => {
|
|
8
8
|
tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "pkg-manager-test-"));
|
|
@@ -139,6 +139,20 @@ describe("getPackageManagerInstallCmd", () => {
|
|
|
139
139
|
expect(getPackageManagerInstallCmd("bun")).toBe("bun install");
|
|
140
140
|
});
|
|
141
141
|
});
|
|
142
|
+
describe("getPackageManagerAddCmd", () => {
|
|
143
|
+
it("maps npm to npm install", () => {
|
|
144
|
+
expect(getPackageManagerAddCmd("npm")).toBe("npm install");
|
|
145
|
+
});
|
|
146
|
+
it("maps pnpm to pnpm add", () => {
|
|
147
|
+
expect(getPackageManagerAddCmd("pnpm")).toBe("pnpm add");
|
|
148
|
+
});
|
|
149
|
+
it("maps yarn to yarn add", () => {
|
|
150
|
+
expect(getPackageManagerAddCmd("yarn")).toBe("yarn add");
|
|
151
|
+
});
|
|
152
|
+
it("maps bun to bun add", () => {
|
|
153
|
+
expect(getPackageManagerAddCmd("bun")).toBe("bun add");
|
|
154
|
+
});
|
|
155
|
+
});
|
|
142
156
|
describe("detectPackageManagerInstallCmd", () => {
|
|
143
157
|
it("detects install command based on lockfile", () => {
|
|
144
158
|
fs.writeFileSync(path.join(tempDir, "yarn.lock"), "");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-manager.test.js","sourceRoot":"","sources":["../../../src/cli/utils/package-manager.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"package-manager.test.js","sourceRoot":"","sources":["../../../src/cli/utils/package-manager.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach } from "vitest";
|
|
2
|
+
import { fetchRegions, RegionsApiError } from "./regions.js";
|
|
3
|
+
|
|
4
|
+
// Mock the fetcher module
|
|
5
|
+
vi.mock("./fetcher.js", () => ({
|
|
6
|
+
tinybirdFetch: vi.fn(),
|
|
7
|
+
}));
|
|
8
|
+
|
|
9
|
+
import { tinybirdFetch } from "./fetcher.js";
|
|
10
|
+
|
|
11
|
+
const mockedFetch = vi.mocked(tinybirdFetch);
|
|
12
|
+
|
|
13
|
+
describe("fetchRegions", () => {
|
|
14
|
+
beforeEach(() => {
|
|
15
|
+
vi.clearAllMocks();
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it("returns regions from API", async () => {
|
|
19
|
+
mockedFetch.mockResolvedValue({
|
|
20
|
+
ok: true,
|
|
21
|
+
json: () =>
|
|
22
|
+
Promise.resolve({
|
|
23
|
+
regions: [
|
|
24
|
+
{
|
|
25
|
+
name: "EU (GCP)",
|
|
26
|
+
api_host: "https://api.europe-west2.gcp.tinybird.co",
|
|
27
|
+
provider: "gcp",
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: "US East (AWS)",
|
|
31
|
+
api_host: "https://api.us-east.aws.tinybird.co",
|
|
32
|
+
provider: "aws",
|
|
33
|
+
},
|
|
34
|
+
],
|
|
35
|
+
}),
|
|
36
|
+
} as Response);
|
|
37
|
+
|
|
38
|
+
const regions = await fetchRegions();
|
|
39
|
+
|
|
40
|
+
expect(regions).toHaveLength(2);
|
|
41
|
+
expect(regions[0].name).toBe("EU (GCP)");
|
|
42
|
+
expect(regions[0].api_host).toBe("https://api.europe-west2.gcp.tinybird.co");
|
|
43
|
+
expect(regions[1].provider).toBe("aws");
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
it("calls the correct endpoint", async () => {
|
|
47
|
+
mockedFetch.mockResolvedValue({
|
|
48
|
+
ok: true,
|
|
49
|
+
json: () => Promise.resolve({ regions: [] }),
|
|
50
|
+
} as Response);
|
|
51
|
+
|
|
52
|
+
await fetchRegions();
|
|
53
|
+
|
|
54
|
+
expect(mockedFetch).toHaveBeenCalledWith(
|
|
55
|
+
"https://api.tinybird.co/v0/regions",
|
|
56
|
+
{ method: "GET" }
|
|
57
|
+
);
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
it("throws RegionsApiError on non-ok response", async () => {
|
|
61
|
+
mockedFetch.mockResolvedValue({
|
|
62
|
+
ok: false,
|
|
63
|
+
status: 500,
|
|
64
|
+
statusText: "Internal Server Error",
|
|
65
|
+
text: () => Promise.resolve("Server error"),
|
|
66
|
+
} as Response);
|
|
67
|
+
|
|
68
|
+
await expect(fetchRegions()).rejects.toThrow(RegionsApiError);
|
|
69
|
+
await expect(fetchRegions()).rejects.toThrow("Failed to fetch regions: 500");
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
it("throws RegionsApiError on network error", async () => {
|
|
73
|
+
mockedFetch.mockRejectedValue(new Error("Network error"));
|
|
74
|
+
|
|
75
|
+
await expect(fetchRegions()).rejects.toThrow(RegionsApiError);
|
|
76
|
+
await expect(fetchRegions()).rejects.toThrow("Network error");
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
it("returns empty array when API returns empty regions", async () => {
|
|
80
|
+
mockedFetch.mockResolvedValue({
|
|
81
|
+
ok: true,
|
|
82
|
+
json: () => Promise.resolve({ regions: [] }),
|
|
83
|
+
} as Response);
|
|
84
|
+
|
|
85
|
+
const regions = await fetchRegions();
|
|
86
|
+
|
|
87
|
+
expect(regions).toEqual([]);
|
|
88
|
+
});
|
|
89
|
+
});
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tinybird Regions API client
|
|
3
|
+
*
|
|
4
|
+
* Fetches available regions from the Tinybird API
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { tinybirdFetch } from "./fetcher.js";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Default API host used to fetch regions
|
|
11
|
+
* (regions endpoint is available from any host)
|
|
12
|
+
*/
|
|
13
|
+
const DEFAULT_HOST = "https://api.tinybird.co";
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Region information from Tinybird API
|
|
17
|
+
*/
|
|
18
|
+
export interface TinybirdRegion {
|
|
19
|
+
/** Region name (e.g., "EU (GCP)") */
|
|
20
|
+
name: string;
|
|
21
|
+
/** API host URL (e.g., "https://api.europe-west2.gcp.tinybird.co") */
|
|
22
|
+
api_host: string;
|
|
23
|
+
/** Cloud provider (e.g., "gcp", "aws") */
|
|
24
|
+
provider: string;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Error thrown by regions API operations
|
|
29
|
+
*/
|
|
30
|
+
export class RegionsApiError extends Error {
|
|
31
|
+
constructor(
|
|
32
|
+
message: string,
|
|
33
|
+
public readonly status?: number,
|
|
34
|
+
public readonly body?: unknown
|
|
35
|
+
) {
|
|
36
|
+
super(message);
|
|
37
|
+
this.name = "RegionsApiError";
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Fetch available Tinybird regions
|
|
43
|
+
*
|
|
44
|
+
* Note: This endpoint doesn't require authentication.
|
|
45
|
+
*
|
|
46
|
+
* @returns Array of available regions
|
|
47
|
+
*/
|
|
48
|
+
export async function fetchRegions(): Promise<TinybirdRegion[]> {
|
|
49
|
+
const url = new URL("/v0/regions", DEFAULT_HOST);
|
|
50
|
+
|
|
51
|
+
try {
|
|
52
|
+
const response = await tinybirdFetch(url.toString(), {
|
|
53
|
+
method: "GET",
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
if (!response.ok) {
|
|
57
|
+
const body = await response.text();
|
|
58
|
+
throw new RegionsApiError(
|
|
59
|
+
`Failed to fetch regions: ${response.status} ${response.statusText}`,
|
|
60
|
+
response.status,
|
|
61
|
+
body
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
const data = (await response.json()) as { regions: TinybirdRegion[] };
|
|
66
|
+
return data.regions;
|
|
67
|
+
} catch (error) {
|
|
68
|
+
if (error instanceof RegionsApiError) {
|
|
69
|
+
throw error;
|
|
70
|
+
}
|
|
71
|
+
throw new RegionsApiError(
|
|
72
|
+
`Failed to fetch regions: ${(error as Error).message}`
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
@@ -9,6 +9,14 @@ vi.mock("../auth.js", () => ({
|
|
|
9
9
|
browserLogin: vi.fn().mockResolvedValue({ success: false }),
|
|
10
10
|
}));
|
|
11
11
|
|
|
12
|
+
// Mock the region-selector module to avoid interactive prompts
|
|
13
|
+
vi.mock("../region-selector.js", () => ({
|
|
14
|
+
selectRegion: vi.fn().mockResolvedValue({
|
|
15
|
+
success: true,
|
|
16
|
+
apiHost: "https://api.tinybird.co",
|
|
17
|
+
}),
|
|
18
|
+
}));
|
|
19
|
+
|
|
12
20
|
describe("Init Command", () => {
|
|
13
21
|
let tempDir: string;
|
|
14
22
|
|
package/src/cli/commands/init.ts
CHANGED
|
@@ -17,9 +17,17 @@ import {
|
|
|
17
17
|
} from "../config.js";
|
|
18
18
|
import { browserLogin } from "../auth.js";
|
|
19
19
|
import { saveTinybirdToken } from "../env.js";
|
|
20
|
+
import { selectRegion } from "../region-selector.js";
|
|
20
21
|
import { getGitRoot } from "../git.js";
|
|
21
22
|
import { fetchAllResources } from "../../api/resources.js";
|
|
22
23
|
import { generateCombinedFile } from "../../codegen/index.js";
|
|
24
|
+
import { execSync } from "child_process";
|
|
25
|
+
import { setTimeout as sleep } from "node:timers/promises";
|
|
26
|
+
import {
|
|
27
|
+
detectPackageManager,
|
|
28
|
+
getPackageManagerAddCmd,
|
|
29
|
+
hasTinybirdSdkDependency,
|
|
30
|
+
} from "../utils/package-manager.js";
|
|
23
31
|
|
|
24
32
|
/**
|
|
25
33
|
* Default starter content for tinybird.ts (single file with everything)
|
|
@@ -619,12 +627,16 @@ export async function runInit(options: InitOptions = {}): Promise<InitResult> {
|
|
|
619
627
|
success: false,
|
|
620
628
|
created,
|
|
621
629
|
skipped,
|
|
622
|
-
error: `Failed to update ${configFileName}: ${
|
|
630
|
+
error: `Failed to update ${configFileName}: ${
|
|
631
|
+
(error as Error).message
|
|
632
|
+
}`,
|
|
623
633
|
};
|
|
624
634
|
}
|
|
625
635
|
} else {
|
|
626
636
|
// JS config file exists - skip and let user update manually
|
|
627
|
-
skipped.push(
|
|
637
|
+
skipped.push(
|
|
638
|
+
`${configFileName} (JS config files must be updated manually)`
|
|
639
|
+
);
|
|
628
640
|
}
|
|
629
641
|
} else {
|
|
630
642
|
// Create new config file with JSON format
|
|
@@ -641,7 +653,9 @@ export async function runInit(options: InitOptions = {}): Promise<InitResult> {
|
|
|
641
653
|
success: false,
|
|
642
654
|
created,
|
|
643
655
|
skipped,
|
|
644
|
-
error: `Failed to create tinybird.config.json: ${
|
|
656
|
+
error: `Failed to create tinybird.config.json: ${
|
|
657
|
+
(error as Error).message
|
|
658
|
+
}`,
|
|
645
659
|
};
|
|
646
660
|
}
|
|
647
661
|
}
|
|
@@ -724,6 +738,27 @@ export async function runInit(options: InitOptions = {}): Promise<InitResult> {
|
|
|
724
738
|
}
|
|
725
739
|
}
|
|
726
740
|
|
|
741
|
+
// Install @tinybirdco/sdk if not already installed
|
|
742
|
+
if (!hasTinybirdSdkDependency(cwd)) {
|
|
743
|
+
const s = p.spinner();
|
|
744
|
+
s.start("Installing dependencies");
|
|
745
|
+
const packageManager = detectPackageManager(cwd);
|
|
746
|
+
const addCmd = getPackageManagerAddCmd(packageManager);
|
|
747
|
+
try {
|
|
748
|
+
execSync(`${addCmd} @tinybirdco/sdk`, { cwd, stdio: "pipe" });
|
|
749
|
+
await sleep(1000);
|
|
750
|
+
s.stop("Installed dependencies");
|
|
751
|
+
created.push("@tinybirdco/sdk");
|
|
752
|
+
} catch (error) {
|
|
753
|
+
s.stop("Failed to install dependencies");
|
|
754
|
+
console.error(
|
|
755
|
+
`Warning: Failed to install @tinybirdco/sdk: ${
|
|
756
|
+
(error as Error).message
|
|
757
|
+
}`
|
|
758
|
+
);
|
|
759
|
+
}
|
|
760
|
+
}
|
|
761
|
+
|
|
727
762
|
// Use git root for workflow files, fallback to cwd if not in a git repo
|
|
728
763
|
const projectRoot = getGitRoot() ?? cwd;
|
|
729
764
|
const githubWorkflowsDir = path.join(projectRoot, ".github", "workflows");
|
|
@@ -761,7 +796,10 @@ export async function runInit(options: InitOptions = {}): Promise<InitResult> {
|
|
|
761
796
|
skipped.push(".github/workflows/tinybird-ci.yaml");
|
|
762
797
|
} else {
|
|
763
798
|
try {
|
|
764
|
-
fs.writeFileSync(
|
|
799
|
+
fs.writeFileSync(
|
|
800
|
+
githubCiPath,
|
|
801
|
+
generateGithubCiWorkflow(workingDirectory)
|
|
802
|
+
);
|
|
765
803
|
created.push(".github/workflows/tinybird-ci.yaml");
|
|
766
804
|
ciWorkflowCreated = true;
|
|
767
805
|
} catch (error) {
|
|
@@ -782,7 +820,10 @@ export async function runInit(options: InitOptions = {}): Promise<InitResult> {
|
|
|
782
820
|
skipped.push(".github/workflows/tinybird-cd.yaml");
|
|
783
821
|
} else {
|
|
784
822
|
try {
|
|
785
|
-
fs.writeFileSync(
|
|
823
|
+
fs.writeFileSync(
|
|
824
|
+
githubCdPath,
|
|
825
|
+
generateGithubCdWorkflow(workingDirectory)
|
|
826
|
+
);
|
|
786
827
|
created.push(".github/workflows/tinybird-cd.yaml");
|
|
787
828
|
cdWorkflowCreated = true;
|
|
788
829
|
} catch (error) {
|
|
@@ -805,7 +846,10 @@ export async function runInit(options: InitOptions = {}): Promise<InitResult> {
|
|
|
805
846
|
skipped.push(".gitlab/tinybird-ci.yaml");
|
|
806
847
|
} else {
|
|
807
848
|
try {
|
|
808
|
-
fs.writeFileSync(
|
|
849
|
+
fs.writeFileSync(
|
|
850
|
+
gitlabCiPath,
|
|
851
|
+
generateGitlabCiWorkflow(workingDirectory)
|
|
852
|
+
);
|
|
809
853
|
created.push(".gitlab/tinybird-ci.yaml");
|
|
810
854
|
ciWorkflowCreated = true;
|
|
811
855
|
} catch (error) {
|
|
@@ -826,7 +870,10 @@ export async function runInit(options: InitOptions = {}): Promise<InitResult> {
|
|
|
826
870
|
skipped.push(".gitlab/tinybird-cd.yaml");
|
|
827
871
|
} else {
|
|
828
872
|
try {
|
|
829
|
-
fs.writeFileSync(
|
|
873
|
+
fs.writeFileSync(
|
|
874
|
+
gitlabCdPath,
|
|
875
|
+
generateGitlabCdWorkflow(workingDirectory)
|
|
876
|
+
);
|
|
830
877
|
created.push(".gitlab/tinybird-cd.yaml");
|
|
831
878
|
cdWorkflowCreated = true;
|
|
832
879
|
} catch (error) {
|
|
@@ -847,7 +894,25 @@ export async function runInit(options: InitOptions = {}): Promise<InitResult> {
|
|
|
847
894
|
if (!skipLogin && !hasValidToken(cwd)) {
|
|
848
895
|
console.log("\nNo authentication found. Starting login flow...\n");
|
|
849
896
|
|
|
850
|
-
|
|
897
|
+
// Select region before login (init creates fresh config, so always prompt)
|
|
898
|
+
const regionResult = await selectRegion();
|
|
899
|
+
if (!regionResult.success || !regionResult.apiHost) {
|
|
900
|
+
return {
|
|
901
|
+
success: true,
|
|
902
|
+
created,
|
|
903
|
+
skipped,
|
|
904
|
+
loggedIn: false,
|
|
905
|
+
devMode,
|
|
906
|
+
clientPath: relativeTinybirdDir,
|
|
907
|
+
existingDatafiles:
|
|
908
|
+
existingDatafiles.length > 0 ? existingDatafiles : undefined,
|
|
909
|
+
ciWorkflowCreated,
|
|
910
|
+
cdWorkflowCreated,
|
|
911
|
+
workflowProvider,
|
|
912
|
+
};
|
|
913
|
+
}
|
|
914
|
+
|
|
915
|
+
const authResult = await browserLogin({ apiHost: regionResult.apiHost });
|
|
851
916
|
|
|
852
917
|
if (authResult.success && authResult.token) {
|
|
853
918
|
// Save token to .env.local
|
|
@@ -857,13 +922,11 @@ export async function runInit(options: InitOptions = {}): Promise<InitResult> {
|
|
|
857
922
|
created.push(".env.local");
|
|
858
923
|
}
|
|
859
924
|
|
|
860
|
-
//
|
|
861
|
-
const baseUrl = authResult.baseUrl ??
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
updateConfig(currentConfigPath, { baseUrl });
|
|
866
|
-
}
|
|
925
|
+
// Update config with selected region's baseUrl
|
|
926
|
+
const baseUrl = authResult.baseUrl ?? regionResult.apiHost;
|
|
927
|
+
const currentConfigPath = findExistingConfigPath(cwd);
|
|
928
|
+
if (currentConfigPath && currentConfigPath.endsWith(".json")) {
|
|
929
|
+
updateConfig(currentConfigPath, { baseUrl });
|
|
867
930
|
}
|
|
868
931
|
|
|
869
932
|
// Generate TypeScript from existing Tinybird resources if requested
|
|
@@ -9,10 +9,17 @@ vi.mock("../auth.js", () => ({
|
|
|
9
9
|
browserLogin: vi.fn(),
|
|
10
10
|
}));
|
|
11
11
|
|
|
12
|
-
//
|
|
12
|
+
// Mock the region-selector module to avoid interactive prompts
|
|
13
|
+
vi.mock("../region-selector.js", () => ({
|
|
14
|
+
getApiHostWithRegionSelection: vi.fn(),
|
|
15
|
+
}));
|
|
16
|
+
|
|
17
|
+
// Import the mocked functions
|
|
13
18
|
import { browserLogin } from "../auth.js";
|
|
19
|
+
import { getApiHostWithRegionSelection } from "../region-selector.js";
|
|
14
20
|
|
|
15
21
|
const mockedBrowserLogin = vi.mocked(browserLogin);
|
|
22
|
+
const mockedGetApiHost = vi.mocked(getApiHostWithRegionSelection);
|
|
16
23
|
|
|
17
24
|
describe("Login Command", () => {
|
|
18
25
|
let tempDir: string;
|
|
@@ -20,6 +27,11 @@ describe("Login Command", () => {
|
|
|
20
27
|
beforeEach(() => {
|
|
21
28
|
tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "tinybird-login-test-"));
|
|
22
29
|
vi.clearAllMocks();
|
|
30
|
+
// Default mock for region selection - returns a default apiHost
|
|
31
|
+
mockedGetApiHost.mockResolvedValue({
|
|
32
|
+
apiHost: "https://api.tinybird.co",
|
|
33
|
+
fromConfig: false,
|
|
34
|
+
});
|
|
23
35
|
});
|
|
24
36
|
|
|
25
37
|
afterEach(() => {
|
|
@@ -6,6 +6,7 @@ import * as path from "path";
|
|
|
6
6
|
import { browserLogin, type LoginOptions, type AuthResult } from "../auth.js";
|
|
7
7
|
import { updateConfig, findConfigFile } from "../config.js";
|
|
8
8
|
import { saveTinybirdToken } from "../env.js";
|
|
9
|
+
import { getApiHostWithRegionSelection } from "../region-selector.js";
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* Login command options
|
|
@@ -57,11 +58,21 @@ export async function runLogin(options: RunLoginOptions = {}): Promise<LoginResu
|
|
|
57
58
|
// Get the directory containing the config file for .env.local
|
|
58
59
|
const configDir = path.dirname(configPath);
|
|
59
60
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
// Determine API host: option > config baseUrl > region selection
|
|
62
|
+
let apiHost = options.apiHost;
|
|
63
|
+
if (!apiHost) {
|
|
64
|
+
const regionResult = await getApiHostWithRegionSelection(configPath);
|
|
65
|
+
if (!regionResult) {
|
|
66
|
+
return {
|
|
67
|
+
success: false,
|
|
68
|
+
error: "Region selection cancelled",
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
apiHost = regionResult.apiHost;
|
|
63
72
|
}
|
|
64
73
|
|
|
74
|
+
const loginOptions: LoginOptions = { apiHost };
|
|
75
|
+
|
|
65
76
|
// Perform browser login
|
|
66
77
|
const authResult: AuthResult = await browserLogin(loginOptions);
|
|
67
78
|
|
package/src/cli/index.ts
CHANGED
|
@@ -28,12 +28,11 @@ import {
|
|
|
28
28
|
} from "./commands/branch.js";
|
|
29
29
|
import { runClear } from "./commands/clear.js";
|
|
30
30
|
import { runInfo } from "./commands/info.js";
|
|
31
|
-
import { runOpenDashboard, type Environment } from "./commands/open-dashboard.js";
|
|
32
31
|
import {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
} from "./utils/package-manager.js";
|
|
32
|
+
runOpenDashboard,
|
|
33
|
+
type Environment,
|
|
34
|
+
} from "./commands/open-dashboard.js";
|
|
35
|
+
import { detectPackageManagerRunCmd } from "./utils/package-manager.js";
|
|
37
36
|
import type { DevMode } from "./config.js";
|
|
38
37
|
import { output, type ResourceChange } from "./output.js";
|
|
39
38
|
|
|
@@ -89,8 +88,6 @@ function createCli(): Command {
|
|
|
89
88
|
? dirname(join(process.cwd(), clientPath))
|
|
90
89
|
: process.cwd();
|
|
91
90
|
const runCmd = detectPackageManagerRunCmd(sdkCheckDir);
|
|
92
|
-
const installCmd = detectPackageManagerInstallCmd(sdkCheckDir);
|
|
93
|
-
const needsInstallStep = !hasTinybirdSdkDependency(sdkCheckDir);
|
|
94
91
|
|
|
95
92
|
if (result.loggedIn) {
|
|
96
93
|
console.log(`\nLogged in successfully!`);
|
|
@@ -107,42 +104,18 @@ function createCli(): Command {
|
|
|
107
104
|
);
|
|
108
105
|
}
|
|
109
106
|
console.log("\nNext steps:");
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
? `Install dependencies with '${installCmd}'`
|
|
113
|
-
: undefined,
|
|
114
|
-
`Edit your schema in ${clientPath}`,
|
|
115
|
-
`Run '${runCmd} tinybird:dev' to start development`,
|
|
116
|
-
].filter(Boolean);
|
|
117
|
-
steps.forEach((step, index) => {
|
|
118
|
-
console.log(` ${index + 1}. ${step}`);
|
|
119
|
-
});
|
|
107
|
+
console.log(` 1. Edit your schema in ${clientPath}`);
|
|
108
|
+
console.log(` 2. Run '${runCmd} tinybird:build' to start development`);
|
|
120
109
|
} else if (result.loggedIn === false) {
|
|
121
110
|
console.log("\nLogin was skipped or failed.");
|
|
122
111
|
console.log("\nNext steps:");
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
? `Install dependencies with '${installCmd}'`
|
|
127
|
-
: undefined,
|
|
128
|
-
`Edit your schema in ${clientPath}`,
|
|
129
|
-
`Run '${runCmd} tinybird:dev' to start development`,
|
|
130
|
-
].filter(Boolean);
|
|
131
|
-
steps.forEach((step, index) => {
|
|
132
|
-
console.log(` ${index + 1}. ${step}`);
|
|
133
|
-
});
|
|
112
|
+
console.log(` 1. Run 'npx tinybird login' to authenticate`);
|
|
113
|
+
console.log(` 2. Edit your schema in ${clientPath}`);
|
|
114
|
+
console.log(` 3. Run '${runCmd} tinybird:build' to start development`);
|
|
134
115
|
} else {
|
|
135
116
|
console.log("\nNext steps:");
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
? `Install dependencies with '${installCmd}'`
|
|
139
|
-
: undefined,
|
|
140
|
-
`Edit your schema in ${clientPath}`,
|
|
141
|
-
`Run '${runCmd} tinybird:dev' to start development`,
|
|
142
|
-
].filter(Boolean);
|
|
143
|
-
steps.forEach((step, index) => {
|
|
144
|
-
console.log(` ${index + 1}. ${step}`);
|
|
145
|
-
});
|
|
117
|
+
console.log(` 1. Edit your schema in ${clientPath}`);
|
|
118
|
+
console.log(` 2. Run '${runCmd} tinybird:build' to start development`);
|
|
146
119
|
}
|
|
147
120
|
});
|
|
148
121
|
|
|
@@ -218,7 +191,9 @@ function createCli(): Command {
|
|
|
218
191
|
const validEnvs = ["cloud", "local", "branch"];
|
|
219
192
|
if (options.env && !validEnvs.includes(options.env)) {
|
|
220
193
|
console.error(
|
|
221
|
-
`Error: Invalid environment '${
|
|
194
|
+
`Error: Invalid environment '${
|
|
195
|
+
options.env
|
|
196
|
+
}'. Use one of: ${validEnvs.join(", ")}`
|
|
222
197
|
);
|
|
223
198
|
process.exit(1);
|
|
224
199
|
}
|
|
@@ -447,7 +422,9 @@ function createCli(): Command {
|
|
|
447
422
|
// Preview command
|
|
448
423
|
program
|
|
449
424
|
.command("preview")
|
|
450
|
-
.description(
|
|
425
|
+
.description(
|
|
426
|
+
"Create a preview branch and deploy resources (for CI/testing)"
|
|
427
|
+
)
|
|
451
428
|
.option("--dry-run", "Generate without creating branch or deploying")
|
|
452
429
|
.option("--check", "Validate deploy with Tinybird API without applying")
|
|
453
430
|
.option("--debug", "Show debug output including API requests/responses")
|
|
@@ -513,7 +490,9 @@ function createCli(): Command {
|
|
|
513
490
|
|
|
514
491
|
if (result.build) {
|
|
515
492
|
console.log(
|
|
516
|
-
pc.green(
|
|
493
|
+
pc.green(
|
|
494
|
+
`✓ Generated ${result.build.datasourceCount} datasource(s), ${result.build.pipeCount} pipe(s)`
|
|
495
|
+
)
|
|
517
496
|
);
|
|
518
497
|
}
|
|
519
498
|
|
|
@@ -643,7 +622,9 @@ function createCli(): Command {
|
|
|
643
622
|
if (issue.type === "error") {
|
|
644
623
|
output.error(` ERROR [${issue.pipeName}]: ${issue.message}`);
|
|
645
624
|
} else {
|
|
646
|
-
output.warning(
|
|
625
|
+
output.warning(
|
|
626
|
+
` WARN [${issue.pipeName}]: ${issue.message}`
|
|
627
|
+
);
|
|
647
628
|
}
|
|
648
629
|
}
|
|
649
630
|
}
|
|
@@ -773,7 +754,8 @@ function createCli(): Command {
|
|
|
773
754
|
devModeOverride = "branch";
|
|
774
755
|
}
|
|
775
756
|
|
|
776
|
-
const modeLabel =
|
|
757
|
+
const modeLabel =
|
|
758
|
+
devModeOverride === "local" ? "local workspace" : "branch";
|
|
777
759
|
|
|
778
760
|
// Confirmation prompt unless --yes is passed
|
|
779
761
|
if (!options.yes) {
|