@tinybirdco/sdk 0.0.3 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +87 -14
- package/dist/api/deploy.d.ts +41 -3
- package/dist/api/deploy.d.ts.map +1 -1
- package/dist/api/deploy.js +141 -19
- package/dist/api/deploy.js.map +1 -1
- package/dist/api/deploy.test.js +77 -29
- package/dist/api/deploy.test.js.map +1 -1
- package/dist/api/local.d.ts +92 -0
- package/dist/api/local.d.ts.map +1 -0
- package/dist/api/local.js +176 -0
- package/dist/api/local.js.map +1 -0
- package/dist/api/local.test.d.ts +2 -0
- package/dist/api/local.test.d.ts.map +1 -0
- package/dist/api/local.test.js +182 -0
- package/dist/api/local.test.js.map +1 -0
- package/dist/api/resources.d.ts +178 -0
- package/dist/api/resources.d.ts.map +1 -0
- package/dist/api/resources.js +244 -0
- package/dist/api/resources.js.map +1 -0
- package/dist/api/resources.test.d.ts +2 -0
- package/dist/api/resources.test.d.ts.map +1 -0
- package/dist/api/resources.test.js +255 -0
- package/dist/api/resources.test.js.map +1 -0
- package/dist/cli/commands/build.d.ts +6 -4
- package/dist/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/build.js +95 -47
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/commands/deploy.d.ts +39 -0
- package/dist/cli/commands/deploy.d.ts.map +1 -0
- package/dist/cli/commands/deploy.js +90 -0
- package/dist/cli/commands/deploy.js.map +1 -0
- package/dist/cli/commands/dev.d.ts +9 -2
- package/dist/cli/commands/dev.d.ts.map +1 -1
- package/dist/cli/commands/dev.js +60 -31
- package/dist/cli/commands/dev.js.map +1 -1
- package/dist/cli/commands/init.d.ts +24 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +174 -23
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/init.test.js +190 -30
- package/dist/cli/commands/init.test.js.map +1 -1
- package/dist/cli/config.d.ts +14 -0
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +7 -0
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/config.test.js +29 -0
- package/dist/cli/config.test.js.map +1 -1
- package/dist/cli/index.js +107 -11
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/utils/package-manager.d.ts +8 -0
- package/dist/cli/utils/package-manager.d.ts.map +1 -0
- package/dist/cli/utils/package-manager.js +45 -0
- package/dist/cli/utils/package-manager.js.map +1 -0
- package/dist/cli/utils/package-manager.test.d.ts +2 -0
- package/dist/cli/utils/package-manager.test.d.ts.map +1 -0
- package/dist/cli/utils/package-manager.test.js +85 -0
- package/dist/cli/utils/package-manager.test.js.map +1 -0
- package/dist/codegen/index.d.ts +39 -0
- package/dist/codegen/index.d.ts.map +1 -0
- package/dist/codegen/index.js +300 -0
- package/dist/codegen/index.js.map +1 -0
- package/dist/codegen/index.test.d.ts +2 -0
- package/dist/codegen/index.test.d.ts.map +1 -0
- package/dist/codegen/index.test.js +310 -0
- package/dist/codegen/index.test.js.map +1 -0
- package/dist/codegen/type-mapper.d.ts +20 -0
- package/dist/codegen/type-mapper.d.ts.map +1 -0
- package/dist/codegen/type-mapper.js +238 -0
- package/dist/codegen/type-mapper.js.map +1 -0
- package/dist/codegen/type-mapper.test.d.ts +2 -0
- package/dist/codegen/type-mapper.test.d.ts.map +1 -0
- package/dist/codegen/type-mapper.test.js +167 -0
- package/dist/codegen/type-mapper.test.js.map +1 -0
- package/dist/codegen/utils.d.ts +46 -0
- package/dist/codegen/utils.d.ts.map +1 -0
- package/dist/codegen/utils.js +141 -0
- package/dist/codegen/utils.js.map +1 -0
- package/dist/codegen/utils.test.d.ts +2 -0
- package/dist/codegen/utils.test.d.ts.map +1 -0
- package/dist/codegen/utils.test.js +178 -0
- package/dist/codegen/utils.test.js.map +1 -0
- package/dist/generator/index.d.ts +3 -0
- package/dist/generator/index.d.ts.map +1 -1
- package/dist/generator/index.js +17 -1
- package/dist/generator/index.js.map +1 -1
- package/dist/generator/index.test.js +104 -1
- package/dist/generator/index.test.js.map +1 -1
- package/dist/generator/loader.d.ts +15 -0
- package/dist/generator/loader.d.ts.map +1 -1
- package/dist/generator/loader.js +24 -0
- package/dist/generator/loader.js.map +1 -1
- package/dist/test/handlers.d.ts +49 -0
- package/dist/test/handlers.d.ts.map +1 -1
- package/dist/test/handlers.js +45 -0
- package/dist/test/handlers.js.map +1 -1
- package/package.json +4 -2
- package/src/api/deploy.test.ts +135 -34
- package/src/api/deploy.ts +203 -23
- package/src/api/local.test.ts +250 -0
- package/src/api/local.ts +270 -0
- package/src/api/resources.test.ts +332 -0
- package/src/api/resources.ts +554 -0
- package/src/cli/commands/build.ts +115 -53
- package/src/cli/commands/deploy.ts +126 -0
- package/src/cli/commands/dev.ts +81 -36
- package/src/cli/commands/init.test.ts +239 -30
- package/src/cli/commands/init.ts +243 -26
- package/src/cli/config.test.ts +47 -0
- package/src/cli/config.ts +20 -0
- package/src/cli/index.ts +120 -11
- package/src/cli/utils/package-manager.test.ts +118 -0
- package/src/cli/utils/package-manager.ts +44 -0
- package/src/codegen/index.test.ts +367 -0
- package/src/codegen/index.ts +379 -0
- package/src/codegen/type-mapper.test.ts +224 -0
- package/src/codegen/type-mapper.ts +265 -0
- package/src/codegen/utils.test.ts +221 -0
- package/src/codegen/utils.ts +174 -0
- package/src/generator/index.test.ts +121 -1
- package/src/generator/index.ts +19 -1
- package/src/generator/loader.ts +43 -0
- package/src/test/handlers.ts +58 -0
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tinybird Resources API client
|
|
3
|
+
* Functions to list and fetch datasources and pipes from a workspace
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Error thrown by resource API operations
|
|
7
|
+
*/
|
|
8
|
+
export class ResourceApiError extends Error {
|
|
9
|
+
status;
|
|
10
|
+
endpoint;
|
|
11
|
+
body;
|
|
12
|
+
constructor(message, status, endpoint, body) {
|
|
13
|
+
super(message);
|
|
14
|
+
this.status = status;
|
|
15
|
+
this.endpoint = endpoint;
|
|
16
|
+
this.body = body;
|
|
17
|
+
this.name = "ResourceApiError";
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
// ============ API Helper ============
|
|
21
|
+
/**
|
|
22
|
+
* Handle API response and throw appropriate errors
|
|
23
|
+
*/
|
|
24
|
+
async function handleApiResponse(response, endpoint) {
|
|
25
|
+
if (response.status === 401) {
|
|
26
|
+
throw new ResourceApiError("Invalid or expired token", 401, endpoint);
|
|
27
|
+
}
|
|
28
|
+
if (response.status === 403) {
|
|
29
|
+
throw new ResourceApiError("Insufficient permissions to access resources", 403, endpoint);
|
|
30
|
+
}
|
|
31
|
+
if (response.status === 404) {
|
|
32
|
+
throw new ResourceApiError("Resource not found", 404, endpoint);
|
|
33
|
+
}
|
|
34
|
+
if (!response.ok) {
|
|
35
|
+
const body = await response.text();
|
|
36
|
+
throw new ResourceApiError(`API request failed: ${response.status} ${response.statusText}`, response.status, endpoint, body);
|
|
37
|
+
}
|
|
38
|
+
return response.json();
|
|
39
|
+
}
|
|
40
|
+
// ============ Datasource API ============
|
|
41
|
+
/**
|
|
42
|
+
* List all datasources in the workspace
|
|
43
|
+
*
|
|
44
|
+
* @param config - API configuration
|
|
45
|
+
* @returns Array of datasource names
|
|
46
|
+
*/
|
|
47
|
+
export async function listDatasources(config) {
|
|
48
|
+
const url = new URL("/v0/datasources", config.baseUrl);
|
|
49
|
+
const response = await fetch(url.toString(), {
|
|
50
|
+
method: "GET",
|
|
51
|
+
headers: {
|
|
52
|
+
Authorization: `Bearer ${config.token}`,
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
const data = await handleApiResponse(response, "/v0/datasources");
|
|
56
|
+
return data.datasources.map((ds) => ds.name);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Get detailed information about a specific datasource
|
|
60
|
+
*
|
|
61
|
+
* @param config - API configuration
|
|
62
|
+
* @param name - Datasource name
|
|
63
|
+
* @returns Datasource information including schema and engine
|
|
64
|
+
*/
|
|
65
|
+
export async function getDatasource(config, name) {
|
|
66
|
+
const url = new URL(`/v0/datasources/${encodeURIComponent(name)}`, config.baseUrl);
|
|
67
|
+
const response = await fetch(url.toString(), {
|
|
68
|
+
method: "GET",
|
|
69
|
+
headers: {
|
|
70
|
+
Authorization: `Bearer ${config.token}`,
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
const data = await handleApiResponse(response, `/v0/datasources/${name}`);
|
|
74
|
+
// Extract columns from either schema.columns (detail) or columns (list)
|
|
75
|
+
const rawColumns = data.schema?.columns ?? data.columns ?? [];
|
|
76
|
+
// Extract engine info from the engine object
|
|
77
|
+
const engineObj = data.engine;
|
|
78
|
+
const engineType = parseEngineType(engineObj?.engine);
|
|
79
|
+
// Engine properties can be in different places depending on the endpoint
|
|
80
|
+
const sortingKey = engineObj?.sorting_key ?? engineObj?.engine_sorting_key ?? data.sorting_key;
|
|
81
|
+
const partitionKey = engineObj?.partition_key ?? engineObj?.engine_partition_key ?? data.partition_key;
|
|
82
|
+
const primaryKey = engineObj?.primary_key ?? engineObj?.engine_primary_key ?? data.primary_key;
|
|
83
|
+
return {
|
|
84
|
+
name: data.name,
|
|
85
|
+
description: data.description,
|
|
86
|
+
columns: rawColumns.map((col) => ({
|
|
87
|
+
name: col.name,
|
|
88
|
+
type: col.type,
|
|
89
|
+
jsonpath: col.jsonpath,
|
|
90
|
+
default: col.default_value,
|
|
91
|
+
codec: col.codec,
|
|
92
|
+
})),
|
|
93
|
+
engine: {
|
|
94
|
+
type: engineType,
|
|
95
|
+
sorting_key: sortingKey,
|
|
96
|
+
partition_key: partitionKey,
|
|
97
|
+
primary_key: primaryKey,
|
|
98
|
+
ttl: data.ttl,
|
|
99
|
+
ver: engineObj?.engine_ver,
|
|
100
|
+
sign: engineObj?.engine_sign,
|
|
101
|
+
version: engineObj?.engine_version,
|
|
102
|
+
summing_columns: engineObj?.engine_summing_columns,
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Parse engine type from engine string
|
|
108
|
+
*/
|
|
109
|
+
function parseEngineType(engineString) {
|
|
110
|
+
if (!engineString) {
|
|
111
|
+
return "MergeTree";
|
|
112
|
+
}
|
|
113
|
+
// Engine string might be like "MergeTree" or "ReplacingMergeTree(version_column)"
|
|
114
|
+
const match = engineString.match(/^(\w+)/);
|
|
115
|
+
return match ? match[1] : "MergeTree";
|
|
116
|
+
}
|
|
117
|
+
// ============ Pipe API ============
|
|
118
|
+
/**
|
|
119
|
+
* List all pipes in the workspace
|
|
120
|
+
*
|
|
121
|
+
* @param config - API configuration
|
|
122
|
+
* @returns Array of pipe names
|
|
123
|
+
*/
|
|
124
|
+
export async function listPipes(config) {
|
|
125
|
+
const url = new URL("/v0/pipes", config.baseUrl);
|
|
126
|
+
const response = await fetch(url.toString(), {
|
|
127
|
+
method: "GET",
|
|
128
|
+
headers: {
|
|
129
|
+
Authorization: `Bearer ${config.token}`,
|
|
130
|
+
},
|
|
131
|
+
});
|
|
132
|
+
const data = await handleApiResponse(response, "/v0/pipes");
|
|
133
|
+
return data.pipes.map((p) => p.name);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Get detailed information about a specific pipe
|
|
137
|
+
*
|
|
138
|
+
* @param config - API configuration
|
|
139
|
+
* @param name - Pipe name
|
|
140
|
+
* @returns Pipe information including nodes, params, and output schema
|
|
141
|
+
*/
|
|
142
|
+
export async function getPipe(config, name) {
|
|
143
|
+
const url = new URL(`/v0/pipes/${encodeURIComponent(name)}`, config.baseUrl);
|
|
144
|
+
const response = await fetch(url.toString(), {
|
|
145
|
+
method: "GET",
|
|
146
|
+
headers: {
|
|
147
|
+
Authorization: `Bearer ${config.token}`,
|
|
148
|
+
},
|
|
149
|
+
});
|
|
150
|
+
const data = await handleApiResponse(response, `/v0/pipes/${name}`);
|
|
151
|
+
// Determine pipe type
|
|
152
|
+
let pipeType = "pipe";
|
|
153
|
+
if (data.endpoint) {
|
|
154
|
+
pipeType = "endpoint";
|
|
155
|
+
}
|
|
156
|
+
else if (data.materialized_datasource) {
|
|
157
|
+
pipeType = "materialized";
|
|
158
|
+
}
|
|
159
|
+
else if (data.copy_target_datasource) {
|
|
160
|
+
pipeType = "copy";
|
|
161
|
+
}
|
|
162
|
+
// Extract nodes
|
|
163
|
+
const nodes = (data.nodes ?? []).map((node) => ({
|
|
164
|
+
name: node.name,
|
|
165
|
+
sql: node.sql,
|
|
166
|
+
description: node.description,
|
|
167
|
+
}));
|
|
168
|
+
// Extract params from all nodes (they're typically on the first node)
|
|
169
|
+
const params = [];
|
|
170
|
+
const seenParams = new Set();
|
|
171
|
+
for (const node of data.nodes ?? []) {
|
|
172
|
+
for (const param of node.params ?? []) {
|
|
173
|
+
if (!seenParams.has(param.name)) {
|
|
174
|
+
seenParams.add(param.name);
|
|
175
|
+
params.push({
|
|
176
|
+
name: param.name,
|
|
177
|
+
type: param.type,
|
|
178
|
+
default: param.default,
|
|
179
|
+
required: param.required ?? true,
|
|
180
|
+
description: param.description,
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
// Extract output columns from the last node
|
|
186
|
+
const lastNode = data.nodes?.[data.nodes.length - 1];
|
|
187
|
+
const outputColumns = (lastNode?.columns ?? []).map((col) => ({
|
|
188
|
+
name: col.name,
|
|
189
|
+
type: col.type,
|
|
190
|
+
}));
|
|
191
|
+
return {
|
|
192
|
+
name: data.name,
|
|
193
|
+
description: data.description,
|
|
194
|
+
nodes,
|
|
195
|
+
params,
|
|
196
|
+
type: pipeType,
|
|
197
|
+
endpoint: pipeType === "endpoint" ? { enabled: true } : undefined,
|
|
198
|
+
materialized: data.materialized_datasource
|
|
199
|
+
? { datasource: data.materialized_datasource }
|
|
200
|
+
: undefined,
|
|
201
|
+
copy: data.copy_target_datasource
|
|
202
|
+
? {
|
|
203
|
+
target_datasource: data.copy_target_datasource,
|
|
204
|
+
copy_schedule: data.copy_schedule,
|
|
205
|
+
copy_mode: data.copy_mode,
|
|
206
|
+
}
|
|
207
|
+
: undefined,
|
|
208
|
+
output_columns: outputColumns,
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
// ============ Convenience Functions ============
|
|
212
|
+
/**
|
|
213
|
+
* Fetch all resources from a workspace
|
|
214
|
+
*
|
|
215
|
+
* @param config - API configuration
|
|
216
|
+
* @returns All datasources and pipes with full details
|
|
217
|
+
*/
|
|
218
|
+
export async function fetchAllResources(config) {
|
|
219
|
+
// List all resources first
|
|
220
|
+
const [datasourceNames, pipeNames] = await Promise.all([
|
|
221
|
+
listDatasources(config),
|
|
222
|
+
listPipes(config),
|
|
223
|
+
]);
|
|
224
|
+
// Fetch details in parallel
|
|
225
|
+
const [datasources, pipes] = await Promise.all([
|
|
226
|
+
Promise.all(datasourceNames.map((name) => getDatasource(config, name))),
|
|
227
|
+
Promise.all(pipeNames.map((name) => getPipe(config, name))),
|
|
228
|
+
]);
|
|
229
|
+
return { datasources, pipes };
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Check if a workspace has any resources
|
|
233
|
+
*
|
|
234
|
+
* @param config - API configuration
|
|
235
|
+
* @returns True if the workspace has at least one datasource or pipe
|
|
236
|
+
*/
|
|
237
|
+
export async function hasResources(config) {
|
|
238
|
+
const [datasourceNames, pipeNames] = await Promise.all([
|
|
239
|
+
listDatasources(config),
|
|
240
|
+
listPipes(config),
|
|
241
|
+
]);
|
|
242
|
+
return datasourceNames.length > 0 || pipeNames.length > 0;
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=resources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/api/resources.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resources.test.d.ts","sourceRoot":"","sources":["../../src/api/resources.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
import { describe, it, expect, beforeAll, afterAll, afterEach } from "vitest";
|
|
2
|
+
import { setupServer } from "msw/node";
|
|
3
|
+
import { http, HttpResponse } from "msw";
|
|
4
|
+
import { listDatasources, getDatasource, listPipes, getPipe, fetchAllResources, hasResources, ResourceApiError, } from "./resources.js";
|
|
5
|
+
const BASE_URL = "https://api.tinybird.co";
|
|
6
|
+
const TOKEN = "test-token";
|
|
7
|
+
const handlers = [
|
|
8
|
+
// List datasources
|
|
9
|
+
http.get(`${BASE_URL}/v0/datasources`, () => {
|
|
10
|
+
return HttpResponse.json({
|
|
11
|
+
datasources: [
|
|
12
|
+
{ name: "events", description: "Event data" },
|
|
13
|
+
{ name: "users", description: "User data" },
|
|
14
|
+
],
|
|
15
|
+
});
|
|
16
|
+
}),
|
|
17
|
+
// Get datasource detail - events
|
|
18
|
+
http.get(`${BASE_URL}/v0/datasources/events`, () => {
|
|
19
|
+
return HttpResponse.json({
|
|
20
|
+
name: "events",
|
|
21
|
+
description: "Event tracking data",
|
|
22
|
+
columns: [
|
|
23
|
+
{ name: "timestamp", type: "DateTime" },
|
|
24
|
+
{ name: "event_name", type: "LowCardinality(String)" },
|
|
25
|
+
{ name: "user_id", type: "Nullable(String)" },
|
|
26
|
+
],
|
|
27
|
+
engine: "MergeTree",
|
|
28
|
+
sorting_key: "event_name, timestamp",
|
|
29
|
+
partition_key: "toYYYYMM(timestamp)",
|
|
30
|
+
});
|
|
31
|
+
}),
|
|
32
|
+
// Get datasource detail - users
|
|
33
|
+
http.get(`${BASE_URL}/v0/datasources/users`, () => {
|
|
34
|
+
return HttpResponse.json({
|
|
35
|
+
name: "users",
|
|
36
|
+
description: "User data",
|
|
37
|
+
columns: [
|
|
38
|
+
{ name: "user_id", type: "String" },
|
|
39
|
+
{ name: "email", type: "String" },
|
|
40
|
+
{ name: "created_at", type: "DateTime" },
|
|
41
|
+
],
|
|
42
|
+
engine: "MergeTree",
|
|
43
|
+
sorting_key: "user_id",
|
|
44
|
+
});
|
|
45
|
+
}),
|
|
46
|
+
// List pipes
|
|
47
|
+
http.get(`${BASE_URL}/v0/pipes`, () => {
|
|
48
|
+
return HttpResponse.json({
|
|
49
|
+
pipes: [
|
|
50
|
+
{ name: "top_events", type: "endpoint" },
|
|
51
|
+
{ name: "daily_stats_mv", type: "materialized" },
|
|
52
|
+
],
|
|
53
|
+
});
|
|
54
|
+
}),
|
|
55
|
+
// Get pipe detail - endpoint
|
|
56
|
+
http.get(`${BASE_URL}/v0/pipes/top_events`, () => {
|
|
57
|
+
return HttpResponse.json({
|
|
58
|
+
name: "top_events",
|
|
59
|
+
description: "Get top events by count",
|
|
60
|
+
endpoint: "/v0/pipes/top_events.json",
|
|
61
|
+
nodes: [
|
|
62
|
+
{
|
|
63
|
+
name: "aggregated",
|
|
64
|
+
sql: "SELECT event_name, count() AS cnt FROM events GROUP BY event_name ORDER BY cnt DESC LIMIT {{Int32(limit, 10)}}",
|
|
65
|
+
params: [
|
|
66
|
+
{ name: "limit", type: "Int32", default: 10, required: false },
|
|
67
|
+
],
|
|
68
|
+
columns: [
|
|
69
|
+
{ name: "event_name", type: "String" },
|
|
70
|
+
{ name: "cnt", type: "UInt64" },
|
|
71
|
+
],
|
|
72
|
+
},
|
|
73
|
+
],
|
|
74
|
+
});
|
|
75
|
+
}),
|
|
76
|
+
// Get pipe detail - materialized
|
|
77
|
+
http.get(`${BASE_URL}/v0/pipes/daily_stats_mv`, () => {
|
|
78
|
+
return HttpResponse.json({
|
|
79
|
+
name: "daily_stats_mv",
|
|
80
|
+
description: "Daily aggregation",
|
|
81
|
+
materialized_datasource: "daily_stats",
|
|
82
|
+
nodes: [
|
|
83
|
+
{
|
|
84
|
+
name: "aggregate",
|
|
85
|
+
sql: "SELECT toDate(timestamp) AS date, count() AS cnt FROM events GROUP BY date",
|
|
86
|
+
},
|
|
87
|
+
],
|
|
88
|
+
});
|
|
89
|
+
}),
|
|
90
|
+
// Get pipe detail - copy
|
|
91
|
+
http.get(`${BASE_URL}/v0/pipes/daily_snapshot`, () => {
|
|
92
|
+
return HttpResponse.json({
|
|
93
|
+
name: "daily_snapshot",
|
|
94
|
+
description: "Daily snapshot copy",
|
|
95
|
+
copy_target_datasource: "snapshots",
|
|
96
|
+
copy_schedule: "0 0 * * *",
|
|
97
|
+
copy_mode: "append",
|
|
98
|
+
nodes: [
|
|
99
|
+
{
|
|
100
|
+
name: "snapshot",
|
|
101
|
+
sql: "SELECT * FROM events WHERE date = today()",
|
|
102
|
+
},
|
|
103
|
+
],
|
|
104
|
+
});
|
|
105
|
+
}),
|
|
106
|
+
];
|
|
107
|
+
const server = setupServer(...handlers);
|
|
108
|
+
beforeAll(() => server.listen({ onUnhandledRequest: "error" }));
|
|
109
|
+
afterAll(() => server.close());
|
|
110
|
+
afterEach(() => server.resetHandlers());
|
|
111
|
+
describe("listDatasources", () => {
|
|
112
|
+
it("returns array of datasource names", async () => {
|
|
113
|
+
const result = await listDatasources({ baseUrl: BASE_URL, token: TOKEN });
|
|
114
|
+
expect(result).toEqual(["events", "users"]);
|
|
115
|
+
});
|
|
116
|
+
it("handles empty workspace", async () => {
|
|
117
|
+
server.use(http.get(`${BASE_URL}/v0/datasources`, () => {
|
|
118
|
+
return HttpResponse.json({ datasources: [] });
|
|
119
|
+
}));
|
|
120
|
+
const result = await listDatasources({ baseUrl: BASE_URL, token: TOKEN });
|
|
121
|
+
expect(result).toEqual([]);
|
|
122
|
+
});
|
|
123
|
+
it("throws ResourceApiError on 401", async () => {
|
|
124
|
+
server.use(http.get(`${BASE_URL}/v0/datasources`, () => {
|
|
125
|
+
return new HttpResponse(null, { status: 401 });
|
|
126
|
+
}));
|
|
127
|
+
await expect(listDatasources({ baseUrl: BASE_URL, token: TOKEN })).rejects.toThrow(ResourceApiError);
|
|
128
|
+
});
|
|
129
|
+
it("throws ResourceApiError on 403", async () => {
|
|
130
|
+
server.use(http.get(`${BASE_URL}/v0/datasources`, () => {
|
|
131
|
+
return new HttpResponse(null, { status: 403 });
|
|
132
|
+
}));
|
|
133
|
+
await expect(listDatasources({ baseUrl: BASE_URL, token: TOKEN })).rejects.toThrow("Insufficient permissions");
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
describe("getDatasource", () => {
|
|
137
|
+
it("returns datasource info with columns and engine", async () => {
|
|
138
|
+
const result = await getDatasource({ baseUrl: BASE_URL, token: TOKEN }, "events");
|
|
139
|
+
expect(result.name).toBe("events");
|
|
140
|
+
expect(result.description).toBe("Event tracking data");
|
|
141
|
+
expect(result.columns).toHaveLength(3);
|
|
142
|
+
expect(result.columns[0]).toEqual({ name: "timestamp", type: "DateTime" });
|
|
143
|
+
expect(result.columns[1]).toEqual({ name: "event_name", type: "LowCardinality(String)" });
|
|
144
|
+
expect(result.columns[2]).toEqual({ name: "user_id", type: "Nullable(String)" });
|
|
145
|
+
expect(result.engine.type).toBe("MergeTree");
|
|
146
|
+
expect(result.engine.sorting_key).toBe("event_name, timestamp");
|
|
147
|
+
expect(result.engine.partition_key).toBe("toYYYYMM(timestamp)");
|
|
148
|
+
});
|
|
149
|
+
it("throws ResourceApiError on 404", async () => {
|
|
150
|
+
server.use(http.get(`${BASE_URL}/v0/datasources/nonexistent`, () => {
|
|
151
|
+
return new HttpResponse(null, { status: 404 });
|
|
152
|
+
}));
|
|
153
|
+
await expect(getDatasource({ baseUrl: BASE_URL, token: TOKEN }, "nonexistent")).rejects.toThrow("Resource not found");
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
describe("listPipes", () => {
|
|
157
|
+
it("returns array of pipe names", async () => {
|
|
158
|
+
const result = await listPipes({ baseUrl: BASE_URL, token: TOKEN });
|
|
159
|
+
expect(result).toEqual(["top_events", "daily_stats_mv"]);
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
describe("getPipe", () => {
|
|
163
|
+
it("returns endpoint pipe info", async () => {
|
|
164
|
+
const result = await getPipe({ baseUrl: BASE_URL, token: TOKEN }, "top_events");
|
|
165
|
+
expect(result.name).toBe("top_events");
|
|
166
|
+
expect(result.description).toBe("Get top events by count");
|
|
167
|
+
expect(result.type).toBe("endpoint");
|
|
168
|
+
expect(result.nodes).toHaveLength(1);
|
|
169
|
+
expect(result.nodes[0].name).toBe("aggregated");
|
|
170
|
+
expect(result.params).toHaveLength(1);
|
|
171
|
+
expect(result.params[0]).toEqual({
|
|
172
|
+
name: "limit",
|
|
173
|
+
type: "Int32",
|
|
174
|
+
default: 10,
|
|
175
|
+
required: false,
|
|
176
|
+
});
|
|
177
|
+
expect(result.output_columns).toHaveLength(2);
|
|
178
|
+
});
|
|
179
|
+
it("returns materialized pipe info", async () => {
|
|
180
|
+
const result = await getPipe({ baseUrl: BASE_URL, token: TOKEN }, "daily_stats_mv");
|
|
181
|
+
expect(result.name).toBe("daily_stats_mv");
|
|
182
|
+
expect(result.type).toBe("materialized");
|
|
183
|
+
expect(result.materialized?.datasource).toBe("daily_stats");
|
|
184
|
+
});
|
|
185
|
+
it("returns copy pipe info", async () => {
|
|
186
|
+
const result = await getPipe({ baseUrl: BASE_URL, token: TOKEN }, "daily_snapshot");
|
|
187
|
+
expect(result.name).toBe("daily_snapshot");
|
|
188
|
+
expect(result.type).toBe("copy");
|
|
189
|
+
expect(result.copy?.target_datasource).toBe("snapshots");
|
|
190
|
+
expect(result.copy?.copy_schedule).toBe("0 0 * * *");
|
|
191
|
+
expect(result.copy?.copy_mode).toBe("append");
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
describe("fetchAllResources", () => {
|
|
195
|
+
it("fetches all datasources and pipes with details", async () => {
|
|
196
|
+
const result = await fetchAllResources({ baseUrl: BASE_URL, token: TOKEN });
|
|
197
|
+
expect(result.datasources).toHaveLength(2);
|
|
198
|
+
expect(result.pipes).toHaveLength(2);
|
|
199
|
+
// Verify datasource details were fetched
|
|
200
|
+
const events = result.datasources.find((ds) => ds.name === "events");
|
|
201
|
+
expect(events?.columns).toBeDefined();
|
|
202
|
+
expect(events?.engine).toBeDefined();
|
|
203
|
+
// Verify pipe details were fetched
|
|
204
|
+
const topEvents = result.pipes.find((p) => p.name === "top_events");
|
|
205
|
+
expect(topEvents?.nodes).toBeDefined();
|
|
206
|
+
expect(topEvents?.type).toBe("endpoint");
|
|
207
|
+
});
|
|
208
|
+
});
|
|
209
|
+
describe("hasResources", () => {
|
|
210
|
+
it("returns true when workspace has resources", async () => {
|
|
211
|
+
const result = await hasResources({ baseUrl: BASE_URL, token: TOKEN });
|
|
212
|
+
expect(result).toBe(true);
|
|
213
|
+
});
|
|
214
|
+
it("returns false for empty workspace", async () => {
|
|
215
|
+
server.use(http.get(`${BASE_URL}/v0/datasources`, () => {
|
|
216
|
+
return HttpResponse.json({ datasources: [] });
|
|
217
|
+
}), http.get(`${BASE_URL}/v0/pipes`, () => {
|
|
218
|
+
return HttpResponse.json({ pipes: [] });
|
|
219
|
+
}));
|
|
220
|
+
const result = await hasResources({ baseUrl: BASE_URL, token: TOKEN });
|
|
221
|
+
expect(result).toBe(false);
|
|
222
|
+
});
|
|
223
|
+
it("returns true when only datasources exist", async () => {
|
|
224
|
+
server.use(http.get(`${BASE_URL}/v0/pipes`, () => {
|
|
225
|
+
return HttpResponse.json({ pipes: [] });
|
|
226
|
+
}));
|
|
227
|
+
const result = await hasResources({ baseUrl: BASE_URL, token: TOKEN });
|
|
228
|
+
expect(result).toBe(true);
|
|
229
|
+
});
|
|
230
|
+
it("returns true when only pipes exist", async () => {
|
|
231
|
+
server.use(http.get(`${BASE_URL}/v0/datasources`, () => {
|
|
232
|
+
return HttpResponse.json({ datasources: [] });
|
|
233
|
+
}));
|
|
234
|
+
const result = await hasResources({ baseUrl: BASE_URL, token: TOKEN });
|
|
235
|
+
expect(result).toBe(true);
|
|
236
|
+
});
|
|
237
|
+
});
|
|
238
|
+
describe("ResourceApiError", () => {
|
|
239
|
+
it("includes status and endpoint", async () => {
|
|
240
|
+
server.use(http.get(`${BASE_URL}/v0/datasources`, () => {
|
|
241
|
+
return new HttpResponse("Unauthorized", { status: 401 });
|
|
242
|
+
}));
|
|
243
|
+
try {
|
|
244
|
+
await listDatasources({ baseUrl: BASE_URL, token: TOKEN });
|
|
245
|
+
expect.fail("Should have thrown");
|
|
246
|
+
}
|
|
247
|
+
catch (error) {
|
|
248
|
+
expect(error).toBeInstanceOf(ResourceApiError);
|
|
249
|
+
const apiError = error;
|
|
250
|
+
expect(apiError.status).toBe(401);
|
|
251
|
+
expect(apiError.endpoint).toBe("/v0/datasources");
|
|
252
|
+
}
|
|
253
|
+
});
|
|
254
|
+
});
|
|
255
|
+
//# sourceMappingURL=resources.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resources.test.js","sourceRoot":"","sources":["../../src/api/resources.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Build command - generates and pushes resources to Tinybird
|
|
2
|
+
* Build command - generates and pushes resources to Tinybird branches
|
|
3
3
|
*/
|
|
4
|
+
import { type DevMode } from "../config.js";
|
|
4
5
|
import { type BuildFromIncludeResult } from "../../generator/index.js";
|
|
5
6
|
import { type BuildApiResult } from "../../api/build.js";
|
|
6
7
|
/**
|
|
@@ -13,8 +14,8 @@ export interface BuildCommandOptions {
|
|
|
13
14
|
dryRun?: boolean;
|
|
14
15
|
/** Override the token from config (used for branch tokens) */
|
|
15
16
|
tokenOverride?: string;
|
|
16
|
-
/**
|
|
17
|
-
|
|
17
|
+
/** Override the devMode from config */
|
|
18
|
+
devModeOverride?: DevMode;
|
|
18
19
|
}
|
|
19
20
|
/**
|
|
20
21
|
* Build command result
|
|
@@ -34,7 +35,8 @@ export interface BuildCommandResult {
|
|
|
34
35
|
/**
|
|
35
36
|
* Run the build command
|
|
36
37
|
*
|
|
37
|
-
*
|
|
38
|
+
* Builds resources and pushes to Tinybird branches (not main).
|
|
39
|
+
* Use runDeploy for deploying to production.
|
|
38
40
|
*
|
|
39
41
|
* @param options - Build options
|
|
40
42
|
* @returns Build command result
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/build.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/build.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAmD,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAC7F,OAAO,EAAoB,KAAK,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACzF,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAS1E;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,0CAA0C;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,8DAA8D;IAC9D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uCAAuC;IACvC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,uCAAuC;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,sBAAsB,CAAC;IAC/B,wCAAwC;IACxC,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA8L7F"}
|