@tinybirdco/sdk 0.0.3 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/README.md +87 -14
  2. package/dist/api/deploy.d.ts +41 -3
  3. package/dist/api/deploy.d.ts.map +1 -1
  4. package/dist/api/deploy.js +141 -19
  5. package/dist/api/deploy.js.map +1 -1
  6. package/dist/api/deploy.test.js +77 -29
  7. package/dist/api/deploy.test.js.map +1 -1
  8. package/dist/api/local.d.ts +92 -0
  9. package/dist/api/local.d.ts.map +1 -0
  10. package/dist/api/local.js +176 -0
  11. package/dist/api/local.js.map +1 -0
  12. package/dist/api/local.test.d.ts +2 -0
  13. package/dist/api/local.test.d.ts.map +1 -0
  14. package/dist/api/local.test.js +182 -0
  15. package/dist/api/local.test.js.map +1 -0
  16. package/dist/api/resources.d.ts +178 -0
  17. package/dist/api/resources.d.ts.map +1 -0
  18. package/dist/api/resources.js +244 -0
  19. package/dist/api/resources.js.map +1 -0
  20. package/dist/api/resources.test.d.ts +2 -0
  21. package/dist/api/resources.test.d.ts.map +1 -0
  22. package/dist/api/resources.test.js +255 -0
  23. package/dist/api/resources.test.js.map +1 -0
  24. package/dist/cli/commands/build.d.ts +6 -4
  25. package/dist/cli/commands/build.d.ts.map +1 -1
  26. package/dist/cli/commands/build.js +95 -47
  27. package/dist/cli/commands/build.js.map +1 -1
  28. package/dist/cli/commands/deploy.d.ts +39 -0
  29. package/dist/cli/commands/deploy.d.ts.map +1 -0
  30. package/dist/cli/commands/deploy.js +90 -0
  31. package/dist/cli/commands/deploy.js.map +1 -0
  32. package/dist/cli/commands/dev.d.ts +9 -2
  33. package/dist/cli/commands/dev.d.ts.map +1 -1
  34. package/dist/cli/commands/dev.js +60 -31
  35. package/dist/cli/commands/dev.js.map +1 -1
  36. package/dist/cli/commands/init.d.ts +24 -1
  37. package/dist/cli/commands/init.d.ts.map +1 -1
  38. package/dist/cli/commands/init.js +174 -23
  39. package/dist/cli/commands/init.js.map +1 -1
  40. package/dist/cli/commands/init.test.js +190 -30
  41. package/dist/cli/commands/init.test.js.map +1 -1
  42. package/dist/cli/config.d.ts +14 -0
  43. package/dist/cli/config.d.ts.map +1 -1
  44. package/dist/cli/config.js +7 -0
  45. package/dist/cli/config.js.map +1 -1
  46. package/dist/cli/config.test.js +29 -0
  47. package/dist/cli/config.test.js.map +1 -1
  48. package/dist/cli/index.js +107 -11
  49. package/dist/cli/index.js.map +1 -1
  50. package/dist/cli/utils/package-manager.d.ts +8 -0
  51. package/dist/cli/utils/package-manager.d.ts.map +1 -0
  52. package/dist/cli/utils/package-manager.js +45 -0
  53. package/dist/cli/utils/package-manager.js.map +1 -0
  54. package/dist/cli/utils/package-manager.test.d.ts +2 -0
  55. package/dist/cli/utils/package-manager.test.d.ts.map +1 -0
  56. package/dist/cli/utils/package-manager.test.js +85 -0
  57. package/dist/cli/utils/package-manager.test.js.map +1 -0
  58. package/dist/codegen/index.d.ts +39 -0
  59. package/dist/codegen/index.d.ts.map +1 -0
  60. package/dist/codegen/index.js +300 -0
  61. package/dist/codegen/index.js.map +1 -0
  62. package/dist/codegen/index.test.d.ts +2 -0
  63. package/dist/codegen/index.test.d.ts.map +1 -0
  64. package/dist/codegen/index.test.js +310 -0
  65. package/dist/codegen/index.test.js.map +1 -0
  66. package/dist/codegen/type-mapper.d.ts +20 -0
  67. package/dist/codegen/type-mapper.d.ts.map +1 -0
  68. package/dist/codegen/type-mapper.js +238 -0
  69. package/dist/codegen/type-mapper.js.map +1 -0
  70. package/dist/codegen/type-mapper.test.d.ts +2 -0
  71. package/dist/codegen/type-mapper.test.d.ts.map +1 -0
  72. package/dist/codegen/type-mapper.test.js +167 -0
  73. package/dist/codegen/type-mapper.test.js.map +1 -0
  74. package/dist/codegen/utils.d.ts +46 -0
  75. package/dist/codegen/utils.d.ts.map +1 -0
  76. package/dist/codegen/utils.js +141 -0
  77. package/dist/codegen/utils.js.map +1 -0
  78. package/dist/codegen/utils.test.d.ts +2 -0
  79. package/dist/codegen/utils.test.d.ts.map +1 -0
  80. package/dist/codegen/utils.test.js +178 -0
  81. package/dist/codegen/utils.test.js.map +1 -0
  82. package/dist/generator/index.d.ts +3 -0
  83. package/dist/generator/index.d.ts.map +1 -1
  84. package/dist/generator/index.js +17 -1
  85. package/dist/generator/index.js.map +1 -1
  86. package/dist/generator/index.test.js +104 -1
  87. package/dist/generator/index.test.js.map +1 -1
  88. package/dist/generator/loader.d.ts +15 -0
  89. package/dist/generator/loader.d.ts.map +1 -1
  90. package/dist/generator/loader.js +24 -0
  91. package/dist/generator/loader.js.map +1 -1
  92. package/dist/test/handlers.d.ts +49 -0
  93. package/dist/test/handlers.d.ts.map +1 -1
  94. package/dist/test/handlers.js +45 -0
  95. package/dist/test/handlers.js.map +1 -1
  96. package/package.json +4 -2
  97. package/src/api/deploy.test.ts +135 -34
  98. package/src/api/deploy.ts +203 -23
  99. package/src/api/local.test.ts +250 -0
  100. package/src/api/local.ts +270 -0
  101. package/src/api/resources.test.ts +332 -0
  102. package/src/api/resources.ts +554 -0
  103. package/src/cli/commands/build.ts +115 -53
  104. package/src/cli/commands/deploy.ts +126 -0
  105. package/src/cli/commands/dev.ts +81 -36
  106. package/src/cli/commands/init.test.ts +239 -30
  107. package/src/cli/commands/init.ts +243 -26
  108. package/src/cli/config.test.ts +47 -0
  109. package/src/cli/config.ts +20 -0
  110. package/src/cli/index.ts +120 -11
  111. package/src/cli/utils/package-manager.test.ts +118 -0
  112. package/src/cli/utils/package-manager.ts +44 -0
  113. package/src/codegen/index.test.ts +367 -0
  114. package/src/codegen/index.ts +379 -0
  115. package/src/codegen/type-mapper.test.ts +224 -0
  116. package/src/codegen/type-mapper.ts +265 -0
  117. package/src/codegen/utils.test.ts +221 -0
  118. package/src/codegen/utils.ts +174 -0
  119. package/src/generator/index.test.ts +121 -1
  120. package/src/generator/index.ts +19 -1
  121. package/src/generator/loader.ts +43 -0
  122. package/src/test/handlers.ts +58 -0
@@ -1,15 +1,16 @@
1
1
  /**
2
- * Build command - generates and pushes resources to Tinybird
2
+ * Build command - generates and pushes resources to Tinybird branches
3
3
  */
4
- import { loadConfig } from "../config.js";
4
+ import { loadConfig, LOCAL_BASE_URL } from "../config.js";
5
5
  import { buildFromInclude } from "../../generator/index.js";
6
6
  import { buildToTinybird } from "../../api/build.js";
7
- import { deployToMain } from "../../api/deploy.js";
8
7
  import { getOrCreateBranch } from "../../api/branches.js";
8
+ import { getLocalTokens, getOrCreateLocalWorkspace, getLocalWorkspaceName, LocalNotRunningError, } from "../../api/local.js";
9
9
  /**
10
10
  * Run the build command
11
11
  *
12
- * Loads the schema, generates resources, and pushes to Tinybird API.
12
+ * Builds resources and pushes to Tinybird branches (not main).
13
+ * Use runDeploy for deploying to production.
13
14
  *
14
15
  * @param options - Build options
15
16
  * @returns Build command result
@@ -52,72 +53,119 @@ export async function runBuild(options = {}) {
52
53
  durationMs: Date.now() - startTime,
53
54
  };
54
55
  }
55
- // Deploy to Tinybird
56
- // Determine token and endpoint based on git branch
57
- let effectiveToken = options.tokenOverride ?? config.token;
58
- let useDeployEndpoint = options.useDeployEndpoint ?? config.isMainBranch;
59
- // For feature branches, get or create the Tinybird branch and use its token
56
+ // Determine devMode
57
+ const devMode = options.devModeOverride ?? config.devMode;
60
58
  const debug = !!process.env.TINYBIRD_DEBUG;
61
59
  if (debug) {
62
- console.log(`[debug] isMainBranch: ${config.isMainBranch}`);
63
- console.log(`[debug] tinybirdBranch: ${config.tinybirdBranch}`);
64
- console.log(`[debug] tokenOverride: ${!!options.tokenOverride}`);
60
+ console.log(`[debug] devMode: ${devMode}`);
65
61
  }
66
- if (!config.isMainBranch && config.tinybirdBranch && !options.tokenOverride) {
67
- if (debug) {
68
- console.log(`[debug] Getting/creating Tinybird branch: ${config.tinybirdBranch}`);
69
- }
62
+ let deployResult;
63
+ // Handle local mode
64
+ if (devMode === "local") {
70
65
  try {
71
- const tinybirdBranch = await getOrCreateBranch({
72
- baseUrl: config.baseUrl,
73
- token: config.token,
74
- }, config.tinybirdBranch);
75
- if (!tinybirdBranch.token) {
66
+ // Get tokens from local container
67
+ if (debug) {
68
+ console.log(`[debug] Getting local tokens from ${LOCAL_BASE_URL}/tokens`);
69
+ }
70
+ const localTokens = await getLocalTokens();
71
+ // Get or create workspace based on branch name
72
+ const workspaceName = getLocalWorkspaceName(config.tinybirdBranch, config.cwd);
73
+ if (debug) {
74
+ console.log(`[debug] Using local workspace: ${workspaceName}`);
75
+ }
76
+ const { workspace, wasCreated } = await getOrCreateLocalWorkspace(localTokens, workspaceName);
77
+ if (debug) {
78
+ console.log(`[debug] Workspace ${wasCreated ? "created" : "found"}: ${workspace.name}`);
79
+ }
80
+ // Always use /v1/build for local (no deploy endpoint)
81
+ deployResult = await buildToTinybird({
82
+ baseUrl: LOCAL_BASE_URL,
83
+ token: workspace.token,
84
+ }, buildResult.resources);
85
+ }
86
+ catch (error) {
87
+ if (error instanceof LocalNotRunningError) {
76
88
  return {
77
89
  success: false,
78
90
  build: buildResult,
79
- error: `Branch '${config.tinybirdBranch}' was created but no token was returned.`,
91
+ error: error.message,
80
92
  durationMs: Date.now() - startTime,
81
93
  };
82
94
  }
83
- effectiveToken = tinybirdBranch.token;
84
- useDeployEndpoint = false; // Always use /v1/build for branches
85
- if (debug) {
86
- console.log(`[debug] Using branch token for branch: ${config.tinybirdBranch}`);
87
- }
88
- }
89
- catch (error) {
90
95
  return {
91
96
  success: false,
92
97
  build: buildResult,
93
- error: `Failed to get/create branch: ${error.message}`,
98
+ error: `Local build failed: ${error.message}`,
94
99
  durationMs: Date.now() - startTime,
95
100
  };
96
101
  }
97
102
  }
98
- let deployResult;
99
- try {
100
- // Use /v1/deploy for main branch, /v1/build for feature branches
101
- if (useDeployEndpoint) {
102
- deployResult = await deployToMain({
103
- baseUrl: config.baseUrl,
104
- token: effectiveToken,
105
- }, buildResult.resources);
103
+ else {
104
+ // Branch mode (default)
105
+ // Prevent building to main - must use deploy command
106
+ // Skip this check if tokenOverride is provided (dev command passes branch token)
107
+ const isMainBranch = config.isMainBranch || !config.tinybirdBranch;
108
+ if (isMainBranch && !options.tokenOverride) {
109
+ return {
110
+ success: false,
111
+ build: buildResult,
112
+ error: `Cannot deploy to main workspace with 'build' command. Use 'tinybird deploy' to deploy to production, or switch to a feature branch.`,
113
+ durationMs: Date.now() - startTime,
114
+ };
106
115
  }
107
- else {
116
+ if (debug) {
117
+ console.log(`[debug] isMainBranch: ${config.isMainBranch}`);
118
+ console.log(`[debug] tinybirdBranch: ${config.tinybirdBranch}`);
119
+ console.log(`[debug] tokenOverride: ${!!options.tokenOverride}`);
120
+ }
121
+ let effectiveToken = options.tokenOverride ?? config.token;
122
+ // Get or create the Tinybird branch and use its token
123
+ if (!options.tokenOverride) {
124
+ if (debug) {
125
+ console.log(`[debug] Getting/creating Tinybird branch: ${config.tinybirdBranch}`);
126
+ }
127
+ try {
128
+ const tinybirdBranch = await getOrCreateBranch({
129
+ baseUrl: config.baseUrl,
130
+ token: config.token,
131
+ }, config.tinybirdBranch);
132
+ if (!tinybirdBranch.token) {
133
+ return {
134
+ success: false,
135
+ build: buildResult,
136
+ error: `Branch '${config.tinybirdBranch}' was created but no token was returned.`,
137
+ durationMs: Date.now() - startTime,
138
+ };
139
+ }
140
+ effectiveToken = tinybirdBranch.token;
141
+ if (debug) {
142
+ console.log(`[debug] Using branch token for branch: ${config.tinybirdBranch}`);
143
+ }
144
+ }
145
+ catch (error) {
146
+ return {
147
+ success: false,
148
+ build: buildResult,
149
+ error: `Failed to get/create branch: ${error.message}`,
150
+ durationMs: Date.now() - startTime,
151
+ };
152
+ }
153
+ }
154
+ try {
155
+ // Always use /v1/build for branches
108
156
  deployResult = await buildToTinybird({
109
157
  baseUrl: config.baseUrl,
110
158
  token: effectiveToken,
111
159
  }, buildResult.resources);
112
160
  }
113
- }
114
- catch (error) {
115
- return {
116
- success: false,
117
- build: buildResult,
118
- error: `Deploy failed: ${error.message}`,
119
- durationMs: Date.now() - startTime,
120
- };
161
+ catch (error) {
162
+ return {
163
+ success: false,
164
+ build: buildResult,
165
+ error: `Deploy failed: ${error.message}`,
166
+ durationMs: Date.now() - startTime,
167
+ };
168
+ }
121
169
  }
122
170
  if (!deployResult.success) {
123
171
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/cli/commands/build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/cli/commands/build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Deploy command - deploys resources to main Tinybird workspace
3
+ */
4
+ import { type BuildFromIncludeResult } from "../../generator/index.js";
5
+ import type { BuildApiResult } from "../../api/build.js";
6
+ /**
7
+ * Deploy command options
8
+ */
9
+ export interface DeployCommandOptions {
10
+ /** Working directory (defaults to cwd) */
11
+ cwd?: string;
12
+ /** Skip pushing to API (just generate) */
13
+ dryRun?: boolean;
14
+ }
15
+ /**
16
+ * Deploy command result
17
+ */
18
+ export interface DeployCommandResult {
19
+ /** Whether the deploy was successful */
20
+ success: boolean;
21
+ /** Build result with generated resources */
22
+ build?: BuildFromIncludeResult;
23
+ /** Deploy API result (if not dry run) */
24
+ deploy?: BuildApiResult;
25
+ /** Error message if failed */
26
+ error?: string;
27
+ /** Duration in milliseconds */
28
+ durationMs: number;
29
+ }
30
+ /**
31
+ * Run the deploy command
32
+ *
33
+ * Builds resources and deploys to main Tinybird workspace (production).
34
+ *
35
+ * @param options - Deploy options
36
+ * @returns Deploy command result
37
+ */
38
+ export declare function runDeploy(options?: DeployCommandOptions): Promise<DeployCommandResult>;
39
+ //# sourceMappingURL=deploy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/deploy.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAoB,KAAK,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAEzF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,0CAA0C;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,wCAAwC;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,sBAAsB,CAAC;IAC/B,yCAAyC;IACzC,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAAC,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAkFhG"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Deploy command - deploys resources to main Tinybird workspace
3
+ */
4
+ import { loadConfig } from "../config.js";
5
+ import { buildFromInclude } from "../../generator/index.js";
6
+ import { deployToMain } from "../../api/deploy.js";
7
+ /**
8
+ * Run the deploy command
9
+ *
10
+ * Builds resources and deploys to main Tinybird workspace (production).
11
+ *
12
+ * @param options - Deploy options
13
+ * @returns Deploy command result
14
+ */
15
+ export async function runDeploy(options = {}) {
16
+ const startTime = Date.now();
17
+ const cwd = options.cwd ?? process.cwd();
18
+ // Load config
19
+ let config;
20
+ try {
21
+ config = loadConfig(cwd);
22
+ }
23
+ catch (error) {
24
+ return {
25
+ success: false,
26
+ error: error.message,
27
+ durationMs: Date.now() - startTime,
28
+ };
29
+ }
30
+ // Build resources from include paths
31
+ let buildResult;
32
+ try {
33
+ buildResult = await buildFromInclude({
34
+ includePaths: config.include,
35
+ cwd: config.cwd,
36
+ });
37
+ }
38
+ catch (error) {
39
+ return {
40
+ success: false,
41
+ error: `Build failed: ${error.message}`,
42
+ durationMs: Date.now() - startTime,
43
+ };
44
+ }
45
+ // If dry run, return without pushing
46
+ if (options.dryRun) {
47
+ return {
48
+ success: true,
49
+ build: buildResult,
50
+ durationMs: Date.now() - startTime,
51
+ };
52
+ }
53
+ const debug = !!process.env.TINYBIRD_DEBUG;
54
+ if (debug) {
55
+ console.log(`[debug] Deploying to main workspace`);
56
+ console.log(`[debug] baseUrl: ${config.baseUrl}`);
57
+ }
58
+ // Deploy to main workspace using /v1/deploy endpoint
59
+ let deployResult;
60
+ try {
61
+ deployResult = await deployToMain({
62
+ baseUrl: config.baseUrl,
63
+ token: config.token,
64
+ }, buildResult.resources);
65
+ }
66
+ catch (error) {
67
+ return {
68
+ success: false,
69
+ build: buildResult,
70
+ error: `Deploy failed: ${error.message}`,
71
+ durationMs: Date.now() - startTime,
72
+ };
73
+ }
74
+ if (!deployResult.success) {
75
+ return {
76
+ success: false,
77
+ build: buildResult,
78
+ deploy: deployResult,
79
+ error: deployResult.error,
80
+ durationMs: Date.now() - startTime,
81
+ };
82
+ }
83
+ return {
84
+ success: true,
85
+ build: buildResult,
86
+ deploy: deployResult,
87
+ durationMs: Date.now() - startTime,
88
+ };
89
+ }
90
+ //# sourceMappingURL=deploy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../src/cli/commands/deploy.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAuB,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAA+B,MAAM,0BAA0B,CAAC;AACzF,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AA6BnD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,UAAgC,EAAE;IAChE,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,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,qCAAqC;IACrC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,WAAW;YAClB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SACnC,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAE3C,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,qDAAqD;IACrD,IAAI,YAA4B,CAAC;IACjC,IAAI,CAAC;QACH,YAAY,GAAG,MAAM,YAAY,CAC/B;YACE,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,EACD,WAAW,CAAC,SAAS,CACtB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,WAAW;YAClB,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,KAAK,EAAE,WAAW;YAClB,MAAM,EAAE,YAAY;YACpB,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,KAAK,EAAE,WAAW;QAClB,MAAM,EAAE,YAAY;QACpB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;KACnC,CAAC;AACJ,CAAC"}
@@ -1,10 +1,11 @@
1
1
  /**
2
2
  * Dev command - watch mode with automatic sync
3
3
  */
4
- import { type ResolvedConfig } from "../config.js";
4
+ import { type ResolvedConfig, type DevMode } from "../config.js";
5
5
  import { type BuildCommandResult } from "./build.js";
6
6
  import { type TinybirdBranch } from "../../api/branches.js";
7
7
  import { type SchemaValidationResult } from "../utils/schema-validation.js";
8
+ import { type LocalWorkspace } from "../../api/local.js";
8
9
  /**
9
10
  * Login result info
10
11
  */
@@ -34,6 +35,8 @@ export interface DevCommandOptions {
34
35
  onLoginComplete?: (info: LoginInfo) => void;
35
36
  /** Callback when schema validation completes */
36
37
  onSchemaValidation?: (result: SchemaValidationResult) => void;
38
+ /** Override the devMode from config */
39
+ devModeOverride?: DevMode;
37
40
  }
38
41
  /**
39
42
  * Information about the branch being used
@@ -43,10 +46,14 @@ export interface BranchReadyInfo {
43
46
  gitBranch: string | null;
44
47
  /** Whether we're on the main branch */
45
48
  isMainBranch: boolean;
46
- /** Tinybird branch info (null if on main) */
49
+ /** Tinybird branch info (null if on main or local mode) */
47
50
  tinybirdBranch?: TinybirdBranch;
48
51
  /** Whether the branch was newly created */
49
52
  wasCreated?: boolean;
53
+ /** Whether using local mode */
54
+ isLocal?: boolean;
55
+ /** Local workspace info (only in local mode) */
56
+ localWorkspace?: LocalWorkspace;
50
57
  }
51
58
  /**
52
59
  * Dev command controller
@@ -1 +1 @@
1
- {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/dev.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAyE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAC1H,OAAO,EAAY,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG/E,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,+BAA+B,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,qBAAqB;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,0CAA0C;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,oCAAoC;IACpC,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACvD,oCAAoC;IACpC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,+CAA+C;IAC/C,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;IAChD,kDAAkD;IAClD,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IAC5C,gDAAgD;IAChD,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,IAAI,CAAC;CAC/D;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,sBAAsB;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,uCAAuC;IACvC,YAAY,EAAE,OAAO,CAAC;IACtB,6CAA6C;IAC7C,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,2CAA2C;IAC3C,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,iCAAiC;IACjC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,+BAA+B;IAC/B,OAAO,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC3C,mCAAmC;IACnC,MAAM,EAAE,cAAc,CAAC;IACvB,uDAAuD;IACvD,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB;IAClB,UAAU,EAAE,eAAe,CAAC;CAC7B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,MAAM,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,aAAa,CAAC,CAoPpF"}
1
+ {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/dev.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAyF,KAAK,cAAc,EAAE,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AACxJ,OAAO,EAAY,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG/E,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,qBAAqB;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,0CAA0C;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,oCAAoC;IACpC,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACvD,oCAAoC;IACpC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,+CAA+C;IAC/C,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;IAChD,kDAAkD;IAClD,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IAC5C,gDAAgD;IAChD,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,IAAI,CAAC;IAC9D,uCAAuC;IACvC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,sBAAsB;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,uCAAuC;IACvC,YAAY,EAAE,OAAO,CAAC;IACtB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,2CAA2C;IAC3C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gDAAgD;IAChD,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,iCAAiC;IACjC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,+BAA+B;IAC/B,OAAO,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC3C,mCAAmC;IACnC,MAAM,EAAE,cAAc,CAAC;IACvB,uDAAuD;IACvD,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB;IAClB,UAAU,EAAE,eAAe,CAAC;CAC7B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,MAAM,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,aAAa,CAAC,CAqRpF"}
@@ -3,12 +3,13 @@
3
3
  */
4
4
  import * as path from "path";
5
5
  import { watch } from "chokidar";
6
- import { loadConfig, configExists, findConfigFile, hasValidToken, updateConfig } from "../config.js";
6
+ import { loadConfig, configExists, findConfigFile, hasValidToken, updateConfig, LOCAL_BASE_URL } from "../config.js";
7
7
  import { runBuild } from "./build.js";
8
8
  import { getOrCreateBranch } from "../../api/branches.js";
9
9
  import { browserLogin } from "../auth.js";
10
10
  import { saveTinybirdToken } from "../env.js";
11
11
  import { validatePipeSchemas, } from "../utils/schema-validation.js";
12
+ import { getLocalTokens, getOrCreateLocalWorkspace, getLocalWorkspaceName, } from "../../api/local.js";
12
13
  /**
13
14
  * Run the dev command
14
15
  *
@@ -27,8 +28,18 @@ export async function runDev(options = {}) {
27
28
  if (!configExists(cwd)) {
28
29
  throw new Error("No tinybird.json found. Run 'npx tinybird init' to initialize a project.");
29
30
  }
30
- // Check if authentication is set up, if not trigger login
31
- if (!hasValidToken(cwd)) {
31
+ // Load config first to determine devMode
32
+ let config;
33
+ try {
34
+ config = loadConfig(cwd);
35
+ }
36
+ catch (error) {
37
+ throw error;
38
+ }
39
+ // Determine devMode
40
+ const devMode = options.devModeOverride ?? config.devMode;
41
+ // Check if authentication is set up, if not trigger login (skip for local mode)
42
+ if (devMode !== "local" && !hasValidToken(cwd)) {
32
43
  console.log("No authentication found. Starting login flow...\n");
33
44
  const authResult = await browserLogin();
34
45
  if (!authResult.success || !authResult.token) {
@@ -54,42 +65,59 @@ export async function runDev(options = {}) {
54
65
  workspaceName: authResult.workspaceName,
55
66
  userEmail: authResult.userEmail,
56
67
  });
57
- }
58
- // Load config (now should have valid token)
59
- let config;
60
- try {
68
+ // Reload config after login
61
69
  config = loadConfig(cwd);
62
70
  }
63
- catch (error) {
64
- throw error;
65
- }
66
- // Determine effective token based on git branch
71
+ // Determine effective token and branch info based on devMode
67
72
  let effectiveToken = config.token;
73
+ let effectiveBaseUrl = config.baseUrl;
68
74
  let branchInfo = {
69
75
  gitBranch: config.gitBranch,
70
76
  isMainBranch: config.isMainBranch,
71
77
  };
72
- // If we're on a feature branch, get or create the Tinybird branch
73
- // Use tinybirdBranch (sanitized name) for Tinybird API, gitBranch for display
74
- if (!config.isMainBranch && config.tinybirdBranch) {
75
- const branchName = config.tinybirdBranch; // Sanitized name for Tinybird
76
- // Always fetch fresh from API to avoid stale cache issues
77
- const tinybirdBranch = await getOrCreateBranch({
78
- baseUrl: config.baseUrl,
79
- token: config.token,
80
- }, branchName);
81
- if (!tinybirdBranch.token) {
82
- throw new Error(`Branch '${branchName}' was created but no token was returned. ` +
83
- `This may be an API issue.`);
84
- }
85
- effectiveToken = tinybirdBranch.token;
78
+ if (devMode === "local") {
79
+ // Local mode: get tokens from local container and set up workspace
80
+ const localTokens = await getLocalTokens();
81
+ const workspaceName = getLocalWorkspaceName(config.tinybirdBranch, config.cwd);
82
+ const { workspace, wasCreated } = await getOrCreateLocalWorkspace(localTokens, workspaceName);
83
+ effectiveToken = workspace.token;
84
+ effectiveBaseUrl = LOCAL_BASE_URL;
86
85
  branchInfo = {
87
- gitBranch: config.gitBranch, // Original git branch name for display
88
- isMainBranch: false,
89
- tinybirdBranch,
90
- wasCreated: tinybirdBranch.wasCreated ?? false,
86
+ gitBranch: config.gitBranch,
87
+ isMainBranch: false, // Local mode always uses build, not deploy
88
+ isLocal: true,
89
+ localWorkspace: workspace,
90
+ wasCreated,
91
91
  };
92
92
  }
93
+ else {
94
+ // Branch mode: use Tinybird cloud with branches
95
+ // Prevent dev mode on main branch - must use deploy command
96
+ if (config.isMainBranch || !config.tinybirdBranch) {
97
+ throw new Error(`Cannot use 'dev' command on main branch. Use 'tinybird deploy' to deploy to production, or switch to a feature branch.`);
98
+ }
99
+ // Get or create the Tinybird branch
100
+ // Use tinybirdBranch (sanitized name) for Tinybird API, gitBranch for display
101
+ if (config.tinybirdBranch) {
102
+ const branchName = config.tinybirdBranch; // Sanitized name for Tinybird
103
+ // Always fetch fresh from API to avoid stale cache issues
104
+ const tinybirdBranch = await getOrCreateBranch({
105
+ baseUrl: config.baseUrl,
106
+ token: config.token,
107
+ }, branchName);
108
+ if (!tinybirdBranch.token) {
109
+ throw new Error(`Branch '${branchName}' was created but no token was returned. ` +
110
+ `This may be an API issue.`);
111
+ }
112
+ effectiveToken = tinybirdBranch.token;
113
+ branchInfo = {
114
+ gitBranch: config.gitBranch, // Original git branch name for display
115
+ isMainBranch: false,
116
+ tinybirdBranch,
117
+ wasCreated: tinybirdBranch.wasCreated ?? false,
118
+ };
119
+ }
120
+ }
93
121
  // Notify about branch readiness
94
122
  options.onBranchReady?.(branchInfo);
95
123
  // Get directories to watch from include paths
@@ -113,10 +141,11 @@ export async function runDev(options = {}) {
113
141
  isBuilding = true;
114
142
  options.onBuildStart?.();
115
143
  try {
144
+ // Always use runBuild - main branch is blocked at startup
116
145
  const result = await runBuild({
117
146
  cwd: config.cwd,
118
147
  tokenOverride: effectiveToken,
119
- useDeployEndpoint: config.isMainBranch,
148
+ devModeOverride: devMode,
120
149
  });
121
150
  options.onBuildComplete?.(result);
122
151
  // Validate pipe schemas after successful deploy
@@ -134,7 +163,7 @@ export async function runDev(options = {}) {
134
163
  const validation = await validatePipeSchemas({
135
164
  entities: result.build.entities,
136
165
  pipeNames: changedPipes,
137
- baseUrl: config.baseUrl,
166
+ baseUrl: effectiveBaseUrl,
138
167
  token: effectiveToken,
139
168
  });
140
169
  options.onSchemaValidation(validation);
@@ -1 +1 @@
1
- {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../../src/cli/commands/dev.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAuB,MAAM,cAAc,CAAC;AAC1H,OAAO,EAAE,QAAQ,EAA2B,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAuB,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EACL,mBAAmB,GAEpB,MAAM,+BAA+B,CAAC;AAgEvC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,UAA6B,EAAE;IAC1D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzC,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,IAAI,GAAG,CAAC;IAE3C,kCAAkC;IAClC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,0EAA0E,CAC3E,CAAC;IACJ,CAAC;IAED,0DAA0D;IAC1D,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;QAEjE,MAAM,UAAU,GAAG,MAAM,YAAY,EAAE,CAAC;QAExC,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CACb,UAAU,CAAC,KAAK,IAAI,yDAAyD,CAC9E,CAAC;QACJ,CAAC;QAED,oDAAoD;QACpD,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC5E,CAAC;QAED,gEAAgE;QAChE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC3C,iBAAiB,CAAC,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QAE/C,gDAAgD;QAChD,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,YAAY,CAAC,UAAU,EAAE;gBACvB,OAAO,EAAE,UAAU,CAAC,OAAO;aAC5B,CAAC,CAAC;QACL,CAAC;QAED,oDAAoD;QACpD,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC;QAE9C,OAAO,CAAC,eAAe,EAAE,CAAC;YACxB,aAAa,EAAE,UAAU,CAAC,aAAa;YACvC,SAAS,EAAE,UAAU,CAAC,SAAS;SAChC,CAAC,CAAC;IACL,CAAC;IAED,4CAA4C;IAC5C,IAAI,MAAsB,CAAC;IAC3B,IAAI,CAAC;QACH,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,KAAK,CAAC;IACd,CAAC;IAED,gDAAgD;IAChD,IAAI,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC;IAClC,IAAI,UAAU,GAAoB;QAChC,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,YAAY,EAAE,MAAM,CAAC,YAAY;KAClC,CAAC;IAEF,kEAAkE;IAClE,8EAA8E;IAC9E,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QAClD,MAAM,UAAU,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,8BAA8B;QAExE,0DAA0D;QAC1D,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAC5C;YACE,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,EACD,UAAU,CACX,CAAC;QAEF,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,WAAW,UAAU,2CAA2C;gBAC9D,2BAA2B,CAC9B,CAAC;QACJ,CAAC;QAED,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC;QACtC,UAAU,GAAG;YACX,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,uCAAuC;YACpE,YAAY,EAAE,KAAK;YACnB,cAAc;YACd,UAAU,EAAE,cAAc,CAAC,UAAU,IAAI,KAAK;SAC/C,CAAC;IACJ,CAAC;IAED,gCAAgC;IAChC,OAAO,CAAC,aAAa,EAAE,CAAC,UAAU,CAAC,CAAC;IAEpC,8CAA8C;IAC9C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACzC,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;YAC/C,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAC1C,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,iBAAiB;IACjB,IAAI,aAAa,GAAyC,IAAI,CAAC;IAC/D,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,YAAY,GAAG,KAAK,CAAC;IAEzB,iBAAiB;IACjB,KAAK,UAAU,OAAO;QACpB,IAAI,UAAU,EAAE,CAAC;YACf,YAAY,GAAG,IAAI,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,2BAA2B,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;QAC/E,CAAC;QAED,UAAU,GAAG,IAAI,CAAC;QAClB,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;QAEzB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC;gBAC5B,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,aAAa,EAAE,cAAc;gBAC7B,iBAAiB,EAAE,MAAM,CAAC,YAAY;aACvC,CAAC,CAAC;YACH,OAAO,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC;YAElC,gDAAgD;YAChD,IACE,MAAM,CAAC,OAAO;gBACd,MAAM,CAAC,KAAK,EAAE,QAAQ;gBACtB,MAAM,CAAC,MAAM,EAAE,KAAK;gBACpB,OAAO,CAAC,kBAAkB,EAC1B,CAAC;gBACD,uCAAuC;gBACvC,MAAM,YAAY,GAAG;oBACnB,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO;oBAC9B,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO;iBAC/B,CAAC;gBAEF,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5B,IAAI,CAAC;wBACH,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC;4BAC3C,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ;4BAC/B,SAAS,EAAE,YAAY;4BACvB,OAAO,EAAE,MAAM,CAAC,OAAO;4BACvB,KAAK,EAAE,cAAc;yBACtB,CAAC,CAAC;wBAEH,OAAO,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;oBACzC,CAAC;oBAAC,OAAO,eAAe,EAAE,CAAC;wBACzB,gDAAgD;wBAChD,OAAO,CAAC,OAAO,EAAE,CAAC,eAAwB,CAAC,CAAC;oBAC9C,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,GAAuB;gBACjC,OAAO,EAAE,KAAK;gBACd,KAAK,EAAG,KAAe,CAAC,OAAO;gBAC/B,UAAU,EAAE,CAAC;aACd,CAAC;YACF,OAAO,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC;YAClC,OAAO,MAAM,CAAC;QAChB,CAAC;gBAAS,CAAC;YACT,UAAU,GAAG,KAAK,CAAC;YAEnB,2CAA2C;YAC3C,IAAI,YAAY,EAAE,CAAC;gBACjB,YAAY,GAAG,KAAK,CAAC;gBACrB,aAAa,EAAE,CAAC;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,SAAS,aAAa;QACpB,IAAI,aAAa,EAAE,CAAC;YAClB,YAAY,CAAC,aAAa,CAAC,CAAC;QAC9B,CAAC;QAED,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,aAAa,GAAG,IAAI,CAAC;YACrB,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACxB,OAAO,CAAC,OAAO,EAAE,CAAC,KAAc,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,UAAU,CAAC,CAAC;IACjB,CAAC;IAED,kDAAkD;IAClD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;QAC3C,OAAO,EAAE;YACP,eAAe,EAAE,kBAAkB;YACnC,cAAc;YACd,4BAA4B,EAAE,gCAAgC;YAC9D,8BAA8B,EAAE,gCAAgC;SACjE;QACD,UAAU,EAAE,IAAI;QAChB,aAAa,EAAE,IAAI;KACpB,CAAC,CAAC;IAEH,oBAAoB;IACpB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE;QAChC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACzD,aAAa,EAAE,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,EAAE;QAC7B,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACzD,aAAa,EAAE,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE;QAChC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACzD,aAAa,EAAE,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAc,EAAE,EAAE;QACrC,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,mBAAmB;IACnB,MAAM,OAAO,EAAE,CAAC;IAEhB,oBAAoB;IACpB,OAAO;QACL,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,IAAI,aAAa,EAAE,CAAC;gBAClB,YAAY,CAAC,aAAa,CAAC,CAAC;YAC9B,CAAC;YACD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC;QACD,OAAO,EAAE,OAAO;QAChB,MAAM;QACN,cAAc;QACd,UAAU;KACX,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../../src/cli/commands/dev.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAqC,MAAM,cAAc,CAAC;AACxJ,OAAO,EAAE,QAAQ,EAA2B,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAuB,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EACL,mBAAmB,GAEpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,cAAc,EACd,yBAAyB,EACzB,qBAAqB,GAEtB,MAAM,oBAAoB,CAAC;AAsE5B;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,UAA6B,EAAE;IAC1D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzC,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,IAAI,GAAG,CAAC;IAE3C,kCAAkC;IAClC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,0EAA0E,CAC3E,CAAC;IACJ,CAAC;IAED,yCAAyC;IACzC,IAAI,MAAsB,CAAC;IAC3B,IAAI,CAAC;QACH,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,KAAK,CAAC;IACd,CAAC;IAED,oBAAoB;IACpB,MAAM,OAAO,GAAG,OAAO,CAAC,eAAe,IAAI,MAAM,CAAC,OAAO,CAAC;IAE1D,gFAAgF;IAChF,IAAI,OAAO,KAAK,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;QAEjE,MAAM,UAAU,GAAG,MAAM,YAAY,EAAE,CAAC;QAExC,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CACb,UAAU,CAAC,KAAK,IAAI,yDAAyD,CAC9E,CAAC;QACJ,CAAC;QAED,oDAAoD;QACpD,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC5E,CAAC;QAED,gEAAgE;QAChE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC3C,iBAAiB,CAAC,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QAE/C,gDAAgD;QAChD,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,YAAY,CAAC,UAAU,EAAE;gBACvB,OAAO,EAAE,UAAU,CAAC,OAAO;aAC5B,CAAC,CAAC;QACL,CAAC;QAED,oDAAoD;QACpD,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC;QAE9C,OAAO,CAAC,eAAe,EAAE,CAAC;YACxB,aAAa,EAAE,UAAU,CAAC,aAAa;YACvC,SAAS,EAAE,UAAU,CAAC,SAAS;SAChC,CAAC,CAAC;QAEH,4BAA4B;QAC5B,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,6DAA6D;IAC7D,IAAI,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC;IAClC,IAAI,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC;IACtC,IAAI,UAAU,GAAoB;QAChC,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,YAAY,EAAE,MAAM,CAAC,YAAY;KAClC,CAAC;IAEF,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,mEAAmE;QACnE,MAAM,WAAW,GAAG,MAAM,cAAc,EAAE,CAAC;QAC3C,MAAM,aAAa,GAAG,qBAAqB,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/E,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,yBAAyB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QAE9F,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC;QACjC,gBAAgB,GAAG,cAAc,CAAC;QAClC,UAAU,GAAG;YACX,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,YAAY,EAAE,KAAK,EAAE,2CAA2C;YAChE,OAAO,EAAE,IAAI;YACb,cAAc,EAAE,SAAS;YACzB,UAAU;SACX,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,gDAAgD;QAChD,4DAA4D;QAC5D,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CACb,wHAAwH,CACzH,CAAC;QACJ,CAAC;QAED,oCAAoC;QACpC,8EAA8E;QAC9E,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;YAC1B,MAAM,UAAU,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,8BAA8B;YAExE,0DAA0D;YAC1D,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAC5C;gBACE,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB,EACD,UAAU,CACX,CAAC;YAEF,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CACb,WAAW,UAAU,2CAA2C;oBAC9D,2BAA2B,CAC9B,CAAC;YACJ,CAAC;YAED,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC;YACtC,UAAU,GAAG;gBACX,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,uCAAuC;gBACpE,YAAY,EAAE,KAAK;gBACnB,cAAc;gBACd,UAAU,EAAE,cAAc,CAAC,UAAU,IAAI,KAAK;aAC/C,CAAC;QACJ,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,OAAO,CAAC,aAAa,EAAE,CAAC,UAAU,CAAC,CAAC;IAEpC,8CAA8C;IAC9C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACzC,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;YAC/C,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAC1C,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,iBAAiB;IACjB,IAAI,aAAa,GAAyC,IAAI,CAAC;IAC/D,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,YAAY,GAAG,KAAK,CAAC;IAEzB,iBAAiB;IACjB,KAAK,UAAU,OAAO;QACpB,IAAI,UAAU,EAAE,CAAC;YACf,YAAY,GAAG,IAAI,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,2BAA2B,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;QAC/E,CAAC;QAED,UAAU,GAAG,IAAI,CAAC;QAClB,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;QAEzB,IAAI,CAAC;YACH,0DAA0D;YAC1D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC;gBAC5B,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,aAAa,EAAE,cAAc;gBAC7B,eAAe,EAAE,OAAO;aACzB,CAAC,CAAC;YACH,OAAO,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC;YAElC,gDAAgD;YAChD,IACE,MAAM,CAAC,OAAO;gBACd,MAAM,CAAC,KAAK,EAAE,QAAQ;gBACtB,MAAM,CAAC,MAAM,EAAE,KAAK;gBACpB,OAAO,CAAC,kBAAkB,EAC1B,CAAC;gBACD,uCAAuC;gBACvC,MAAM,YAAY,GAAG;oBACnB,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO;oBAC9B,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO;iBAC/B,CAAC;gBAEF,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5B,IAAI,CAAC;wBACH,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC;4BAC3C,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ;4BAC/B,SAAS,EAAE,YAAY;4BACvB,OAAO,EAAE,gBAAgB;4BACzB,KAAK,EAAE,cAAc;yBACtB,CAAC,CAAC;wBAEH,OAAO,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;oBACzC,CAAC;oBAAC,OAAO,eAAe,EAAE,CAAC;wBACzB,gDAAgD;wBAChD,OAAO,CAAC,OAAO,EAAE,CAAC,eAAwB,CAAC,CAAC;oBAC9C,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,GAAuB;gBACjC,OAAO,EAAE,KAAK;gBACd,KAAK,EAAG,KAAe,CAAC,OAAO;gBAC/B,UAAU,EAAE,CAAC;aACd,CAAC;YACF,OAAO,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC;YAClC,OAAO,MAAM,CAAC;QAChB,CAAC;gBAAS,CAAC;YACT,UAAU,GAAG,KAAK,CAAC;YAEnB,2CAA2C;YAC3C,IAAI,YAAY,EAAE,CAAC;gBACjB,YAAY,GAAG,KAAK,CAAC;gBACrB,aAAa,EAAE,CAAC;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,SAAS,aAAa;QACpB,IAAI,aAAa,EAAE,CAAC;YAClB,YAAY,CAAC,aAAa,CAAC,CAAC;QAC9B,CAAC;QAED,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,aAAa,GAAG,IAAI,CAAC;YACrB,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACxB,OAAO,CAAC,OAAO,EAAE,CAAC,KAAc,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,UAAU,CAAC,CAAC;IACjB,CAAC;IAED,kDAAkD;IAClD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;QAC3C,OAAO,EAAE;YACP,eAAe,EAAE,kBAAkB;YACnC,cAAc;YACd,4BAA4B,EAAE,gCAAgC;YAC9D,8BAA8B,EAAE,gCAAgC;SACjE;QACD,UAAU,EAAE,IAAI;QAChB,aAAa,EAAE,IAAI;KACpB,CAAC,CAAC;IAEH,oBAAoB;IACpB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE;QAChC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACzD,aAAa,EAAE,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,EAAE;QAC7B,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACzD,aAAa,EAAE,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE;QAChC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACzD,aAAa,EAAE,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAc,EAAE,EAAE;QACrC,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,mBAAmB;IACnB,MAAM,OAAO,EAAE,CAAC;IAEhB,oBAAoB;IACpB,OAAO;QACL,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,IAAI,aAAa,EAAE,CAAC;gBAClB,YAAY,CAAC,aAAa,CAAC,CAAC;YAC9B,CAAC;YACD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC;QACD,OAAO,EAAE,OAAO;QAChB,MAAM;QACN,cAAc;QACd,UAAU;KACX,CAAC;AACJ,CAAC"}
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * Init command - scaffolds a new Tinybird TypeScript project
3
3
  */
4
+ import { type DevMode } from "../config.js";
4
5
  /**
5
6
  * Init command options
6
7
  */
@@ -11,6 +12,14 @@ export interface InitOptions {
11
12
  force?: boolean;
12
13
  /** Skip the login flow */
13
14
  skipLogin?: boolean;
15
+ /** Development mode - if provided, skip interactive prompt */
16
+ devMode?: DevMode;
17
+ /** Client path - if provided, skip interactive prompt */
18
+ clientPath?: string;
19
+ /** Skip prompts for existing datafiles - for testing */
20
+ skipDatafilePrompt?: boolean;
21
+ /** Auto-include existing datafiles without prompting - for testing */
22
+ includeExistingDatafiles?: boolean;
14
23
  }
15
24
  /**
16
25
  * Init command result
@@ -30,13 +39,27 @@ export interface InitResult {
30
39
  workspaceName?: string;
31
40
  /** User email after login */
32
41
  userEmail?: string;
42
+ /** Selected development mode */
43
+ devMode?: DevMode;
44
+ /** Selected client path */
45
+ clientPath?: string;
46
+ /** Existing datafiles that were added to config */
47
+ existingDatafiles?: string[];
33
48
  }
49
+ /**
50
+ * Find existing .datasource and .pipe files in the repository
51
+ *
52
+ * @param cwd - Working directory to search from
53
+ * @param maxDepth - Maximum directory depth to search (default: 5)
54
+ * @returns Array of relative file paths
55
+ */
56
+ export declare function findExistingDatafiles(cwd: string, maxDepth?: number): string[];
34
57
  /**
35
58
  * Run the init command
36
59
  *
37
60
  * Creates:
38
61
  * - tinybird.json in the project root
39
- * - src/tinybird/ folder with datasources.ts, pipes.ts, and client.ts
62
+ * - src/tinybird/ folder with datasources.ts, endpoints.ts, and client.ts
40
63
  *
41
64
  * @param options - Init options
42
65
  * @returns Init result
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AA8HH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,0CAA0C;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,0BAA0B;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,4CAA4C;IAC5C,OAAO,EAAE,OAAO,CAAC;IACjB,8BAA8B;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,8CAA8C;IAC9C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iCAAiC;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAsB,OAAO,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CAsL5E"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,EAKL,KAAK,OAAO,EACb,MAAM,cAAc,CAAC;AA2HtB;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,0CAA0C;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,0BAA0B;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,sEAAsE;IACtE,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,4CAA4C;IAC5C,OAAO,EAAE,OAAO,CAAC;IACjB,8BAA8B;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,8CAA8C;IAC9C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iCAAiC;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2BAA2B;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,EACX,QAAQ,GAAE,MAAU,GACnB,MAAM,EAAE,CA0CV;AAED;;;;;;;;;GASG;AACH,wBAAsB,OAAO,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CAmS5E"}