@tinybirdco/sdk 0.0.36 → 0.0.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/README.md +50 -1
  2. package/dist/api/api.d.ts +66 -1
  3. package/dist/api/api.d.ts.map +1 -1
  4. package/dist/api/api.js +114 -0
  5. package/dist/api/api.js.map +1 -1
  6. package/dist/api/api.test.js +192 -0
  7. package/dist/api/api.test.js.map +1 -1
  8. package/dist/api/tokens.d.ts +79 -0
  9. package/dist/api/tokens.d.ts.map +1 -0
  10. package/dist/api/tokens.js +80 -0
  11. package/dist/api/tokens.js.map +1 -0
  12. package/dist/api/tokens.test.d.ts +2 -0
  13. package/dist/api/tokens.test.d.ts.map +1 -0
  14. package/dist/api/tokens.test.js +209 -0
  15. package/dist/api/tokens.test.js.map +1 -0
  16. package/dist/cli/commands/init.d.ts +2 -0
  17. package/dist/cli/commands/init.d.ts.map +1 -1
  18. package/dist/cli/commands/init.js +2 -3
  19. package/dist/cli/commands/init.js.map +1 -1
  20. package/dist/client/base.d.ts +29 -1
  21. package/dist/client/base.d.ts.map +1 -1
  22. package/dist/client/base.js +44 -0
  23. package/dist/client/base.js.map +1 -1
  24. package/dist/client/base.test.js +25 -0
  25. package/dist/client/base.test.js.map +1 -1
  26. package/dist/client/tokens.d.ts +42 -0
  27. package/dist/client/tokens.d.ts.map +1 -0
  28. package/dist/client/tokens.js +67 -0
  29. package/dist/client/tokens.js.map +1 -0
  30. package/dist/client/tokens.test.d.ts +2 -0
  31. package/dist/client/tokens.test.d.ts.map +1 -0
  32. package/dist/client/tokens.test.js +79 -0
  33. package/dist/client/tokens.test.js.map +1 -0
  34. package/dist/client/types.d.ts +49 -0
  35. package/dist/client/types.d.ts.map +1 -1
  36. package/dist/index.d.ts +4 -2
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +2 -0
  39. package/dist/index.js.map +1 -1
  40. package/dist/schema/project.d.ts +40 -12
  41. package/dist/schema/project.d.ts.map +1 -1
  42. package/dist/schema/project.js +67 -13
  43. package/dist/schema/project.js.map +1 -1
  44. package/dist/schema/project.test.js +63 -10
  45. package/dist/schema/project.test.js.map +1 -1
  46. package/package.json +1 -1
  47. package/src/api/api.test.ts +265 -0
  48. package/src/api/api.ts +196 -0
  49. package/src/api/tokens.test.ts +253 -0
  50. package/src/api/tokens.ts +169 -0
  51. package/src/cli/commands/init.ts +5 -3
  52. package/src/client/base.test.ts +32 -0
  53. package/src/client/base.ts +60 -0
  54. package/src/client/tokens.test.ts +103 -0
  55. package/src/client/tokens.ts +69 -0
  56. package/src/client/types.ts +54 -0
  57. package/src/index.ts +20 -0
  58. package/src/schema/project.test.ts +75 -10
  59. package/src/schema/project.ts +134 -27
package/README.md CHANGED
@@ -166,7 +166,7 @@ await tinybird.ingest.pageViews({
166
166
  });
167
167
 
168
168
  // Type-safe queries with autocomplete
169
- const result = await tinybird.query.topPages({
169
+ const result = await tinybird.topPages.query({
170
170
  start_date: new Date("2024-01-01"),
171
171
  end_date: new Date(),
172
172
  limit: 5,
@@ -222,6 +222,55 @@ This Tinybird API is standalone and can be used without `createClient()` or `cre
222
222
  It is intended for cases where you want a simple public API that remains
223
223
  decoupled from the higher-level typed client APIs.
224
224
 
225
+ ## JWT Token Creation
226
+
227
+ Create short-lived JWT tokens for secure, scoped access to your Tinybird resources. This is useful for:
228
+ - Frontend applications that need to call Tinybird APIs directly from browsers
229
+ - Multi-tenant applications requiring row-level security
230
+ - Time-limited access with automatic expiration
231
+
232
+ ```typescript
233
+ import { createClient } from "@tinybirdco/sdk";
234
+
235
+ const client = createClient({
236
+ baseUrl: "https://api.tinybird.co",
237
+ token: process.env.TINYBIRD_ADMIN_TOKEN!, // Requires ADMIN scope
238
+ });
239
+
240
+ // Create a JWT token with scoped access
241
+ const { token } = await client.tokens.createJWT({
242
+ name: "user_123_session",
243
+ expiresAt: new Date(Date.now() + 60 * 60 * 1000), // 1 hour
244
+ scopes: [
245
+ {
246
+ type: "PIPES:READ",
247
+ resource: "user_dashboard",
248
+ fixed_params: { user_id: 123 }, // Row-level security
249
+ },
250
+ ],
251
+ limits: { rps: 10 }, // Optional rate limiting
252
+ });
253
+
254
+ // Use the JWT token for client-side queries
255
+ const userClient = createClient({
256
+ baseUrl: "https://api.tinybird.co",
257
+ token, // The JWT
258
+ });
259
+ ```
260
+
261
+ ### Scope Types
262
+
263
+ | Scope | Description |
264
+ |-------|-------------|
265
+ | `PIPES:READ` | Read access to a specific pipe endpoint |
266
+ | `DATASOURCES:READ` | Read access to a datasource (with optional `filter`) |
267
+ | `DATASOURCES:APPEND` | Append access to a datasource |
268
+
269
+ ### Scope Options
270
+
271
+ - **`fixed_params`**: For pipes, embed parameters that cannot be overridden by the caller
272
+ - **`filter`**: For datasources, append a SQL WHERE clause (e.g., `"org_id = 'acme'"`)
273
+
225
274
  ## CLI Commands
226
275
 
227
276
  ### `npx tinybird init`
package/dist/api/api.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { IngestOptions, IngestResult, QueryOptions, QueryResult, TinybirdErrorResponse } from "../client/types.js";
1
+ import type { AppendOptions, AppendResult, IngestOptions, IngestResult, QueryOptions, QueryResult, TinybirdErrorResponse } from "../client/types.js";
2
2
  /**
3
3
  * Public, decoupled Tinybird API wrapper configuration
4
4
  */
@@ -27,6 +27,54 @@ export interface TinybirdApiIngestOptions extends IngestOptions {
27
27
  /** Optional token override for this request */
28
28
  token?: string;
29
29
  }
30
+ export interface TinybirdApiAppendOptions extends Omit<AppendOptions, 'url' | 'file'> {
31
+ /** Optional token override for this request */
32
+ token?: string;
33
+ }
34
+ /**
35
+ * Scope definition for token creation APIs
36
+ */
37
+ export interface TinybirdApiTokenScope {
38
+ type: string;
39
+ resource?: string;
40
+ fixed_params?: Record<string, string | number | boolean>;
41
+ filter?: string;
42
+ }
43
+ /**
44
+ * Request body for creating Tinybird tokens.
45
+ * Supports JWT-style scopes and static-token scope strings.
46
+ */
47
+ export interface TinybirdApiCreateTokenRequest {
48
+ /** Token name/identifier */
49
+ name: string;
50
+ /** JWT-style scopes */
51
+ scopes?: TinybirdApiTokenScope[];
52
+ /** Static-token scope strings */
53
+ scope?: string | string[];
54
+ /** Optional rate-limiting config */
55
+ limits?: {
56
+ rps?: number;
57
+ };
58
+ }
59
+ /**
60
+ * Options for token creation requests
61
+ */
62
+ export interface TinybirdApiCreateTokenOptions {
63
+ /** Optional expiration time for JWT tokens */
64
+ expirationTime?: number;
65
+ /** Optional token override for this request */
66
+ token?: string;
67
+ /** Request timeout in milliseconds */
68
+ timeout?: number;
69
+ /** AbortController signal for cancellation */
70
+ signal?: AbortSignal;
71
+ }
72
+ /**
73
+ * Result of token creation
74
+ */
75
+ export interface TinybirdApiCreateTokenResult {
76
+ token: string;
77
+ }
30
78
  /**
31
79
  * Error thrown by TinybirdApi when a response is not OK
32
80
  */
@@ -72,6 +120,23 @@ export declare class TinybirdApi {
72
120
  * Execute raw SQL against Tinybird
73
121
  */
74
122
  sql<T = unknown>(sql: string, options?: TinybirdApiQueryOptions): Promise<QueryResult<T>>;
123
+ /**
124
+ * Append data to a datasource from a URL or local file
125
+ */
126
+ appendDatasource(datasourceName: string, options: AppendOptions, apiOptions?: TinybirdApiAppendOptions): Promise<AppendResult>;
127
+ /**
128
+ * Create a token using Tinybird Token API.
129
+ * Supports both static and JWT token payloads.
130
+ */
131
+ createToken(body: TinybirdApiCreateTokenRequest, options?: TinybirdApiCreateTokenOptions): Promise<TinybirdApiCreateTokenResult>;
132
+ /**
133
+ * Detect format from file path or URL extension
134
+ */
135
+ private detectFormat;
136
+ /**
137
+ * Create FormData for file upload
138
+ */
139
+ private createFileFormData;
75
140
  private createAbortSignal;
76
141
  private serializeEvent;
77
142
  private serializeValue;
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api/api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,qBAAqB,EACtB,MAAM,oBAAoB,CAAC;AAI5B;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,WAAW;IACzD,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,uBAAwB,SAAQ,YAAY;IAC3D,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,wBAAyB,SAAQ,aAAa;IAC7D,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,qBAAqB,CAAC;gBAGxC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,EACrB,QAAQ,CAAC,EAAE,qBAAqB;CAQnC;AAED;;;;;GAKG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;gBAE5B,MAAM,EAAE,iBAAiB;IAerC;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,sBAA2B,GAAG,OAAO,CAAC,QAAQ,CAAC;IAe3E;;OAEG;IACG,WAAW,CAAC,CAAC,GAAG,OAAO,EAC3B,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,sBAA2B,GAChC,OAAO,CAAC,CAAC,CAAC;IAUb;;OAEG;IACG,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClF,YAAY,EAAE,MAAM,EACpB,MAAM,GAAE,CAAW,EACnB,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAoC1B;;OAEG;IACG,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5C,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,CAAC,EACR,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,YAAY,CAAC;IAIxB;;OAEG;IACG,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjD,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,CAAC,EAAE,EACX,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,YAAY,CAAC;IAiCxB;;OAEG;IACG,GAAG,CAAC,CAAC,GAAG,OAAO,EACnB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAkB1B,OAAO,CAAC,iBAAiB;IAuBzB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,cAAc;YAwBR,mBAAmB;IAwBjC,OAAO,CAAC,UAAU;CAGnB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,iBAAiB,GACxB,WAAW,CAEb;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB,0BAAoB,CAAC"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api/api.ts"],"names":[],"mappings":"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"}
package/dist/api/api.js CHANGED
@@ -147,6 +147,120 @@ export class TinybirdApi {
147
147
  }
148
148
  return (await response.json());
149
149
  }
150
+ /**
151
+ * Append data to a datasource from a URL or local file
152
+ */
153
+ async appendDatasource(datasourceName, options, apiOptions = {}) {
154
+ const { url: sourceUrl, file: filePath } = options;
155
+ if (!sourceUrl && !filePath) {
156
+ throw new Error("Either 'url' or 'file' must be provided in options");
157
+ }
158
+ if (sourceUrl && filePath) {
159
+ throw new Error("Only one of 'url' or 'file' can be provided, not both");
160
+ }
161
+ const url = new URL("/v0/datasources", `${this.baseUrl}/`);
162
+ url.searchParams.set("name", datasourceName);
163
+ url.searchParams.set("mode", "append");
164
+ // Auto-detect format from file/url extension
165
+ const format = this.detectFormat(sourceUrl ?? filePath);
166
+ if (format) {
167
+ url.searchParams.set("format", format);
168
+ }
169
+ // Add CSV dialect options if applicable
170
+ if (options.csvDialect) {
171
+ if (options.csvDialect.delimiter) {
172
+ url.searchParams.set("dialect_delimiter", options.csvDialect.delimiter);
173
+ }
174
+ if (options.csvDialect.newLine) {
175
+ url.searchParams.set("dialect_new_line", options.csvDialect.newLine);
176
+ }
177
+ if (options.csvDialect.escapeChar) {
178
+ url.searchParams.set("dialect_escapechar", options.csvDialect.escapeChar);
179
+ }
180
+ }
181
+ let response;
182
+ if (sourceUrl) {
183
+ // Remote URL: send as form-urlencoded with url parameter
184
+ response = await this.request(url.toString(), {
185
+ method: "POST",
186
+ token: apiOptions.token,
187
+ headers: {
188
+ "Content-Type": "application/x-www-form-urlencoded",
189
+ },
190
+ body: `url=${encodeURIComponent(sourceUrl)}`,
191
+ signal: this.createAbortSignal(options.timeout ?? apiOptions.timeout, options.signal ?? apiOptions.signal),
192
+ });
193
+ }
194
+ else {
195
+ // Local file: send as multipart form data
196
+ const formData = await this.createFileFormData(filePath);
197
+ response = await this.request(url.toString(), {
198
+ method: "POST",
199
+ token: apiOptions.token,
200
+ body: formData,
201
+ signal: this.createAbortSignal(options.timeout ?? apiOptions.timeout, options.signal ?? apiOptions.signal),
202
+ });
203
+ }
204
+ if (!response.ok) {
205
+ await this.handleErrorResponse(response);
206
+ }
207
+ return (await response.json());
208
+ }
209
+ /**
210
+ * Create a token using Tinybird Token API.
211
+ * Supports both static and JWT token payloads.
212
+ */
213
+ async createToken(body, options = {}) {
214
+ const url = new URL("/v0/tokens/", `${this.baseUrl}/`);
215
+ if (options.expirationTime !== undefined) {
216
+ url.searchParams.set("expiration_time", String(options.expirationTime));
217
+ }
218
+ const response = await this.request(url.toString(), {
219
+ method: "POST",
220
+ token: options.token,
221
+ headers: {
222
+ "Content-Type": "application/json",
223
+ },
224
+ body: JSON.stringify(body),
225
+ signal: this.createAbortSignal(options.timeout, options.signal),
226
+ });
227
+ if (!response.ok) {
228
+ await this.handleErrorResponse(response);
229
+ }
230
+ return (await response.json());
231
+ }
232
+ /**
233
+ * Detect format from file path or URL extension
234
+ */
235
+ detectFormat(source) {
236
+ // Remove query string if present
237
+ const pathOnly = source.split("?")[0];
238
+ const extension = pathOnly.split(".").pop()?.toLowerCase();
239
+ switch (extension) {
240
+ case "csv":
241
+ return "csv";
242
+ case "ndjson":
243
+ case "jsonl":
244
+ return "ndjson";
245
+ case "parquet":
246
+ return "parquet";
247
+ default:
248
+ return undefined;
249
+ }
250
+ }
251
+ /**
252
+ * Create FormData for file upload
253
+ */
254
+ async createFileFormData(filePath) {
255
+ // Dynamic import for Node.js fs module (browser-safe)
256
+ const fs = await import("node:fs");
257
+ const path = await import("node:path");
258
+ const fileContent = await fs.promises.readFile(filePath);
259
+ const fileName = path.basename(filePath);
260
+ const formData = new FormData();
261
+ formData.append("csv", new Blob([fileContent]), fileName);
262
+ return formData;
263
+ }
150
264
  createAbortSignal(timeout, existingSignal) {
151
265
  const timeoutMs = timeout ?? this.config.timeout ?? DEFAULT_TIMEOUT;
152
266
  if (!timeoutMs && !existingSignal) {
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/api/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/api/api.ts"],"names":[],"mappings":"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"}
@@ -166,6 +166,38 @@ describe("TinybirdApi", () => {
166
166
  expect(contentType).toBe("text/plain");
167
167
  expect(rawSql).toBe("SELECT 1 AS value");
168
168
  });
169
+ it("creates tokens via tinybirdApi.createToken", async () => {
170
+ let expirationTime = null;
171
+ let fromParam = null;
172
+ let contentType = null;
173
+ let parsedBody = null;
174
+ server.use(http.post(`${BASE_URL}/v0/tokens/`, async ({ request }) => {
175
+ const url = new URL(request.url);
176
+ expirationTime = url.searchParams.get("expiration_time");
177
+ fromParam = url.searchParams.get("from");
178
+ contentType = request.headers.get("content-type");
179
+ parsedBody = (await request.json());
180
+ return HttpResponse.json({
181
+ token: "eyJ.test",
182
+ });
183
+ }));
184
+ const api = createTinybirdApi({
185
+ baseUrl: BASE_URL,
186
+ token: "p.default-token",
187
+ });
188
+ const result = await api.createToken({
189
+ name: "user_token",
190
+ scopes: [{ type: "PIPES:READ", resource: "pipe_a" }],
191
+ }, { expirationTime: 1700000000 });
192
+ expect(result).toEqual({ token: "eyJ.test" });
193
+ expect(expirationTime).toBe("1700000000");
194
+ expect(fromParam).toBe(TINYBIRD_FROM_PARAM);
195
+ expect(contentType).toBe("application/json");
196
+ expect(parsedBody).toEqual({
197
+ name: "user_token",
198
+ scopes: [{ type: "PIPES:READ", resource: "pipe_a" }],
199
+ });
200
+ });
169
201
  it("returns zero counts for empty ingest batches", async () => {
170
202
  const api = createTinybirdApi({
171
203
  baseUrl: BASE_URL,
@@ -222,5 +254,165 @@ describe("TinybirdApi", () => {
222
254
  },
223
255
  });
224
256
  });
257
+ describe("appendDatasource", () => {
258
+ it("appends data from URL", async () => {
259
+ let datasourceName = null;
260
+ let modeParam = null;
261
+ let formatParam = null;
262
+ let contentType = null;
263
+ let requestBody = null;
264
+ server.use(http.post(`${BASE_URL}/v0/datasources`, async ({ request }) => {
265
+ const url = new URL(request.url);
266
+ datasourceName = url.searchParams.get("name");
267
+ modeParam = url.searchParams.get("mode");
268
+ formatParam = url.searchParams.get("format");
269
+ contentType = request.headers.get("content-type");
270
+ requestBody = await request.text();
271
+ return HttpResponse.json({
272
+ successful_rows: 100,
273
+ quarantined_rows: 0,
274
+ import_id: "import_123",
275
+ });
276
+ }));
277
+ const api = createTinybirdApi({
278
+ baseUrl: BASE_URL,
279
+ token: "p.default-token",
280
+ });
281
+ const result = await api.appendDatasource("events", {
282
+ url: "https://example.com/data.csv",
283
+ });
284
+ expect(result).toEqual({
285
+ successful_rows: 100,
286
+ quarantined_rows: 0,
287
+ import_id: "import_123",
288
+ });
289
+ expect(datasourceName).toBe("events");
290
+ expect(modeParam).toBe("append");
291
+ expect(formatParam).toBe("csv");
292
+ expect(contentType).toBe("application/x-www-form-urlencoded");
293
+ expect(requestBody).toBe("url=https%3A%2F%2Fexample.com%2Fdata.csv");
294
+ });
295
+ it("detects ndjson format from URL extension", async () => {
296
+ let formatParam = null;
297
+ server.use(http.post(`${BASE_URL}/v0/datasources`, async ({ request }) => {
298
+ const url = new URL(request.url);
299
+ formatParam = url.searchParams.get("format");
300
+ return HttpResponse.json({ successful_rows: 1, quarantined_rows: 0 });
301
+ }));
302
+ const api = createTinybirdApi({
303
+ baseUrl: BASE_URL,
304
+ token: "p.default-token",
305
+ });
306
+ await api.appendDatasource("events", {
307
+ url: "https://example.com/data.ndjson",
308
+ });
309
+ expect(formatParam).toBe("ndjson");
310
+ });
311
+ it("detects jsonl as ndjson format", async () => {
312
+ let formatParam = null;
313
+ server.use(http.post(`${BASE_URL}/v0/datasources`, async ({ request }) => {
314
+ const url = new URL(request.url);
315
+ formatParam = url.searchParams.get("format");
316
+ return HttpResponse.json({ successful_rows: 1, quarantined_rows: 0 });
317
+ }));
318
+ const api = createTinybirdApi({
319
+ baseUrl: BASE_URL,
320
+ token: "p.default-token",
321
+ });
322
+ await api.appendDatasource("events", {
323
+ url: "https://example.com/data.jsonl",
324
+ });
325
+ expect(formatParam).toBe("ndjson");
326
+ });
327
+ it("detects parquet format from URL extension", async () => {
328
+ let formatParam = null;
329
+ server.use(http.post(`${BASE_URL}/v0/datasources`, async ({ request }) => {
330
+ const url = new URL(request.url);
331
+ formatParam = url.searchParams.get("format");
332
+ return HttpResponse.json({ successful_rows: 1, quarantined_rows: 0 });
333
+ }));
334
+ const api = createTinybirdApi({
335
+ baseUrl: BASE_URL,
336
+ token: "p.default-token",
337
+ });
338
+ await api.appendDatasource("events", {
339
+ url: "https://example.com/data.parquet",
340
+ });
341
+ expect(formatParam).toBe("parquet");
342
+ });
343
+ it("strips query string when detecting format", async () => {
344
+ let formatParam = null;
345
+ server.use(http.post(`${BASE_URL}/v0/datasources`, async ({ request }) => {
346
+ const url = new URL(request.url);
347
+ formatParam = url.searchParams.get("format");
348
+ return HttpResponse.json({ successful_rows: 1, quarantined_rows: 0 });
349
+ }));
350
+ const api = createTinybirdApi({
351
+ baseUrl: BASE_URL,
352
+ token: "p.default-token",
353
+ });
354
+ await api.appendDatasource("events", {
355
+ url: "https://example.com/data.csv?token=abc",
356
+ });
357
+ expect(formatParam).toBe("csv");
358
+ });
359
+ it("includes CSV dialect options", async () => {
360
+ let delimiterParam = null;
361
+ let newLineParam = null;
362
+ let escapeCharParam = null;
363
+ server.use(http.post(`${BASE_URL}/v0/datasources`, async ({ request }) => {
364
+ const url = new URL(request.url);
365
+ delimiterParam = url.searchParams.get("dialect_delimiter");
366
+ newLineParam = url.searchParams.get("dialect_new_line");
367
+ escapeCharParam = url.searchParams.get("dialect_escapechar");
368
+ return HttpResponse.json({ successful_rows: 1, quarantined_rows: 0 });
369
+ }));
370
+ const api = createTinybirdApi({
371
+ baseUrl: BASE_URL,
372
+ token: "p.default-token",
373
+ });
374
+ await api.appendDatasource("events", {
375
+ url: "https://example.com/data.csv",
376
+ csvDialect: {
377
+ delimiter: ";",
378
+ newLine: "\r\n",
379
+ escapeChar: "\\",
380
+ },
381
+ });
382
+ expect(delimiterParam).toBe(";");
383
+ expect(newLineParam).toBe("\r\n");
384
+ expect(escapeCharParam).toBe("\\");
385
+ });
386
+ it("throws error when neither url nor file is provided", async () => {
387
+ const api = createTinybirdApi({
388
+ baseUrl: BASE_URL,
389
+ token: "p.default-token",
390
+ });
391
+ await expect(api.appendDatasource("events", {})).rejects.toThrow("Either 'url' or 'file' must be provided in options");
392
+ });
393
+ it("throws error when both url and file are provided", async () => {
394
+ const api = createTinybirdApi({
395
+ baseUrl: BASE_URL,
396
+ token: "p.default-token",
397
+ });
398
+ await expect(api.appendDatasource("events", {
399
+ url: "https://example.com/data.csv",
400
+ file: "./data.csv",
401
+ })).rejects.toThrow("Only one of 'url' or 'file' can be provided, not both");
402
+ });
403
+ it("allows per-request token override", async () => {
404
+ let authorizationHeader = null;
405
+ server.use(http.post(`${BASE_URL}/v0/datasources`, async ({ request }) => {
406
+ authorizationHeader = request.headers.get("Authorization");
407
+ return HttpResponse.json({ successful_rows: 1, quarantined_rows: 0 });
408
+ }));
409
+ const api = createTinybirdApi({
410
+ baseUrl: BASE_URL,
411
+ token: "p.default-token",
412
+ });
413
+ await api.appendDatasource("events", { url: "https://example.com/data.csv" }, { token: "p.override-token" });
414
+ expect(authorizationHeader).toBe("Bearer p.override-token");
415
+ });
416
+ });
225
417
  });
226
418
  //# sourceMappingURL=api.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.test.js","sourceRoot":"","sources":["../../src/api/api.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.test.js","sourceRoot":"","sources":["../../src/api/api.test.ts"],"names":[],"mappings":"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"}