@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.
- package/README.md +518 -0
- package/bin/tinybird.js +7 -0
- package/dist/api/branches.d.ts +98 -0
- package/dist/api/branches.d.ts.map +1 -0
- package/dist/api/branches.js +203 -0
- package/dist/api/branches.js.map +1 -0
- package/dist/api/branches.test.d.ts +2 -0
- package/dist/api/branches.test.d.ts.map +1 -0
- package/dist/api/branches.test.js +286 -0
- package/dist/api/branches.test.js.map +1 -0
- package/dist/api/build.d.ts +130 -0
- package/dist/api/build.d.ts.map +1 -0
- package/dist/api/build.js +143 -0
- package/dist/api/build.js.map +1 -0
- package/dist/api/build.test.d.ts +2 -0
- package/dist/api/build.test.d.ts.map +1 -0
- package/dist/api/build.test.js +138 -0
- package/dist/api/build.test.js.map +1 -0
- package/dist/api/deploy.d.ts +39 -0
- package/dist/api/deploy.d.ts.map +1 -0
- package/dist/api/deploy.js +135 -0
- package/dist/api/deploy.js.map +1 -0
- package/dist/api/deploy.test.d.ts +2 -0
- package/dist/api/deploy.test.d.ts.map +1 -0
- package/dist/api/deploy.test.js +118 -0
- package/dist/api/deploy.test.js.map +1 -0
- package/dist/api/workspaces.d.ts +46 -0
- package/dist/api/workspaces.d.ts.map +1 -0
- package/dist/api/workspaces.js +39 -0
- package/dist/api/workspaces.js.map +1 -0
- package/dist/api/workspaces.test.d.ts +2 -0
- package/dist/api/workspaces.test.d.ts.map +1 -0
- package/dist/api/workspaces.test.js +65 -0
- package/dist/api/workspaces.test.js.map +1 -0
- package/dist/cli/auth.d.ts +86 -0
- package/dist/cli/auth.d.ts.map +1 -0
- package/dist/cli/auth.js +284 -0
- package/dist/cli/auth.js.map +1 -0
- package/dist/cli/branch-store.d.ts +53 -0
- package/dist/cli/branch-store.d.ts.map +1 -0
- package/dist/cli/branch-store.js +91 -0
- package/dist/cli/branch-store.js.map +1 -0
- package/dist/cli/branch-store.test.d.ts +2 -0
- package/dist/cli/branch-store.test.d.ts.map +1 -0
- package/dist/cli/branch-store.test.js +115 -0
- package/dist/cli/branch-store.test.js.map +1 -0
- package/dist/cli/commands/branch.d.ts +82 -0
- package/dist/cli/commands/branch.d.ts.map +1 -0
- package/dist/cli/commands/branch.js +215 -0
- package/dist/cli/commands/branch.js.map +1 -0
- package/dist/cli/commands/build.d.ts +43 -0
- package/dist/cli/commands/build.d.ts.map +1 -0
- package/dist/cli/commands/build.js +138 -0
- package/dist/cli/commands/build.js.map +1 -0
- package/dist/cli/commands/dev.d.ts +78 -0
- package/dist/cli/commands/dev.d.ts.map +1 -0
- package/dist/cli/commands/dev.js +226 -0
- package/dist/cli/commands/dev.js.map +1 -0
- package/dist/cli/commands/init.d.ts +45 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +277 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/init.test.d.ts +2 -0
- package/dist/cli/commands/init.test.d.ts.map +1 -0
- package/dist/cli/commands/init.test.js +158 -0
- package/dist/cli/commands/init.test.js.map +1 -0
- package/dist/cli/commands/login.d.ts +37 -0
- package/dist/cli/commands/login.d.ts.map +1 -0
- package/dist/cli/commands/login.js +64 -0
- package/dist/cli/commands/login.js.map +1 -0
- package/dist/cli/config.d.ts +114 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/config.js +258 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/config.test.d.ts +2 -0
- package/dist/cli/config.test.d.ts.map +1 -0
- package/dist/cli/config.test.js +243 -0
- package/dist/cli/config.test.js.map +1 -0
- package/dist/cli/env.d.ts +29 -0
- package/dist/cli/env.d.ts.map +1 -0
- package/dist/cli/env.js +66 -0
- package/dist/cli/env.js.map +1 -0
- package/dist/cli/git.d.ts +29 -0
- package/dist/cli/git.d.ts.map +1 -0
- package/dist/cli/git.js +114 -0
- package/dist/cli/git.js.map +1 -0
- package/dist/cli/git.test.d.ts +2 -0
- package/dist/cli/git.test.d.ts.map +1 -0
- package/dist/cli/git.test.js +125 -0
- package/dist/cli/git.test.js.map +1 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +337 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/utils/schema-validation.d.ts +95 -0
- package/dist/cli/utils/schema-validation.d.ts.map +1 -0
- package/dist/cli/utils/schema-validation.js +175 -0
- package/dist/cli/utils/schema-validation.js.map +1 -0
- package/dist/cli/utils/schema-validation.test.d.ts +5 -0
- package/dist/cli/utils/schema-validation.test.d.ts.map +1 -0
- package/dist/cli/utils/schema-validation.test.js +173 -0
- package/dist/cli/utils/schema-validation.test.js.map +1 -0
- package/dist/client/base.d.ts +116 -0
- package/dist/client/base.d.ts.map +1 -0
- package/dist/client/base.js +328 -0
- package/dist/client/base.js.map +1 -0
- package/dist/client/types.d.ts +137 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +43 -0
- package/dist/client/types.js.map +1 -0
- package/dist/generator/client.d.ts +44 -0
- package/dist/generator/client.d.ts.map +1 -0
- package/dist/generator/client.js +144 -0
- package/dist/generator/client.js.map +1 -0
- package/dist/generator/datasource.d.ts +57 -0
- package/dist/generator/datasource.d.ts.map +1 -0
- package/dist/generator/datasource.js +169 -0
- package/dist/generator/datasource.js.map +1 -0
- package/dist/generator/datasource.test.d.ts +2 -0
- package/dist/generator/datasource.test.d.ts.map +1 -0
- package/dist/generator/datasource.test.js +254 -0
- package/dist/generator/datasource.test.js.map +1 -0
- package/dist/generator/index.d.ts +131 -0
- package/dist/generator/index.d.ts.map +1 -0
- package/dist/generator/index.js +121 -0
- package/dist/generator/index.js.map +1 -0
- package/dist/generator/index.test.d.ts +2 -0
- package/dist/generator/index.test.d.ts.map +1 -0
- package/dist/generator/index.test.js +175 -0
- package/dist/generator/index.test.js.map +1 -0
- package/dist/generator/loader.d.ts +156 -0
- package/dist/generator/loader.d.ts.map +1 -0
- package/dist/generator/loader.js +295 -0
- package/dist/generator/loader.js.map +1 -0
- package/dist/generator/pipe.d.ts +72 -0
- package/dist/generator/pipe.d.ts.map +1 -0
- package/dist/generator/pipe.js +174 -0
- package/dist/generator/pipe.js.map +1 -0
- package/dist/generator/pipe.test.d.ts +2 -0
- package/dist/generator/pipe.test.d.ts.map +1 -0
- package/dist/generator/pipe.test.js +393 -0
- package/dist/generator/pipe.test.js.map +1 -0
- package/dist/index.d.ts +74 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +73 -0
- package/dist/index.js.map +1 -0
- package/dist/infer/index.d.ts +202 -0
- package/dist/infer/index.d.ts.map +1 -0
- package/dist/infer/index.js +5 -0
- package/dist/infer/index.js.map +1 -0
- package/dist/schema/datasource.d.ts +135 -0
- package/dist/schema/datasource.d.ts.map +1 -0
- package/dist/schema/datasource.js +105 -0
- package/dist/schema/datasource.js.map +1 -0
- package/dist/schema/datasource.test.d.ts +2 -0
- package/dist/schema/datasource.test.d.ts.map +1 -0
- package/dist/schema/datasource.test.js +142 -0
- package/dist/schema/datasource.test.js.map +1 -0
- package/dist/schema/engines.d.ts +157 -0
- package/dist/schema/engines.d.ts.map +1 -0
- package/dist/schema/engines.js +155 -0
- package/dist/schema/engines.js.map +1 -0
- package/dist/schema/engines.test.d.ts +2 -0
- package/dist/schema/engines.test.d.ts.map +1 -0
- package/dist/schema/engines.test.js +221 -0
- package/dist/schema/engines.test.js.map +1 -0
- package/dist/schema/params.d.ts +106 -0
- package/dist/schema/params.d.ts.map +1 -0
- package/dist/schema/params.js +138 -0
- package/dist/schema/params.js.map +1 -0
- package/dist/schema/params.test.d.ts +2 -0
- package/dist/schema/params.test.d.ts.map +1 -0
- package/dist/schema/params.test.js +175 -0
- package/dist/schema/params.test.js.map +1 -0
- package/dist/schema/pipe.d.ts +436 -0
- package/dist/schema/pipe.d.ts.map +1 -0
- package/dist/schema/pipe.js +484 -0
- package/dist/schema/pipe.js.map +1 -0
- package/dist/schema/pipe.test.d.ts +2 -0
- package/dist/schema/pipe.test.d.ts.map +1 -0
- package/dist/schema/pipe.test.js +488 -0
- package/dist/schema/pipe.test.js.map +1 -0
- package/dist/schema/project.d.ts +202 -0
- package/dist/schema/project.d.ts.map +1 -0
- package/dist/schema/project.js +188 -0
- package/dist/schema/project.js.map +1 -0
- package/dist/schema/project.test.d.ts +2 -0
- package/dist/schema/project.test.d.ts.map +1 -0
- package/dist/schema/project.test.js +180 -0
- package/dist/schema/project.test.js.map +1 -0
- package/dist/schema/types.d.ts +140 -0
- package/dist/schema/types.d.ts.map +1 -0
- package/dist/schema/types.js +174 -0
- package/dist/schema/types.js.map +1 -0
- package/dist/schema/types.test.d.ts +2 -0
- package/dist/schema/types.test.d.ts.map +1 -0
- package/dist/schema/types.test.js +176 -0
- package/dist/schema/types.test.js.map +1 -0
- package/dist/test/handlers.d.ts +58 -0
- package/dist/test/handlers.d.ts.map +1 -0
- package/dist/test/handlers.js +62 -0
- package/dist/test/handlers.js.map +1 -0
- package/dist/test/setup.d.ts +5 -0
- package/dist/test/setup.d.ts.map +1 -0
- package/dist/test/setup.js +11 -0
- package/dist/test/setup.js.map +1 -0
- package/package.json +57 -0
- package/src/api/branches.test.ts +377 -0
- package/src/api/branches.ts +334 -0
- package/src/api/build.test.ts +216 -0
- package/src/api/build.ts +266 -0
- package/src/api/deploy.test.ts +193 -0
- package/src/api/deploy.ts +163 -0
- package/src/api/workspaces.test.ts +81 -0
- package/src/api/workspaces.ts +77 -0
- package/src/cli/auth.ts +358 -0
- package/src/cli/branch-store.test.ts +139 -0
- package/src/cli/branch-store.ts +137 -0
- package/src/cli/commands/branch.ts +306 -0
- package/src/cli/commands/build.ts +183 -0
- package/src/cli/commands/dev.ts +334 -0
- package/src/cli/commands/init.test.ts +249 -0
- package/src/cli/commands/init.ts +323 -0
- package/src/cli/commands/login.ts +98 -0
- package/src/cli/config.test.ts +359 -0
- package/src/cli/config.ts +335 -0
- package/src/cli/env.ts +86 -0
- package/src/cli/git.test.ts +147 -0
- package/src/cli/git.ts +125 -0
- package/src/cli/index.ts +382 -0
- package/src/cli/utils/schema-validation.test.ts +222 -0
- package/src/cli/utils/schema-validation.ts +272 -0
- package/src/client/base.ts +414 -0
- package/src/client/types.ts +165 -0
- package/src/generator/client.ts +194 -0
- package/src/generator/datasource.test.ts +297 -0
- package/src/generator/datasource.ts +217 -0
- package/src/generator/index.test.ts +209 -0
- package/src/generator/index.ts +203 -0
- package/src/generator/loader.ts +406 -0
- package/src/generator/pipe.test.ts +441 -0
- package/src/generator/pipe.ts +220 -0
- package/src/index.ts +191 -0
- package/src/infer/index.ts +247 -0
- package/src/schema/datasource.test.ts +187 -0
- package/src/schema/datasource.ts +195 -0
- package/src/schema/engines.test.ts +247 -0
- package/src/schema/engines.ts +271 -0
- package/src/schema/params.test.ts +208 -0
- package/src/schema/params.ts +249 -0
- package/src/schema/pipe.test.ts +588 -0
- package/src/schema/pipe.ts +832 -0
- package/src/schema/project.test.ts +236 -0
- package/src/schema/project.ts +394 -0
- package/src/schema/types.test.ts +212 -0
- package/src/schema/types.ts +366 -0
- package/src/test/handlers.ts +79 -0
- 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"}
|