@tinybirdco/sdk 0.0.41 → 0.0.43
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/LICENSE +7 -0
- package/README.md +29 -3
- package/dist/api/resources.d.ts +72 -1
- package/dist/api/resources.d.ts.map +1 -1
- package/dist/api/resources.js +197 -1
- package/dist/api/resources.js.map +1 -1
- package/dist/api/resources.test.js +82 -1
- package/dist/api/resources.test.js.map +1 -1
- package/dist/cli/commands/migrate.d.ts +11 -0
- package/dist/cli/commands/migrate.d.ts.map +1 -0
- package/dist/cli/commands/migrate.js +196 -0
- package/dist/cli/commands/migrate.js.map +1 -0
- package/dist/cli/commands/migrate.test.d.ts +2 -0
- package/dist/cli/commands/migrate.test.d.ts.map +1 -0
- package/dist/cli/commands/migrate.test.js +473 -0
- package/dist/cli/commands/migrate.test.js.map +1 -0
- package/dist/cli/commands/pull.d.ts +59 -0
- package/dist/cli/commands/pull.d.ts.map +1 -0
- package/dist/cli/commands/pull.js +104 -0
- package/dist/cli/commands/pull.js.map +1 -0
- package/dist/cli/commands/pull.test.d.ts +2 -0
- package/dist/cli/commands/pull.test.d.ts.map +1 -0
- package/dist/cli/commands/pull.test.js +140 -0
- package/dist/cli/commands/pull.test.js.map +1 -0
- package/dist/cli/config.d.ts +10 -0
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +22 -0
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/index.js +77 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/generator/client.js +2 -2
- package/dist/generator/client.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/migrate/discovery.d.ts +7 -0
- package/dist/migrate/discovery.d.ts.map +1 -0
- package/dist/migrate/discovery.js +125 -0
- package/dist/migrate/discovery.js.map +1 -0
- package/dist/migrate/emit-ts.d.ts +4 -0
- package/dist/migrate/emit-ts.d.ts.map +1 -0
- package/dist/migrate/emit-ts.js +387 -0
- package/dist/migrate/emit-ts.js.map +1 -0
- package/dist/migrate/parse-connection.d.ts +3 -0
- package/dist/migrate/parse-connection.d.ts.map +1 -0
- package/dist/migrate/parse-connection.js +74 -0
- package/dist/migrate/parse-connection.js.map +1 -0
- package/dist/migrate/parse-datasource.d.ts +3 -0
- package/dist/migrate/parse-datasource.d.ts.map +1 -0
- package/dist/migrate/parse-datasource.js +324 -0
- package/dist/migrate/parse-datasource.js.map +1 -0
- package/dist/migrate/parse-pipe.d.ts +3 -0
- package/dist/migrate/parse-pipe.d.ts.map +1 -0
- package/dist/migrate/parse-pipe.js +332 -0
- package/dist/migrate/parse-pipe.js.map +1 -0
- package/dist/migrate/parse.d.ts +3 -0
- package/dist/migrate/parse.d.ts.map +1 -0
- package/dist/migrate/parse.js +18 -0
- package/dist/migrate/parse.js.map +1 -0
- package/dist/migrate/parser-utils.d.ts +20 -0
- package/dist/migrate/parser-utils.d.ts.map +1 -0
- package/dist/migrate/parser-utils.js +130 -0
- package/dist/migrate/parser-utils.js.map +1 -0
- package/dist/migrate/types.d.ts +110 -0
- package/dist/migrate/types.d.ts.map +1 -0
- package/dist/migrate/types.js +2 -0
- package/dist/migrate/types.js.map +1 -0
- package/dist/schema/project.d.ts +20 -9
- package/dist/schema/project.d.ts.map +1 -1
- package/dist/schema/project.js +127 -136
- package/dist/schema/project.js.map +1 -1
- package/dist/schema/project.test.js +22 -0
- package/dist/schema/project.test.js.map +1 -1
- package/package.json +2 -1
- package/src/api/resources.test.ts +121 -0
- package/src/api/resources.ts +292 -1
- package/src/cli/commands/migrate.test.ts +564 -0
- package/src/cli/commands/migrate.ts +240 -0
- package/src/cli/commands/pull.test.ts +173 -0
- package/src/cli/commands/pull.ts +177 -0
- package/src/cli/config.ts +26 -0
- package/src/cli/index.ts +112 -0
- package/src/generator/client.ts +2 -2
- package/src/index.ts +1 -1
- package/src/migrate/discovery.ts +151 -0
- package/src/migrate/emit-ts.ts +469 -0
- package/src/migrate/parse-connection.ts +128 -0
- package/src/migrate/parse-datasource.ts +453 -0
- package/src/migrate/parse-pipe.ts +518 -0
- package/src/migrate/parse.ts +20 -0
- package/src/migrate/parser-utils.ts +160 -0
- package/src/migrate/types.ts +125 -0
- package/src/schema/project.test.ts +28 -0
- package/src/schema/project.ts +173 -181
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pull command - downloads all cloud resources as Tinybird datafiles
|
|
3
|
+
*/
|
|
4
|
+
import { type ResourceFileType } from "../../api/resources.js";
|
|
5
|
+
/**
|
|
6
|
+
* Pull command options
|
|
7
|
+
*/
|
|
8
|
+
export interface PullCommandOptions {
|
|
9
|
+
/** Working directory (defaults to cwd) */
|
|
10
|
+
cwd?: string;
|
|
11
|
+
/** Output directory for pulled files (defaults to current directory) */
|
|
12
|
+
outputDir?: string;
|
|
13
|
+
/** Whether to overwrite existing files (defaults to false) */
|
|
14
|
+
overwrite?: boolean;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Single file written by pull
|
|
18
|
+
*/
|
|
19
|
+
export interface PulledFileResult {
|
|
20
|
+
/** Resource name */
|
|
21
|
+
name: string;
|
|
22
|
+
/** Resource type */
|
|
23
|
+
type: ResourceFileType;
|
|
24
|
+
/** Filename written */
|
|
25
|
+
filename: string;
|
|
26
|
+
/** Absolute path written */
|
|
27
|
+
path: string;
|
|
28
|
+
/** Path relative to cwd */
|
|
29
|
+
relativePath: string;
|
|
30
|
+
/** Whether this file was newly created or overwritten */
|
|
31
|
+
status: "created" | "overwritten";
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Pull command result
|
|
35
|
+
*/
|
|
36
|
+
export interface PullCommandResult {
|
|
37
|
+
/** Whether pull was successful */
|
|
38
|
+
success: boolean;
|
|
39
|
+
/** Output directory used */
|
|
40
|
+
outputDir?: string;
|
|
41
|
+
/** Files written */
|
|
42
|
+
files?: PulledFileResult[];
|
|
43
|
+
/** Pull statistics */
|
|
44
|
+
stats?: {
|
|
45
|
+
datasources: number;
|
|
46
|
+
pipes: number;
|
|
47
|
+
connections: number;
|
|
48
|
+
total: number;
|
|
49
|
+
};
|
|
50
|
+
/** Error message if failed */
|
|
51
|
+
error?: string;
|
|
52
|
+
/** Duration in milliseconds */
|
|
53
|
+
durationMs: number;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Pull all resources from Tinybird and write them as datafiles
|
|
57
|
+
*/
|
|
58
|
+
export declare function runPull(options?: PullCommandOptions): Promise<PullCommandResult>;
|
|
59
|
+
//# sourceMappingURL=pull.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/pull.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,wBAAwB,CAAC;AAEhC;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,IAAI,EAAE,gBAAgB,CAAC;IACvB,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,MAAM,EAAE,SAAS,GAAG,aAAa,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,kCAAkC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB;IACpB,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC3B,sBAAsB;IACtB,KAAK,CAAC,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAC;CACpB;AASD;;GAEG;AACH,wBAAsB,OAAO,CAC3B,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CAiG5B"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pull command - downloads all cloud resources as Tinybird datafiles
|
|
3
|
+
*/
|
|
4
|
+
import * as fs from "node:fs/promises";
|
|
5
|
+
import * as path from "node:path";
|
|
6
|
+
import { loadConfigAsync } from "../config.js";
|
|
7
|
+
import { pullAllResourceFiles, } from "../../api/resources.js";
|
|
8
|
+
/**
|
|
9
|
+
* Convert grouped resources to a flat file list
|
|
10
|
+
*/
|
|
11
|
+
function flattenResources(resources) {
|
|
12
|
+
return [...resources.datasources, ...resources.pipes, ...resources.connections];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Pull all resources from Tinybird and write them as datafiles
|
|
16
|
+
*/
|
|
17
|
+
export async function runPull(options = {}) {
|
|
18
|
+
const startTime = Date.now();
|
|
19
|
+
const cwd = options.cwd ?? process.cwd();
|
|
20
|
+
const outputDir = path.resolve(cwd, options.outputDir ?? ".");
|
|
21
|
+
const overwrite = options.overwrite ?? false;
|
|
22
|
+
let config;
|
|
23
|
+
try {
|
|
24
|
+
config = await loadConfigAsync(cwd);
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
return {
|
|
28
|
+
success: false,
|
|
29
|
+
error: error.message,
|
|
30
|
+
durationMs: Date.now() - startTime,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
let pulled;
|
|
34
|
+
try {
|
|
35
|
+
pulled = await pullAllResourceFiles({
|
|
36
|
+
baseUrl: config.baseUrl,
|
|
37
|
+
token: config.token,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
return {
|
|
42
|
+
success: false,
|
|
43
|
+
error: `Pull failed: ${error.message}`,
|
|
44
|
+
durationMs: Date.now() - startTime,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
const allFiles = flattenResources(pulled).sort((a, b) => a.filename.localeCompare(b.filename));
|
|
48
|
+
try {
|
|
49
|
+
await fs.mkdir(outputDir, { recursive: true });
|
|
50
|
+
const writtenFiles = [];
|
|
51
|
+
for (const file of allFiles) {
|
|
52
|
+
const absolutePath = path.join(outputDir, file.filename);
|
|
53
|
+
let existed = false;
|
|
54
|
+
try {
|
|
55
|
+
await fs.access(absolutePath);
|
|
56
|
+
existed = true;
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
existed = false;
|
|
60
|
+
}
|
|
61
|
+
await fs.writeFile(absolutePath, file.content, {
|
|
62
|
+
encoding: "utf-8",
|
|
63
|
+
flag: overwrite ? "w" : "wx",
|
|
64
|
+
});
|
|
65
|
+
writtenFiles.push({
|
|
66
|
+
name: file.name,
|
|
67
|
+
type: file.type,
|
|
68
|
+
filename: file.filename,
|
|
69
|
+
path: absolutePath,
|
|
70
|
+
relativePath: path.relative(cwd, absolutePath),
|
|
71
|
+
status: existed ? "overwritten" : "created",
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
return {
|
|
75
|
+
success: true,
|
|
76
|
+
outputDir,
|
|
77
|
+
files: writtenFiles,
|
|
78
|
+
stats: {
|
|
79
|
+
datasources: pulled.datasources.length,
|
|
80
|
+
pipes: pulled.pipes.length,
|
|
81
|
+
connections: pulled.connections.length,
|
|
82
|
+
total: writtenFiles.length,
|
|
83
|
+
},
|
|
84
|
+
durationMs: Date.now() - startTime,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
const err = error;
|
|
89
|
+
if (err.code === "EEXIST") {
|
|
90
|
+
return {
|
|
91
|
+
success: false,
|
|
92
|
+
error: `File already exists: ${err.path ?? "unknown"}. ` +
|
|
93
|
+
"Use --force to overwrite existing files.",
|
|
94
|
+
durationMs: Date.now() - startTime,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
return {
|
|
98
|
+
success: false,
|
|
99
|
+
error: `Failed to write files: ${error.message}`,
|
|
100
|
+
durationMs: Date.now() - startTime,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=pull.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../../src/cli/commands/pull.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EACL,oBAAoB,GAIrB,MAAM,wBAAwB,CAAC;AAuDhC;;GAEG;AACH,SAAS,gBAAgB,CAAC,SAA8B;IACtD,OAAO,CAAC,GAAG,SAAS,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC,KAAK,EAAE,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;AAClF,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,UAA8B,EAAE;IAEhC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,SAAS,IAAI,GAAG,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;IAE7C,IAAI,MAAmD,CAAC;IACxD,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;IACtC,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,IAAI,MAA2B,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,oBAAoB,CAAC;YAClC,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,gBAAiB,KAAe,CAAC,OAAO,EAAE;YACjD,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SACnC,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACtD,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CACrC,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE/C,MAAM,YAAY,GAAuB,EAAE,CAAC;QAE5C,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzD,IAAI,OAAO,GAAG,KAAK,CAAC;YAEpB,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBAC9B,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,GAAG,KAAK,CAAC;YAClB,CAAC;YAED,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE;gBAC7C,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;aAC7B,CAAC,CAAC;YAEH,YAAY,CAAC,IAAI,CAAC;gBAChB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,IAAI,EAAE,YAAY;gBAClB,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC;gBAC9C,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;aAC5C,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,SAAS;YACT,KAAK,EAAE,YAAY;YACnB,KAAK,EAAE;gBACL,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM;gBACtC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;gBAC1B,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM;gBACtC,KAAK,EAAE,YAAY,CAAC,MAAM;aAC3B;YACD,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SACnC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,GAAG,GAAG,KAA8B,CAAC;QAE3C,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EACH,wBAAwB,GAAG,CAAC,IAAI,IAAI,SAAS,IAAI;oBACjD,0CAA0C;gBAC5C,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;aACnC,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,0BAA2B,KAAe,CAAC,OAAO,EAAE;YAC3D,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SACnC,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pull.test.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/pull.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
|
|
2
|
+
import * as fs from "node:fs/promises";
|
|
3
|
+
import * as os from "node:os";
|
|
4
|
+
import * as path from "node:path";
|
|
5
|
+
import { runPull } from "./pull.js";
|
|
6
|
+
vi.mock("../config.js", () => ({
|
|
7
|
+
loadConfigAsync: vi.fn(),
|
|
8
|
+
}));
|
|
9
|
+
vi.mock("../../api/resources.js", () => ({
|
|
10
|
+
pullAllResourceFiles: vi.fn(),
|
|
11
|
+
}));
|
|
12
|
+
import { loadConfigAsync } from "../config.js";
|
|
13
|
+
import { pullAllResourceFiles } from "../../api/resources.js";
|
|
14
|
+
const mockedLoadConfigAsync = vi.mocked(loadConfigAsync);
|
|
15
|
+
const mockedPullAllResourceFiles = vi.mocked(pullAllResourceFiles);
|
|
16
|
+
describe("Pull Command", () => {
|
|
17
|
+
let tempDir;
|
|
18
|
+
beforeEach(async () => {
|
|
19
|
+
vi.clearAllMocks();
|
|
20
|
+
tempDir = await fs.mkdtemp(path.join(os.tmpdir(), "tinybird-pull-test-"));
|
|
21
|
+
mockedLoadConfigAsync.mockResolvedValue({
|
|
22
|
+
include: ["src/lib/tinybird.ts"],
|
|
23
|
+
token: "p.test-token",
|
|
24
|
+
baseUrl: "https://api.tinybird.co",
|
|
25
|
+
configPath: path.join(tempDir, "tinybird.config.json"),
|
|
26
|
+
cwd: tempDir,
|
|
27
|
+
gitBranch: "feature/pull",
|
|
28
|
+
tinybirdBranch: "feature_pull",
|
|
29
|
+
isMainBranch: false,
|
|
30
|
+
devMode: "branch",
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
afterEach(async () => {
|
|
34
|
+
await fs.rm(tempDir, { recursive: true, force: true });
|
|
35
|
+
vi.resetAllMocks();
|
|
36
|
+
});
|
|
37
|
+
it("writes pulled datasource, pipe, and connection files", async () => {
|
|
38
|
+
mockedPullAllResourceFiles.mockResolvedValue({
|
|
39
|
+
datasources: [
|
|
40
|
+
{
|
|
41
|
+
name: "events",
|
|
42
|
+
type: "datasource",
|
|
43
|
+
filename: "events.datasource",
|
|
44
|
+
content: "SCHEMA >\n timestamp DateTime",
|
|
45
|
+
},
|
|
46
|
+
],
|
|
47
|
+
pipes: [
|
|
48
|
+
{
|
|
49
|
+
name: "top_events",
|
|
50
|
+
type: "pipe",
|
|
51
|
+
filename: "top_events.pipe",
|
|
52
|
+
content: "NODE endpoint\nSQL >\n SELECT 1",
|
|
53
|
+
},
|
|
54
|
+
],
|
|
55
|
+
connections: [
|
|
56
|
+
{
|
|
57
|
+
name: "main_kafka",
|
|
58
|
+
type: "connection",
|
|
59
|
+
filename: "main_kafka.connection",
|
|
60
|
+
content: "TYPE kafka",
|
|
61
|
+
},
|
|
62
|
+
],
|
|
63
|
+
});
|
|
64
|
+
const result = await runPull({ cwd: tempDir, outputDir: "pulled" });
|
|
65
|
+
expect(result.success).toBe(true);
|
|
66
|
+
expect(result.stats).toEqual({
|
|
67
|
+
datasources: 1,
|
|
68
|
+
pipes: 1,
|
|
69
|
+
connections: 1,
|
|
70
|
+
total: 3,
|
|
71
|
+
});
|
|
72
|
+
const outputPath = path.join(tempDir, "pulled");
|
|
73
|
+
await expect(fs.readFile(path.join(outputPath, "events.datasource"), "utf-8")).resolves.toContain("SCHEMA >");
|
|
74
|
+
await expect(fs.readFile(path.join(outputPath, "top_events.pipe"), "utf-8")).resolves.toContain("NODE endpoint");
|
|
75
|
+
await expect(fs.readFile(path.join(outputPath, "main_kafka.connection"), "utf-8")).resolves.toContain("TYPE kafka");
|
|
76
|
+
});
|
|
77
|
+
it("returns error when a file exists and overwrite is disabled", async () => {
|
|
78
|
+
mockedPullAllResourceFiles.mockResolvedValue({
|
|
79
|
+
datasources: [
|
|
80
|
+
{
|
|
81
|
+
name: "events",
|
|
82
|
+
type: "datasource",
|
|
83
|
+
filename: "events.datasource",
|
|
84
|
+
content: "SCHEMA >\n timestamp DateTime",
|
|
85
|
+
},
|
|
86
|
+
],
|
|
87
|
+
pipes: [],
|
|
88
|
+
connections: [],
|
|
89
|
+
});
|
|
90
|
+
const outputPath = path.join(tempDir, "pulled");
|
|
91
|
+
await fs.mkdir(outputPath, { recursive: true });
|
|
92
|
+
await fs.writeFile(path.join(outputPath, "events.datasource"), "old", "utf-8");
|
|
93
|
+
const result = await runPull({
|
|
94
|
+
cwd: tempDir,
|
|
95
|
+
outputDir: "pulled",
|
|
96
|
+
overwrite: false,
|
|
97
|
+
});
|
|
98
|
+
expect(result.success).toBe(false);
|
|
99
|
+
expect(result.error).toContain("File already exists");
|
|
100
|
+
});
|
|
101
|
+
it("overwrites existing files when overwrite is enabled", async () => {
|
|
102
|
+
mockedPullAllResourceFiles.mockResolvedValue({
|
|
103
|
+
datasources: [
|
|
104
|
+
{
|
|
105
|
+
name: "events",
|
|
106
|
+
type: "datasource",
|
|
107
|
+
filename: "events.datasource",
|
|
108
|
+
content: "new-content",
|
|
109
|
+
},
|
|
110
|
+
],
|
|
111
|
+
pipes: [],
|
|
112
|
+
connections: [],
|
|
113
|
+
});
|
|
114
|
+
const outputPath = path.join(tempDir, "pulled");
|
|
115
|
+
await fs.mkdir(outputPath, { recursive: true });
|
|
116
|
+
await fs.writeFile(path.join(outputPath, "events.datasource"), "old-content", "utf-8");
|
|
117
|
+
const result = await runPull({
|
|
118
|
+
cwd: tempDir,
|
|
119
|
+
outputDir: "pulled",
|
|
120
|
+
overwrite: true,
|
|
121
|
+
});
|
|
122
|
+
expect(result.success).toBe(true);
|
|
123
|
+
expect(result.files?.[0]?.status).toBe("overwritten");
|
|
124
|
+
await expect(fs.readFile(path.join(outputPath, "events.datasource"), "utf-8")).resolves.toBe("new-content");
|
|
125
|
+
});
|
|
126
|
+
it("returns error when config loading fails", async () => {
|
|
127
|
+
mockedLoadConfigAsync.mockRejectedValue(new Error("No config found"));
|
|
128
|
+
const result = await runPull({ cwd: tempDir });
|
|
129
|
+
expect(result.success).toBe(false);
|
|
130
|
+
expect(result.error).toContain("No config found");
|
|
131
|
+
});
|
|
132
|
+
it("returns error when pull API fails", async () => {
|
|
133
|
+
mockedPullAllResourceFiles.mockRejectedValue(new Error("Unauthorized"));
|
|
134
|
+
const result = await runPull({ cwd: tempDir });
|
|
135
|
+
expect(result.success).toBe(false);
|
|
136
|
+
expect(result.error).toContain("Pull failed");
|
|
137
|
+
expect(result.error).toContain("Unauthorized");
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
//# sourceMappingURL=pull.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pull.test.js","sourceRoot":"","sources":["../../../src/cli/commands/pull.test.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/config.d.ts
CHANGED
|
@@ -39,6 +39,16 @@ export declare const LOCAL_BASE_URL = "http://localhost:7181";
|
|
|
39
39
|
*/
|
|
40
40
|
declare const CONFIG_FILES: readonly ["tinybird.config.mjs", "tinybird.config.cjs", "tinybird.config.json", "tinybird.json"];
|
|
41
41
|
type ConfigFileType = (typeof CONFIG_FILES)[number];
|
|
42
|
+
/**
|
|
43
|
+
* Load .env files from a directory.
|
|
44
|
+
*
|
|
45
|
+
* Priority:
|
|
46
|
+
* 1. .env.local
|
|
47
|
+
* 2. .env
|
|
48
|
+
*
|
|
49
|
+
* Existing process.env values are preserved (dotenv default behavior).
|
|
50
|
+
*/
|
|
51
|
+
export declare function loadEnvFiles(directory: string): void;
|
|
42
52
|
/**
|
|
43
53
|
* Detect if project has a src folder
|
|
44
54
|
*/
|
package/dist/cli/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,6EAA6E;IAC7E,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,wBAAwB;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,oEAAoE;IACpE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,6EAA6E;IAC7E,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,8CAA8C;IAC9C,YAAY,EAAE,OAAO,CAAC;IACtB,4CAA4C;IAC5C,OAAO,EAAE,OAAO,CAAC;CAClB;AAOD;;GAEG;AACH,eAAO,MAAM,cAAc,0BAA0B,CAAC;AAEtD;;;;;;GAMG;AACH,QAAA,MAAM,YAAY,kGAKR,CAAC;AAEX,KAAK,cAAc,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAYpD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAWpD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGjD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIlD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEjD;AAkBD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,IAAI,EAAE,cAAc,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAmBxE;AA8ED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAsB,GAAG,cAAc,CAoCtE;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,cAAc,CAAC,CAgB1F;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAEjE;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAG9E;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAEjE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAQjF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAC1B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAC/B,IAAI,CAkBN;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAoClE"}
|
package/dist/cli/config.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import * as fs from "fs";
|
|
5
5
|
import * as path from "path";
|
|
6
|
+
import { config as loadDotenv } from "dotenv";
|
|
6
7
|
import { getCurrentGitBranch, isMainBranch, getTinybirdBranchName } from "./git.js";
|
|
7
8
|
/**
|
|
8
9
|
* Default base URL (EU region)
|
|
@@ -33,6 +34,25 @@ const DEFAULT_CONFIG_FILE = "tinybird.config.json";
|
|
|
33
34
|
* Tinybird file path within lib folder
|
|
34
35
|
*/
|
|
35
36
|
const TINYBIRD_FILE = "lib/tinybird.ts";
|
|
37
|
+
/**
|
|
38
|
+
* Load .env files from a directory.
|
|
39
|
+
*
|
|
40
|
+
* Priority:
|
|
41
|
+
* 1. .env.local
|
|
42
|
+
* 2. .env
|
|
43
|
+
*
|
|
44
|
+
* Existing process.env values are preserved (dotenv default behavior).
|
|
45
|
+
*/
|
|
46
|
+
export function loadEnvFiles(directory) {
|
|
47
|
+
const envLocalPath = path.join(directory, ".env.local");
|
|
48
|
+
const envPath = path.join(directory, ".env");
|
|
49
|
+
if (fs.existsSync(envLocalPath)) {
|
|
50
|
+
loadDotenv({ path: envLocalPath });
|
|
51
|
+
}
|
|
52
|
+
if (fs.existsSync(envPath)) {
|
|
53
|
+
loadDotenv({ path: envPath });
|
|
54
|
+
}
|
|
55
|
+
}
|
|
36
56
|
/**
|
|
37
57
|
* Detect if project has a src folder
|
|
38
58
|
*/
|
|
@@ -140,6 +160,8 @@ function resolveConfig(config, configPath) {
|
|
|
140
160
|
}
|
|
141
161
|
// Get the directory containing the config file
|
|
142
162
|
const configDir = path.dirname(configPath);
|
|
163
|
+
// Load environment files next to the config before interpolating values.
|
|
164
|
+
loadEnvFiles(configDir);
|
|
143
165
|
// Resolve token (may contain env vars)
|
|
144
166
|
let resolvedToken;
|
|
145
167
|
try {
|
package/dist/cli/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -17,10 +17,12 @@ import { runBuild } from "./commands/build.js";
|
|
|
17
17
|
import { runDeploy } from "./commands/deploy.js";
|
|
18
18
|
import { runPreview } from "./commands/preview.js";
|
|
19
19
|
import { runDev } from "./commands/dev.js";
|
|
20
|
+
import { runMigrate } from "./commands/migrate.js";
|
|
20
21
|
import { runLogin } from "./commands/login.js";
|
|
21
22
|
import { runBranchList, runBranchStatus, runBranchDelete, } from "./commands/branch.js";
|
|
22
23
|
import { runClear } from "./commands/clear.js";
|
|
23
24
|
import { runInfo } from "./commands/info.js";
|
|
25
|
+
import { runPull } from "./commands/pull.js";
|
|
24
26
|
import { runOpenDashboard, } from "./commands/open-dashboard.js";
|
|
25
27
|
import { detectPackageManagerRunCmd } from "./utils/package-manager.js";
|
|
26
28
|
import { output } from "./output.js";
|
|
@@ -148,6 +150,36 @@ function createCli() {
|
|
|
148
150
|
});
|
|
149
151
|
}
|
|
150
152
|
});
|
|
153
|
+
// Pull command
|
|
154
|
+
program
|
|
155
|
+
.command("pull")
|
|
156
|
+
.description("Download datasources, pipes, and connections from Tinybird as datafiles")
|
|
157
|
+
.option("-o, --output-dir <path>", "Directory where pulled files are written", ".")
|
|
158
|
+
.option("-f, --force", "Overwrite existing files")
|
|
159
|
+
.action(async (options) => {
|
|
160
|
+
output.highlight("Pulling resources from Tinybird...");
|
|
161
|
+
const result = await runPull({
|
|
162
|
+
outputDir: options.outputDir,
|
|
163
|
+
overwrite: options.force,
|
|
164
|
+
});
|
|
165
|
+
if (!result.success) {
|
|
166
|
+
output.error(result.error ?? "Pull failed");
|
|
167
|
+
process.exit(1);
|
|
168
|
+
}
|
|
169
|
+
const files = result.files ?? [];
|
|
170
|
+
const stats = result.stats ?? {
|
|
171
|
+
datasources: 0,
|
|
172
|
+
pipes: 0,
|
|
173
|
+
connections: 0,
|
|
174
|
+
total: files.length,
|
|
175
|
+
};
|
|
176
|
+
for (const file of files) {
|
|
177
|
+
const status = file.status === "created" ? "created" : "changed";
|
|
178
|
+
output.showResourceChange(file.relativePath, status);
|
|
179
|
+
}
|
|
180
|
+
output.success(`\nPulled ${stats.total} file(s): ${stats.datasources} datasource(s), ${stats.pipes} pipe(s), ${stats.connections} connection(s)`);
|
|
181
|
+
output.success(`Completed in ${output.formatDuration(result.durationMs)}`);
|
|
182
|
+
});
|
|
151
183
|
// Open command
|
|
152
184
|
program
|
|
153
185
|
.command("open")
|
|
@@ -265,6 +297,51 @@ function createCli() {
|
|
|
265
297
|
}
|
|
266
298
|
}
|
|
267
299
|
});
|
|
300
|
+
// Migrate command
|
|
301
|
+
program
|
|
302
|
+
.command("migrate")
|
|
303
|
+
.description("Migrate .datasource/.pipe/.connection files into TypeScript definitions")
|
|
304
|
+
.argument("<patterns...>", "One or more file paths, directories, or glob patterns")
|
|
305
|
+
.option("-o, --out <path>", "Output TypeScript path (default: ./tinybird.migration.ts)")
|
|
306
|
+
.option("--dry-run", "Preview migration without writing files")
|
|
307
|
+
.option("--force", "Overwrite output file if it already exists")
|
|
308
|
+
.option("--no-strict", "Do not fail command when some resources cannot be migrated")
|
|
309
|
+
.action(async (patterns, options) => {
|
|
310
|
+
const result = await runMigrate({
|
|
311
|
+
patterns,
|
|
312
|
+
out: options.out,
|
|
313
|
+
strict: options.strict,
|
|
314
|
+
dryRun: options.dryRun,
|
|
315
|
+
force: options.force,
|
|
316
|
+
});
|
|
317
|
+
const migratedCounts = {
|
|
318
|
+
datasources: result.migrated.filter((resource) => resource.kind === "datasource")
|
|
319
|
+
.length,
|
|
320
|
+
pipes: result.migrated.filter((resource) => resource.kind === "pipe").length,
|
|
321
|
+
connections: result.migrated.filter((resource) => resource.kind === "connection").length,
|
|
322
|
+
};
|
|
323
|
+
console.log(`Migrated: ${migratedCounts.datasources} datasource(s), ${migratedCounts.pipes} pipe(s), ${migratedCounts.connections} connection(s)`);
|
|
324
|
+
if (result.migrated.length > 0) {
|
|
325
|
+
if (result.dryRun) {
|
|
326
|
+
console.log(`[Dry run] Output would be written to: ${result.outputPath}`);
|
|
327
|
+
}
|
|
328
|
+
else {
|
|
329
|
+
console.log(`Output written to: ${result.outputPath}`);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
else {
|
|
333
|
+
console.log("No resources were migrated.");
|
|
334
|
+
}
|
|
335
|
+
if (result.errors.length > 0) {
|
|
336
|
+
console.log("\nErrors:");
|
|
337
|
+
for (const error of result.errors) {
|
|
338
|
+
console.log(`- ${error.filePath} (${error.resourceKind}:${error.resourceName}): ${error.message}`);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
if (!result.success) {
|
|
342
|
+
process.exit(1);
|
|
343
|
+
}
|
|
344
|
+
});
|
|
268
345
|
// Deploy command
|
|
269
346
|
program
|
|
270
347
|
.command("deploy")
|