@tinybirdco/sdk 0.0.1

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 (258) hide show
  1. package/README.md +518 -0
  2. package/bin/tinybird.js +7 -0
  3. package/dist/api/branches.d.ts +98 -0
  4. package/dist/api/branches.d.ts.map +1 -0
  5. package/dist/api/branches.js +203 -0
  6. package/dist/api/branches.js.map +1 -0
  7. package/dist/api/branches.test.d.ts +2 -0
  8. package/dist/api/branches.test.d.ts.map +1 -0
  9. package/dist/api/branches.test.js +286 -0
  10. package/dist/api/branches.test.js.map +1 -0
  11. package/dist/api/build.d.ts +130 -0
  12. package/dist/api/build.d.ts.map +1 -0
  13. package/dist/api/build.js +143 -0
  14. package/dist/api/build.js.map +1 -0
  15. package/dist/api/build.test.d.ts +2 -0
  16. package/dist/api/build.test.d.ts.map +1 -0
  17. package/dist/api/build.test.js +138 -0
  18. package/dist/api/build.test.js.map +1 -0
  19. package/dist/api/deploy.d.ts +39 -0
  20. package/dist/api/deploy.d.ts.map +1 -0
  21. package/dist/api/deploy.js +135 -0
  22. package/dist/api/deploy.js.map +1 -0
  23. package/dist/api/deploy.test.d.ts +2 -0
  24. package/dist/api/deploy.test.d.ts.map +1 -0
  25. package/dist/api/deploy.test.js +118 -0
  26. package/dist/api/deploy.test.js.map +1 -0
  27. package/dist/api/workspaces.d.ts +46 -0
  28. package/dist/api/workspaces.d.ts.map +1 -0
  29. package/dist/api/workspaces.js +39 -0
  30. package/dist/api/workspaces.js.map +1 -0
  31. package/dist/api/workspaces.test.d.ts +2 -0
  32. package/dist/api/workspaces.test.d.ts.map +1 -0
  33. package/dist/api/workspaces.test.js +65 -0
  34. package/dist/api/workspaces.test.js.map +1 -0
  35. package/dist/cli/auth.d.ts +86 -0
  36. package/dist/cli/auth.d.ts.map +1 -0
  37. package/dist/cli/auth.js +284 -0
  38. package/dist/cli/auth.js.map +1 -0
  39. package/dist/cli/branch-store.d.ts +53 -0
  40. package/dist/cli/branch-store.d.ts.map +1 -0
  41. package/dist/cli/branch-store.js +91 -0
  42. package/dist/cli/branch-store.js.map +1 -0
  43. package/dist/cli/branch-store.test.d.ts +2 -0
  44. package/dist/cli/branch-store.test.d.ts.map +1 -0
  45. package/dist/cli/branch-store.test.js +115 -0
  46. package/dist/cli/branch-store.test.js.map +1 -0
  47. package/dist/cli/commands/branch.d.ts +82 -0
  48. package/dist/cli/commands/branch.d.ts.map +1 -0
  49. package/dist/cli/commands/branch.js +215 -0
  50. package/dist/cli/commands/branch.js.map +1 -0
  51. package/dist/cli/commands/build.d.ts +43 -0
  52. package/dist/cli/commands/build.d.ts.map +1 -0
  53. package/dist/cli/commands/build.js +138 -0
  54. package/dist/cli/commands/build.js.map +1 -0
  55. package/dist/cli/commands/dev.d.ts +78 -0
  56. package/dist/cli/commands/dev.d.ts.map +1 -0
  57. package/dist/cli/commands/dev.js +226 -0
  58. package/dist/cli/commands/dev.js.map +1 -0
  59. package/dist/cli/commands/init.d.ts +45 -0
  60. package/dist/cli/commands/init.d.ts.map +1 -0
  61. package/dist/cli/commands/init.js +277 -0
  62. package/dist/cli/commands/init.js.map +1 -0
  63. package/dist/cli/commands/init.test.d.ts +2 -0
  64. package/dist/cli/commands/init.test.d.ts.map +1 -0
  65. package/dist/cli/commands/init.test.js +158 -0
  66. package/dist/cli/commands/init.test.js.map +1 -0
  67. package/dist/cli/commands/login.d.ts +37 -0
  68. package/dist/cli/commands/login.d.ts.map +1 -0
  69. package/dist/cli/commands/login.js +64 -0
  70. package/dist/cli/commands/login.js.map +1 -0
  71. package/dist/cli/config.d.ts +114 -0
  72. package/dist/cli/config.d.ts.map +1 -0
  73. package/dist/cli/config.js +258 -0
  74. package/dist/cli/config.js.map +1 -0
  75. package/dist/cli/config.test.d.ts +2 -0
  76. package/dist/cli/config.test.d.ts.map +1 -0
  77. package/dist/cli/config.test.js +243 -0
  78. package/dist/cli/config.test.js.map +1 -0
  79. package/dist/cli/env.d.ts +29 -0
  80. package/dist/cli/env.d.ts.map +1 -0
  81. package/dist/cli/env.js +66 -0
  82. package/dist/cli/env.js.map +1 -0
  83. package/dist/cli/git.d.ts +29 -0
  84. package/dist/cli/git.d.ts.map +1 -0
  85. package/dist/cli/git.js +114 -0
  86. package/dist/cli/git.js.map +1 -0
  87. package/dist/cli/git.test.d.ts +2 -0
  88. package/dist/cli/git.test.d.ts.map +1 -0
  89. package/dist/cli/git.test.js +125 -0
  90. package/dist/cli/git.test.js.map +1 -0
  91. package/dist/cli/index.d.ts +7 -0
  92. package/dist/cli/index.d.ts.map +1 -0
  93. package/dist/cli/index.js +337 -0
  94. package/dist/cli/index.js.map +1 -0
  95. package/dist/cli/utils/schema-validation.d.ts +95 -0
  96. package/dist/cli/utils/schema-validation.d.ts.map +1 -0
  97. package/dist/cli/utils/schema-validation.js +175 -0
  98. package/dist/cli/utils/schema-validation.js.map +1 -0
  99. package/dist/cli/utils/schema-validation.test.d.ts +5 -0
  100. package/dist/cli/utils/schema-validation.test.d.ts.map +1 -0
  101. package/dist/cli/utils/schema-validation.test.js +173 -0
  102. package/dist/cli/utils/schema-validation.test.js.map +1 -0
  103. package/dist/client/base.d.ts +116 -0
  104. package/dist/client/base.d.ts.map +1 -0
  105. package/dist/client/base.js +328 -0
  106. package/dist/client/base.js.map +1 -0
  107. package/dist/client/types.d.ts +137 -0
  108. package/dist/client/types.d.ts.map +1 -0
  109. package/dist/client/types.js +43 -0
  110. package/dist/client/types.js.map +1 -0
  111. package/dist/generator/client.d.ts +44 -0
  112. package/dist/generator/client.d.ts.map +1 -0
  113. package/dist/generator/client.js +144 -0
  114. package/dist/generator/client.js.map +1 -0
  115. package/dist/generator/datasource.d.ts +57 -0
  116. package/dist/generator/datasource.d.ts.map +1 -0
  117. package/dist/generator/datasource.js +169 -0
  118. package/dist/generator/datasource.js.map +1 -0
  119. package/dist/generator/datasource.test.d.ts +2 -0
  120. package/dist/generator/datasource.test.d.ts.map +1 -0
  121. package/dist/generator/datasource.test.js +254 -0
  122. package/dist/generator/datasource.test.js.map +1 -0
  123. package/dist/generator/index.d.ts +131 -0
  124. package/dist/generator/index.d.ts.map +1 -0
  125. package/dist/generator/index.js +121 -0
  126. package/dist/generator/index.js.map +1 -0
  127. package/dist/generator/index.test.d.ts +2 -0
  128. package/dist/generator/index.test.d.ts.map +1 -0
  129. package/dist/generator/index.test.js +175 -0
  130. package/dist/generator/index.test.js.map +1 -0
  131. package/dist/generator/loader.d.ts +156 -0
  132. package/dist/generator/loader.d.ts.map +1 -0
  133. package/dist/generator/loader.js +295 -0
  134. package/dist/generator/loader.js.map +1 -0
  135. package/dist/generator/pipe.d.ts +72 -0
  136. package/dist/generator/pipe.d.ts.map +1 -0
  137. package/dist/generator/pipe.js +174 -0
  138. package/dist/generator/pipe.js.map +1 -0
  139. package/dist/generator/pipe.test.d.ts +2 -0
  140. package/dist/generator/pipe.test.d.ts.map +1 -0
  141. package/dist/generator/pipe.test.js +393 -0
  142. package/dist/generator/pipe.test.js.map +1 -0
  143. package/dist/index.d.ts +74 -0
  144. package/dist/index.d.ts.map +1 -0
  145. package/dist/index.js +73 -0
  146. package/dist/index.js.map +1 -0
  147. package/dist/infer/index.d.ts +202 -0
  148. package/dist/infer/index.d.ts.map +1 -0
  149. package/dist/infer/index.js +5 -0
  150. package/dist/infer/index.js.map +1 -0
  151. package/dist/schema/datasource.d.ts +135 -0
  152. package/dist/schema/datasource.d.ts.map +1 -0
  153. package/dist/schema/datasource.js +105 -0
  154. package/dist/schema/datasource.js.map +1 -0
  155. package/dist/schema/datasource.test.d.ts +2 -0
  156. package/dist/schema/datasource.test.d.ts.map +1 -0
  157. package/dist/schema/datasource.test.js +142 -0
  158. package/dist/schema/datasource.test.js.map +1 -0
  159. package/dist/schema/engines.d.ts +157 -0
  160. package/dist/schema/engines.d.ts.map +1 -0
  161. package/dist/schema/engines.js +155 -0
  162. package/dist/schema/engines.js.map +1 -0
  163. package/dist/schema/engines.test.d.ts +2 -0
  164. package/dist/schema/engines.test.d.ts.map +1 -0
  165. package/dist/schema/engines.test.js +221 -0
  166. package/dist/schema/engines.test.js.map +1 -0
  167. package/dist/schema/params.d.ts +106 -0
  168. package/dist/schema/params.d.ts.map +1 -0
  169. package/dist/schema/params.js +138 -0
  170. package/dist/schema/params.js.map +1 -0
  171. package/dist/schema/params.test.d.ts +2 -0
  172. package/dist/schema/params.test.d.ts.map +1 -0
  173. package/dist/schema/params.test.js +175 -0
  174. package/dist/schema/params.test.js.map +1 -0
  175. package/dist/schema/pipe.d.ts +436 -0
  176. package/dist/schema/pipe.d.ts.map +1 -0
  177. package/dist/schema/pipe.js +484 -0
  178. package/dist/schema/pipe.js.map +1 -0
  179. package/dist/schema/pipe.test.d.ts +2 -0
  180. package/dist/schema/pipe.test.d.ts.map +1 -0
  181. package/dist/schema/pipe.test.js +488 -0
  182. package/dist/schema/pipe.test.js.map +1 -0
  183. package/dist/schema/project.d.ts +202 -0
  184. package/dist/schema/project.d.ts.map +1 -0
  185. package/dist/schema/project.js +188 -0
  186. package/dist/schema/project.js.map +1 -0
  187. package/dist/schema/project.test.d.ts +2 -0
  188. package/dist/schema/project.test.d.ts.map +1 -0
  189. package/dist/schema/project.test.js +180 -0
  190. package/dist/schema/project.test.js.map +1 -0
  191. package/dist/schema/types.d.ts +140 -0
  192. package/dist/schema/types.d.ts.map +1 -0
  193. package/dist/schema/types.js +174 -0
  194. package/dist/schema/types.js.map +1 -0
  195. package/dist/schema/types.test.d.ts +2 -0
  196. package/dist/schema/types.test.d.ts.map +1 -0
  197. package/dist/schema/types.test.js +176 -0
  198. package/dist/schema/types.test.js.map +1 -0
  199. package/dist/test/handlers.d.ts +58 -0
  200. package/dist/test/handlers.d.ts.map +1 -0
  201. package/dist/test/handlers.js +62 -0
  202. package/dist/test/handlers.js.map +1 -0
  203. package/dist/test/setup.d.ts +5 -0
  204. package/dist/test/setup.d.ts.map +1 -0
  205. package/dist/test/setup.js +11 -0
  206. package/dist/test/setup.js.map +1 -0
  207. package/package.json +57 -0
  208. package/src/api/branches.test.ts +377 -0
  209. package/src/api/branches.ts +334 -0
  210. package/src/api/build.test.ts +216 -0
  211. package/src/api/build.ts +266 -0
  212. package/src/api/deploy.test.ts +193 -0
  213. package/src/api/deploy.ts +163 -0
  214. package/src/api/workspaces.test.ts +81 -0
  215. package/src/api/workspaces.ts +77 -0
  216. package/src/cli/auth.ts +358 -0
  217. package/src/cli/branch-store.test.ts +139 -0
  218. package/src/cli/branch-store.ts +137 -0
  219. package/src/cli/commands/branch.ts +306 -0
  220. package/src/cli/commands/build.ts +183 -0
  221. package/src/cli/commands/dev.ts +334 -0
  222. package/src/cli/commands/init.test.ts +249 -0
  223. package/src/cli/commands/init.ts +323 -0
  224. package/src/cli/commands/login.ts +98 -0
  225. package/src/cli/config.test.ts +359 -0
  226. package/src/cli/config.ts +335 -0
  227. package/src/cli/env.ts +86 -0
  228. package/src/cli/git.test.ts +147 -0
  229. package/src/cli/git.ts +125 -0
  230. package/src/cli/index.ts +382 -0
  231. package/src/cli/utils/schema-validation.test.ts +222 -0
  232. package/src/cli/utils/schema-validation.ts +272 -0
  233. package/src/client/base.ts +414 -0
  234. package/src/client/types.ts +165 -0
  235. package/src/generator/client.ts +194 -0
  236. package/src/generator/datasource.test.ts +297 -0
  237. package/src/generator/datasource.ts +217 -0
  238. package/src/generator/index.test.ts +209 -0
  239. package/src/generator/index.ts +203 -0
  240. package/src/generator/loader.ts +406 -0
  241. package/src/generator/pipe.test.ts +441 -0
  242. package/src/generator/pipe.ts +220 -0
  243. package/src/index.ts +191 -0
  244. package/src/infer/index.ts +247 -0
  245. package/src/schema/datasource.test.ts +187 -0
  246. package/src/schema/datasource.ts +195 -0
  247. package/src/schema/engines.test.ts +247 -0
  248. package/src/schema/engines.ts +271 -0
  249. package/src/schema/params.test.ts +208 -0
  250. package/src/schema/params.ts +249 -0
  251. package/src/schema/pipe.test.ts +588 -0
  252. package/src/schema/pipe.ts +832 -0
  253. package/src/schema/project.test.ts +236 -0
  254. package/src/schema/project.ts +394 -0
  255. package/src/schema/types.test.ts +212 -0
  256. package/src/schema/types.ts +366 -0
  257. package/src/test/handlers.ts +79 -0
  258. package/src/test/setup.ts +13 -0
@@ -0,0 +1,138 @@
1
+ /**
2
+ * Build command - generates and pushes resources to Tinybird
3
+ */
4
+ import { loadConfig } from "../config.js";
5
+ import { buildFromInclude } from "../../generator/index.js";
6
+ import { buildToTinybird } from "../../api/build.js";
7
+ import { deployToMain } from "../../api/deploy.js";
8
+ import { getOrCreateBranch } from "../../api/branches.js";
9
+ /**
10
+ * Run the build command
11
+ *
12
+ * Loads the schema, generates resources, and pushes to Tinybird API.
13
+ *
14
+ * @param options - Build options
15
+ * @returns Build command result
16
+ */
17
+ export async function runBuild(options = {}) {
18
+ const startTime = Date.now();
19
+ const cwd = options.cwd ?? process.cwd();
20
+ // Load config
21
+ let config;
22
+ try {
23
+ config = loadConfig(cwd);
24
+ }
25
+ catch (error) {
26
+ return {
27
+ success: false,
28
+ error: error.message,
29
+ durationMs: Date.now() - startTime,
30
+ };
31
+ }
32
+ // Build resources from include paths
33
+ let buildResult;
34
+ try {
35
+ buildResult = await buildFromInclude({
36
+ includePaths: config.include,
37
+ cwd: config.cwd,
38
+ });
39
+ }
40
+ catch (error) {
41
+ return {
42
+ success: false,
43
+ error: `Build failed: ${error.message}`,
44
+ durationMs: Date.now() - startTime,
45
+ };
46
+ }
47
+ // If dry run, return without pushing
48
+ if (options.dryRun) {
49
+ return {
50
+ success: true,
51
+ build: buildResult,
52
+ durationMs: Date.now() - startTime,
53
+ };
54
+ }
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
60
+ const debug = !!process.env.TINYBIRD_DEBUG;
61
+ if (debug) {
62
+ console.log(`[debug] isMainBranch: ${config.isMainBranch}`);
63
+ console.log(`[debug] tinybirdBranch: ${config.tinybirdBranch}`);
64
+ console.log(`[debug] tokenOverride: ${!!options.tokenOverride}`);
65
+ }
66
+ if (!config.isMainBranch && config.tinybirdBranch && !options.tokenOverride) {
67
+ if (debug) {
68
+ console.log(`[debug] Getting/creating Tinybird branch: ${config.tinybirdBranch}`);
69
+ }
70
+ try {
71
+ const tinybirdBranch = await getOrCreateBranch({
72
+ baseUrl: config.baseUrl,
73
+ token: config.token,
74
+ }, config.tinybirdBranch);
75
+ if (!tinybirdBranch.token) {
76
+ return {
77
+ success: false,
78
+ build: buildResult,
79
+ error: `Branch '${config.tinybirdBranch}' was created but no token was returned.`,
80
+ durationMs: Date.now() - startTime,
81
+ };
82
+ }
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
+ return {
91
+ success: false,
92
+ build: buildResult,
93
+ error: `Failed to get/create branch: ${error.message}`,
94
+ durationMs: Date.now() - startTime,
95
+ };
96
+ }
97
+ }
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);
106
+ }
107
+ else {
108
+ deployResult = await buildToTinybird({
109
+ baseUrl: config.baseUrl,
110
+ token: effectiveToken,
111
+ }, buildResult.resources);
112
+ }
113
+ }
114
+ catch (error) {
115
+ return {
116
+ success: false,
117
+ build: buildResult,
118
+ error: `Deploy failed: ${error.message}`,
119
+ durationMs: Date.now() - startTime,
120
+ };
121
+ }
122
+ if (!deployResult.success) {
123
+ return {
124
+ success: false,
125
+ build: buildResult,
126
+ deploy: deployResult,
127
+ error: deployResult.error,
128
+ durationMs: Date.now() - startTime,
129
+ };
130
+ }
131
+ return {
132
+ success: true,
133
+ build: buildResult,
134
+ deploy: deployResult,
135
+ durationMs: Date.now() - startTime,
136
+ };
137
+ }
138
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/cli/commands/build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Dev command - watch mode with automatic sync
3
+ */
4
+ import { type ResolvedConfig } from "../config.js";
5
+ import { type BuildCommandResult } from "./build.js";
6
+ import { type TinybirdBranch } from "../../api/branches.js";
7
+ import { type SchemaValidationResult } from "../utils/schema-validation.js";
8
+ /**
9
+ * Login result info
10
+ */
11
+ export interface LoginInfo {
12
+ /** Workspace name */
13
+ workspaceName?: string;
14
+ /** User email */
15
+ userEmail?: string;
16
+ }
17
+ /**
18
+ * Dev command options
19
+ */
20
+ export interface DevCommandOptions {
21
+ /** Working directory (defaults to cwd) */
22
+ cwd?: string;
23
+ /** Debounce delay in milliseconds (default: 100) */
24
+ debounce?: number;
25
+ /** Callback when build starts */
26
+ onBuildStart?: () => void;
27
+ /** Callback when build completes */
28
+ onBuildComplete?: (result: BuildCommandResult) => void;
29
+ /** Callback when an error occurs */
30
+ onError?: (error: Error) => void;
31
+ /** Callback when branch is created/detected */
32
+ onBranchReady?: (info: BranchReadyInfo) => void;
33
+ /** Callback when login is needed and completed */
34
+ onLoginComplete?: (info: LoginInfo) => void;
35
+ /** Callback when schema validation completes */
36
+ onSchemaValidation?: (result: SchemaValidationResult) => void;
37
+ }
38
+ /**
39
+ * Information about the branch being used
40
+ */
41
+ export interface BranchReadyInfo {
42
+ /** Git branch name */
43
+ gitBranch: string | null;
44
+ /** Whether we're on the main branch */
45
+ isMainBranch: boolean;
46
+ /** Tinybird branch info (null if on main) */
47
+ tinybirdBranch?: TinybirdBranch;
48
+ /** Whether the branch was newly created */
49
+ wasCreated?: boolean;
50
+ }
51
+ /**
52
+ * Dev command controller
53
+ */
54
+ export interface DevController {
55
+ /** Stop watching and clean up */
56
+ stop: () => Promise<void>;
57
+ /** Trigger a manual rebuild */
58
+ rebuild: () => Promise<BuildCommandResult>;
59
+ /** The configuration being used */
60
+ config: ResolvedConfig;
61
+ /** The effective token (branch token or main token) */
62
+ effectiveToken: string;
63
+ /** Branch info */
64
+ branchInfo: BranchReadyInfo;
65
+ }
66
+ /**
67
+ * Run the dev command
68
+ *
69
+ * Watches for file changes and automatically rebuilds and pushes to Tinybird.
70
+ * Automatically manages Tinybird branches based on git branch:
71
+ * - Main branch: uses workspace token and /v1/deploy
72
+ * - Feature branches: creates/reuses Tinybird branch and uses /v1/build
73
+ *
74
+ * @param options - Dev options
75
+ * @returns Dev controller
76
+ */
77
+ export declare function runDev(options?: DevCommandOptions): Promise<DevController>;
78
+ //# sourceMappingURL=dev.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,226 @@
1
+ /**
2
+ * Dev command - watch mode with automatic sync
3
+ */
4
+ import * as path from "path";
5
+ import { watch } from "chokidar";
6
+ import { loadConfig, configExists, findConfigFile, hasValidToken, updateConfig } from "../config.js";
7
+ import { runBuild } from "./build.js";
8
+ import { getOrCreateBranch } from "../../api/branches.js";
9
+ import { browserLogin } from "../auth.js";
10
+ import { saveTinybirdToken } from "../env.js";
11
+ import { validatePipeSchemas, } from "../utils/schema-validation.js";
12
+ /**
13
+ * Run the dev command
14
+ *
15
+ * Watches for file changes and automatically rebuilds and pushes to Tinybird.
16
+ * Automatically manages Tinybird branches based on git branch:
17
+ * - Main branch: uses workspace token and /v1/deploy
18
+ * - Feature branches: creates/reuses Tinybird branch and uses /v1/build
19
+ *
20
+ * @param options - Dev options
21
+ * @returns Dev controller
22
+ */
23
+ export async function runDev(options = {}) {
24
+ const cwd = options.cwd ?? process.cwd();
25
+ const debounceMs = options.debounce ?? 100;
26
+ // Check if project is initialized
27
+ if (!configExists(cwd)) {
28
+ throw new Error("No tinybird.json found. Run 'npx tinybird init' to initialize a project.");
29
+ }
30
+ // Check if authentication is set up, if not trigger login
31
+ if (!hasValidToken(cwd)) {
32
+ console.log("No authentication found. Starting login flow...\n");
33
+ const authResult = await browserLogin();
34
+ if (!authResult.success || !authResult.token) {
35
+ throw new Error(authResult.error ?? "Login failed. Run 'npx tinybird login' to authenticate.");
36
+ }
37
+ // Find the config file (may be in parent directory)
38
+ const configPath = findConfigFile(cwd);
39
+ if (!configPath) {
40
+ throw new Error("No tinybird.json found. Run 'npx tinybird init' first.");
41
+ }
42
+ // Save token to .env.local (in same directory as tinybird.json)
43
+ const configDir = path.dirname(configPath);
44
+ saveTinybirdToken(configDir, authResult.token);
45
+ // Update baseUrl in tinybird.json if it changed
46
+ if (authResult.baseUrl) {
47
+ updateConfig(configPath, {
48
+ baseUrl: authResult.baseUrl,
49
+ });
50
+ }
51
+ // Set the token in the environment for this session
52
+ process.env.TINYBIRD_TOKEN = authResult.token;
53
+ options.onLoginComplete?.({
54
+ workspaceName: authResult.workspaceName,
55
+ userEmail: authResult.userEmail,
56
+ });
57
+ }
58
+ // Load config (now should have valid token)
59
+ let config;
60
+ try {
61
+ config = loadConfig(cwd);
62
+ }
63
+ catch (error) {
64
+ throw error;
65
+ }
66
+ // Determine effective token based on git branch
67
+ let effectiveToken = config.token;
68
+ let branchInfo = {
69
+ gitBranch: config.gitBranch,
70
+ isMainBranch: config.isMainBranch,
71
+ };
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;
86
+ branchInfo = {
87
+ gitBranch: config.gitBranch, // Original git branch name for display
88
+ isMainBranch: false,
89
+ tinybirdBranch,
90
+ wasCreated: tinybirdBranch.wasCreated ?? false,
91
+ };
92
+ }
93
+ // Notify about branch readiness
94
+ options.onBranchReady?.(branchInfo);
95
+ // Get directories to watch from include paths
96
+ const watchDirs = new Set();
97
+ for (const includePath of config.include) {
98
+ const absolutePath = path.isAbsolute(includePath)
99
+ ? includePath
100
+ : path.resolve(config.cwd, includePath);
101
+ watchDirs.add(path.dirname(absolutePath));
102
+ }
103
+ // Debounce state
104
+ let debounceTimer = null;
105
+ let isBuilding = false;
106
+ let pendingBuild = false;
107
+ // Build function
108
+ async function doBuild() {
109
+ if (isBuilding) {
110
+ pendingBuild = true;
111
+ return { success: false, error: "Build already in progress", durationMs: 0 };
112
+ }
113
+ isBuilding = true;
114
+ options.onBuildStart?.();
115
+ try {
116
+ const result = await runBuild({
117
+ cwd: config.cwd,
118
+ tokenOverride: effectiveToken,
119
+ useDeployEndpoint: config.isMainBranch,
120
+ });
121
+ options.onBuildComplete?.(result);
122
+ // Validate pipe schemas after successful deploy
123
+ if (result.success &&
124
+ result.build?.entities &&
125
+ result.deploy?.pipes &&
126
+ options.onSchemaValidation) {
127
+ // Get changed pipes from deploy result
128
+ const changedPipes = [
129
+ ...result.deploy.pipes.created,
130
+ ...result.deploy.pipes.changed,
131
+ ];
132
+ if (changedPipes.length > 0) {
133
+ try {
134
+ const validation = await validatePipeSchemas({
135
+ entities: result.build.entities,
136
+ pipeNames: changedPipes,
137
+ baseUrl: config.baseUrl,
138
+ token: effectiveToken,
139
+ });
140
+ options.onSchemaValidation(validation);
141
+ }
142
+ catch (validationError) {
143
+ // Don't fail the build due to validation errors
144
+ options.onError?.(validationError);
145
+ }
146
+ }
147
+ }
148
+ return result;
149
+ }
150
+ catch (error) {
151
+ const result = {
152
+ success: false,
153
+ error: error.message,
154
+ durationMs: 0,
155
+ };
156
+ options.onBuildComplete?.(result);
157
+ return result;
158
+ }
159
+ finally {
160
+ isBuilding = false;
161
+ // If there was a pending build, trigger it
162
+ if (pendingBuild) {
163
+ pendingBuild = false;
164
+ scheduleBuild();
165
+ }
166
+ }
167
+ }
168
+ // Schedule a debounced build
169
+ function scheduleBuild() {
170
+ if (debounceTimer) {
171
+ clearTimeout(debounceTimer);
172
+ }
173
+ debounceTimer = setTimeout(() => {
174
+ debounceTimer = null;
175
+ doBuild().catch((error) => {
176
+ options.onError?.(error);
177
+ });
178
+ }, debounceMs);
179
+ }
180
+ // Set up file watcher for all include directories
181
+ const watcher = watch(Array.from(watchDirs), {
182
+ ignored: [
183
+ /(^|[\/\\])\../, // Ignore dotfiles
184
+ /node_modules/,
185
+ /\.tinybird-schema-.*\.mjs$/, // Ignore temporary bundle files
186
+ /\.tinybird-entities-.*\.mjs$/, // Ignore temporary entity files
187
+ ],
188
+ persistent: true,
189
+ ignoreInitial: true,
190
+ });
191
+ // Watch for changes
192
+ watcher.on("change", (filePath) => {
193
+ if (filePath.endsWith(".ts") || filePath.endsWith(".js")) {
194
+ scheduleBuild();
195
+ }
196
+ });
197
+ watcher.on("add", (filePath) => {
198
+ if (filePath.endsWith(".ts") || filePath.endsWith(".js")) {
199
+ scheduleBuild();
200
+ }
201
+ });
202
+ watcher.on("unlink", (filePath) => {
203
+ if (filePath.endsWith(".ts") || filePath.endsWith(".js")) {
204
+ scheduleBuild();
205
+ }
206
+ });
207
+ watcher.on("error", (error) => {
208
+ options.onError?.(error instanceof Error ? error : new Error(String(error)));
209
+ });
210
+ // Do initial build
211
+ await doBuild();
212
+ // Return controller
213
+ return {
214
+ stop: async () => {
215
+ if (debounceTimer) {
216
+ clearTimeout(debounceTimer);
217
+ }
218
+ await watcher.close();
219
+ },
220
+ rebuild: doBuild,
221
+ config,
222
+ effectiveToken,
223
+ branchInfo,
224
+ };
225
+ }
226
+ //# sourceMappingURL=dev.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../../src/cli/commands/dev.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Init command - scaffolds a new Tinybird TypeScript project
3
+ */
4
+ /**
5
+ * Init command options
6
+ */
7
+ export interface InitOptions {
8
+ /** Working directory (defaults to cwd) */
9
+ cwd?: string;
10
+ /** Force overwrite existing files */
11
+ force?: boolean;
12
+ /** Skip the login flow */
13
+ skipLogin?: boolean;
14
+ }
15
+ /**
16
+ * Init command result
17
+ */
18
+ export interface InitResult {
19
+ /** Whether initialization was successful */
20
+ success: boolean;
21
+ /** Files that were created */
22
+ created: string[];
23
+ /** Files that were skipped (already exist) */
24
+ skipped: string[];
25
+ /** Error message if failed */
26
+ error?: string;
27
+ /** Whether login was completed */
28
+ loggedIn?: boolean;
29
+ /** Workspace name after login */
30
+ workspaceName?: string;
31
+ /** User email after login */
32
+ userEmail?: string;
33
+ }
34
+ /**
35
+ * Run the init command
36
+ *
37
+ * Creates:
38
+ * - tinybird.json in the project root
39
+ * - src/tinybird/ folder with datasources.ts, pipes.ts, and client.ts
40
+ *
41
+ * @param options - Init options
42
+ * @returns Init result
43
+ */
44
+ export declare function runInit(options?: InitOptions): Promise<InitResult>;
45
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +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,CAwJ5E"}