@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.
Files changed (46) hide show
  1. package/dist/api/regions.d.ts +33 -0
  2. package/dist/api/regions.d.ts.map +1 -0
  3. package/dist/api/regions.js +52 -0
  4. package/dist/api/regions.js.map +1 -0
  5. package/dist/api/regions.test.d.ts +2 -0
  6. package/dist/api/regions.test.d.ts.map +1 -0
  7. package/dist/api/regions.test.js +69 -0
  8. package/dist/api/regions.test.js.map +1 -0
  9. package/dist/cli/commands/init.d.ts.map +1 -1
  10. package/dist/cli/commands/init.js +43 -8
  11. package/dist/cli/commands/init.js.map +1 -1
  12. package/dist/cli/commands/init.test.js +7 -0
  13. package/dist/cli/commands/init.test.js.map +1 -1
  14. package/dist/cli/commands/login.d.ts.map +1 -1
  15. package/dist/cli/commands/login.js +13 -3
  16. package/dist/cli/commands/login.js.map +1 -1
  17. package/dist/cli/commands/login.test.js +12 -1
  18. package/dist/cli/commands/login.test.js.map +1 -1
  19. package/dist/cli/index.js +9 -35
  20. package/dist/cli/index.js.map +1 -1
  21. package/dist/cli/region-selector.d.ts +39 -0
  22. package/dist/cli/region-selector.d.ts.map +1 -0
  23. package/dist/cli/region-selector.js +118 -0
  24. package/dist/cli/region-selector.js.map +1 -0
  25. package/dist/cli/region-selector.test.d.ts +2 -0
  26. package/dist/cli/region-selector.test.d.ts.map +1 -0
  27. package/dist/cli/region-selector.test.js +176 -0
  28. package/dist/cli/region-selector.test.js.map +1 -0
  29. package/dist/cli/utils/package-manager.d.ts +1 -0
  30. package/dist/cli/utils/package-manager.d.ts.map +1 -1
  31. package/dist/cli/utils/package-manager.js +13 -0
  32. package/dist/cli/utils/package-manager.js.map +1 -1
  33. package/dist/cli/utils/package-manager.test.js +15 -1
  34. package/dist/cli/utils/package-manager.test.js.map +1 -1
  35. package/package.json +1 -1
  36. package/src/api/regions.test.ts +89 -0
  37. package/src/api/regions.ts +75 -0
  38. package/src/cli/commands/init.test.ts +8 -0
  39. package/src/cli/commands/init.ts +78 -15
  40. package/src/cli/commands/login.test.ts +13 -1
  41. package/src/cli/commands/login.ts +14 -3
  42. package/src/cli/index.ts +25 -43
  43. package/src/cli/region-selector.test.ts +227 -0
  44. package/src/cli/region-selector.ts +151 -0
  45. package/src/cli/utils/package-manager.test.ts +19 -0
  46. 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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tinybirdco/sdk",
3
- "version": "0.0.34",
3
+ "version": "0.0.36",
4
4
  "description": "TypeScript SDK for Tinybird Forward - define datasources and pipes as TypeScript",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -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
 
@@ -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}: ${(error as Error).message}`,
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(`${configFileName} (JS config files must be updated manually)`);
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: ${(error as Error).message}`,
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(githubCiPath, generateGithubCiWorkflow(workingDirectory));
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(githubCdPath, generateGithubCdWorkflow(workingDirectory));
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(gitlabCiPath, generateGitlabCiWorkflow(workingDirectory));
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(gitlabCdPath, generateGitlabCdWorkflow(workingDirectory));
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
- const authResult = await browserLogin();
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
- // If custom base URL, update config file
861
- const baseUrl = authResult.baseUrl ?? "https://api.tinybird.co";
862
- if (baseUrl !== "https://api.tinybird.co") {
863
- const currentConfigPath = findExistingConfigPath(cwd);
864
- if (currentConfigPath && currentConfigPath.endsWith(".json")) {
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
- // Import the mocked function
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
- const loginOptions: LoginOptions = {};
61
- if (options.apiHost) {
62
- loginOptions.apiHost = options.apiHost;
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
- detectPackageManagerInstallCmd,
34
- detectPackageManagerRunCmd,
35
- hasTinybirdSdkDependency,
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
- const steps = [
111
- needsInstallStep
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
- const steps = [
124
- "Run 'npx tinybird login' to authenticate",
125
- needsInstallStep
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
- const steps = [
137
- needsInstallStep
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 '${options.env}'. Use one of: ${validEnvs.join(", ")}`
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("Create a preview branch and deploy resources (for CI/testing)")
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(`✓ Generated ${result.build.datasourceCount} datasource(s), ${result.build.pipeCount} pipe(s)`)
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(` WARN [${issue.pipeName}]: ${issue.message}`);
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 = devModeOverride === "local" ? "local workspace" : "branch";
757
+ const modeLabel =
758
+ devModeOverride === "local" ? "local workspace" : "branch";
777
759
 
778
760
  // Confirmation prompt unless --yes is passed
779
761
  if (!options.yes) {