@tinybirdco/sdk 0.0.21 → 0.0.23
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/dist/client/base.d.ts +36 -5
- package/dist/client/base.d.ts.map +1 -1
- package/dist/client/base.js +67 -18
- package/dist/client/base.js.map +1 -1
- package/dist/client/base.test.d.ts +2 -0
- package/dist/client/base.test.d.ts.map +1 -0
- package/dist/client/base.test.js +113 -0
- package/dist/client/base.test.js.map +1 -0
- package/dist/client/types.d.ts +18 -0
- package/dist/client/types.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/client/base.test.ts +140 -0
- package/src/client/base.ts +72 -18
- package/src/client/types.ts +19 -0
- package/src/index.ts +1 -0
package/dist/client/base.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Tinybird client for querying pipes and ingesting events
|
|
3
3
|
*/
|
|
4
|
-
import type { ClientConfig, QueryResult, IngestResult, QueryOptions, IngestOptions } from "./types.js";
|
|
4
|
+
import type { ClientConfig, ClientContext, QueryResult, IngestResult, QueryOptions, IngestOptions } from "./types.js";
|
|
5
5
|
/**
|
|
6
6
|
* Tinybird API client
|
|
7
7
|
*
|
|
@@ -33,17 +33,26 @@ import type { ClientConfig, QueryResult, IngestResult, QueryOptions, IngestOptio
|
|
|
33
33
|
export declare class TinybirdClient {
|
|
34
34
|
private readonly config;
|
|
35
35
|
private readonly apisByToken;
|
|
36
|
-
private
|
|
37
|
-
private
|
|
36
|
+
private contextPromise;
|
|
37
|
+
private resolvedContext;
|
|
38
38
|
constructor(config: ClientConfig);
|
|
39
39
|
/**
|
|
40
40
|
* Get the effective token, resolving branch token in dev mode if needed
|
|
41
41
|
*/
|
|
42
42
|
private getToken;
|
|
43
43
|
/**
|
|
44
|
-
* Resolve the branch token in dev mode
|
|
44
|
+
* Resolve the client context, including branch token resolution in dev mode
|
|
45
|
+
* This is the single source of truth for all context data
|
|
45
46
|
*/
|
|
46
|
-
private
|
|
47
|
+
private resolveContext;
|
|
48
|
+
/**
|
|
49
|
+
* Build the client context from resolved token info
|
|
50
|
+
*/
|
|
51
|
+
private buildContext;
|
|
52
|
+
/**
|
|
53
|
+
* Resolve the branch context in dev mode
|
|
54
|
+
*/
|
|
55
|
+
private resolveBranchContext;
|
|
47
56
|
/**
|
|
48
57
|
* Query a pipe endpoint
|
|
49
58
|
*
|
|
@@ -79,6 +88,28 @@ export declare class TinybirdClient {
|
|
|
79
88
|
* @returns Query result
|
|
80
89
|
*/
|
|
81
90
|
sql<T = unknown>(sql: string, options?: QueryOptions): Promise<QueryResult<T>>;
|
|
91
|
+
/**
|
|
92
|
+
* Get the current client context
|
|
93
|
+
*
|
|
94
|
+
* Returns information about the resolved configuration including the token being used,
|
|
95
|
+
* API URL, dev mode status, and branch information.
|
|
96
|
+
*
|
|
97
|
+
* @returns Client context with resolved configuration
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* ```ts
|
|
101
|
+
* const client = createClient({
|
|
102
|
+
* baseUrl: 'https://api.tinybird.co',
|
|
103
|
+
* token: process.env.TINYBIRD_TOKEN,
|
|
104
|
+
* devMode: true,
|
|
105
|
+
* });
|
|
106
|
+
*
|
|
107
|
+
* const context = await client.getContext();
|
|
108
|
+
* console.log(context.branchName); // 'feature_my_branch'
|
|
109
|
+
* console.log(context.isBranchToken); // true
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
112
|
+
getContext(): Promise<ClientContext>;
|
|
82
113
|
private getApi;
|
|
83
114
|
private rethrowApiError;
|
|
84
115
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/client/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,EACd,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/client/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,EACd,MAAM,YAAY,CAAC;AAcpB;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkC;IAC9D,OAAO,CAAC,cAAc,CAAuC;IAC7D,OAAO,CAAC,eAAe,CAA8B;gBAEzC,MAAM,EAAE,YAAY;IAgBhC;;OAEG;YACW,QAAQ;IAKtB;;;OAGG;YACW,cAAc;IAwB5B;;OAEG;IACH,OAAO,CAAC,YAAY;IAWpB;;OAEG;YACW,oBAAoB;IAwClC;;;;;;;OAOG;IACG,KAAK,CAAC,CAAC,GAAG,OAAO,EACrB,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACpC,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAU1B;;;;;;;OAOG;IACG,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5C,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,CAAC,EACR,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC;IAIxB;;;;;;;OAOG;IACG,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjD,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,CAAC,EAAE,EACX,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC;IAUxB;;;;;;OAMG;IACG,GAAG,CAAC,CAAC,GAAG,OAAO,EACnB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAU1B;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC;IAI1C,OAAO,CAAC,MAAM;IAiBd,OAAO,CAAC,eAAe;CAWxB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,cAAc,CAEjE"}
|
package/dist/client/base.js
CHANGED
|
@@ -34,8 +34,8 @@ import { TinybirdApi, TinybirdApiError } from "../api/api.js";
|
|
|
34
34
|
export class TinybirdClient {
|
|
35
35
|
config;
|
|
36
36
|
apisByToken = new Map();
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
contextPromise = null;
|
|
38
|
+
resolvedContext = null;
|
|
39
39
|
constructor(config) {
|
|
40
40
|
// Validate required config
|
|
41
41
|
if (!config.baseUrl) {
|
|
@@ -54,53 +54,78 @@ export class TinybirdClient {
|
|
|
54
54
|
* Get the effective token, resolving branch token in dev mode if needed
|
|
55
55
|
*/
|
|
56
56
|
async getToken() {
|
|
57
|
+
const context = await this.resolveContext();
|
|
58
|
+
return context.token;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Resolve the client context, including branch token resolution in dev mode
|
|
62
|
+
* This is the single source of truth for all context data
|
|
63
|
+
*/
|
|
64
|
+
async resolveContext() {
|
|
57
65
|
// If already resolved, return it
|
|
58
|
-
if (this.
|
|
59
|
-
return this.
|
|
66
|
+
if (this.resolvedContext) {
|
|
67
|
+
return this.resolvedContext;
|
|
60
68
|
}
|
|
61
69
|
// If not in dev mode, use the configured token
|
|
62
70
|
if (!this.config.devMode) {
|
|
63
|
-
this.
|
|
64
|
-
|
|
71
|
+
this.resolvedContext = this.buildContext({
|
|
72
|
+
token: this.config.token,
|
|
73
|
+
isBranchToken: false,
|
|
74
|
+
});
|
|
75
|
+
return this.resolvedContext;
|
|
65
76
|
}
|
|
66
77
|
// In dev mode, lazily resolve the branch token
|
|
67
|
-
if (!this.
|
|
68
|
-
this.
|
|
78
|
+
if (!this.contextPromise) {
|
|
79
|
+
this.contextPromise = this.resolveBranchContext();
|
|
69
80
|
}
|
|
70
|
-
|
|
71
|
-
this.
|
|
72
|
-
|
|
81
|
+
this.resolvedContext = await this.contextPromise;
|
|
82
|
+
return this.resolvedContext;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Build the client context from resolved token info
|
|
86
|
+
*/
|
|
87
|
+
buildContext(tokenInfo) {
|
|
88
|
+
return {
|
|
89
|
+
token: tokenInfo.token,
|
|
90
|
+
baseUrl: this.config.baseUrl,
|
|
91
|
+
devMode: this.config.devMode ?? false,
|
|
92
|
+
isBranchToken: tokenInfo.isBranchToken,
|
|
93
|
+
branchName: tokenInfo.branchName ?? null,
|
|
94
|
+
gitBranch: tokenInfo.gitBranch ?? null,
|
|
95
|
+
};
|
|
73
96
|
}
|
|
74
97
|
/**
|
|
75
|
-
* Resolve the branch
|
|
98
|
+
* Resolve the branch context in dev mode
|
|
76
99
|
*/
|
|
77
|
-
async
|
|
100
|
+
async resolveBranchContext() {
|
|
78
101
|
try {
|
|
79
102
|
// Dynamic import to avoid circular dependencies and to keep CLI code
|
|
80
103
|
// out of the client bundle when not using dev mode
|
|
81
104
|
const { loadConfig } = await import("../cli/config.js");
|
|
82
105
|
const { getOrCreateBranch } = await import("../api/branches.js");
|
|
83
106
|
const config = loadConfig();
|
|
107
|
+
const gitBranch = config.gitBranch ?? undefined;
|
|
84
108
|
// If on main branch, use the workspace token
|
|
85
109
|
if (config.isMainBranch || !config.tinybirdBranch) {
|
|
86
|
-
return { token: this.config.token, isBranchToken: false };
|
|
110
|
+
return this.buildContext({ token: this.config.token, isBranchToken: false, gitBranch });
|
|
87
111
|
}
|
|
88
112
|
const branchName = config.tinybirdBranch;
|
|
89
113
|
// Get or create branch (always fetch fresh to avoid stale cache issues)
|
|
90
114
|
const branch = await getOrCreateBranch({ baseUrl: this.config.baseUrl, token: this.config.token }, branchName);
|
|
91
115
|
if (!branch.token) {
|
|
92
116
|
// Fall back to workspace token if no branch token
|
|
93
|
-
return { token: this.config.token, isBranchToken: false };
|
|
117
|
+
return this.buildContext({ token: this.config.token, isBranchToken: false, gitBranch });
|
|
94
118
|
}
|
|
95
|
-
return {
|
|
119
|
+
return this.buildContext({
|
|
96
120
|
token: branch.token,
|
|
97
121
|
isBranchToken: true,
|
|
98
122
|
branchName,
|
|
99
|
-
|
|
123
|
+
gitBranch,
|
|
124
|
+
});
|
|
100
125
|
}
|
|
101
126
|
catch {
|
|
102
127
|
// If anything fails, fall back to the workspace token
|
|
103
|
-
return { token: this.config.token, isBranchToken: false };
|
|
128
|
+
return this.buildContext({ token: this.config.token, isBranchToken: false });
|
|
104
129
|
}
|
|
105
130
|
}
|
|
106
131
|
/**
|
|
@@ -164,6 +189,30 @@ export class TinybirdClient {
|
|
|
164
189
|
this.rethrowApiError(error);
|
|
165
190
|
}
|
|
166
191
|
}
|
|
192
|
+
/**
|
|
193
|
+
* Get the current client context
|
|
194
|
+
*
|
|
195
|
+
* Returns information about the resolved configuration including the token being used,
|
|
196
|
+
* API URL, dev mode status, and branch information.
|
|
197
|
+
*
|
|
198
|
+
* @returns Client context with resolved configuration
|
|
199
|
+
*
|
|
200
|
+
* @example
|
|
201
|
+
* ```ts
|
|
202
|
+
* const client = createClient({
|
|
203
|
+
* baseUrl: 'https://api.tinybird.co',
|
|
204
|
+
* token: process.env.TINYBIRD_TOKEN,
|
|
205
|
+
* devMode: true,
|
|
206
|
+
* });
|
|
207
|
+
*
|
|
208
|
+
* const context = await client.getContext();
|
|
209
|
+
* console.log(context.branchName); // 'feature_my_branch'
|
|
210
|
+
* console.log(context.isBranchToken); // true
|
|
211
|
+
* ```
|
|
212
|
+
*/
|
|
213
|
+
async getContext() {
|
|
214
|
+
return this.resolveContext();
|
|
215
|
+
}
|
|
167
216
|
getApi(token) {
|
|
168
217
|
const existing = this.apisByToken.get(token);
|
|
169
218
|
if (existing) {
|
package/dist/client/base.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/client/base.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/client/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAY9D;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,OAAO,cAAc;IACR,MAAM,CAAe;IACrB,WAAW,GAAG,IAAI,GAAG,EAAuB,CAAC;IACtD,cAAc,GAAkC,IAAI,CAAC;IACrD,eAAe,GAAyB,IAAI,CAAC;IAErD,YAAY,MAAoB;QAC9B,2BAA2B;QAC3B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QAED,6CAA6C;QAC7C,IAAI,CAAC,MAAM,GAAG;YACZ,GAAG,MAAM;YACT,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;SAC3C,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,QAAQ;QACpB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5C,OAAO,OAAO,CAAC,KAAK,CAAC;IACvB,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,cAAc;QAC1B,iCAAiC;QACjC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,eAAe,CAAC;QAC9B,CAAC;QAED,+CAA+C;QAC/C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC;gBACvC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;gBACxB,aAAa,EAAE,KAAK;aACrB,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,eAAe,CAAC;QAC9B,CAAC;QAED,+CAA+C;QAC/C,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACpD,CAAC;QAED,IAAI,CAAC,eAAe,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC;QACjD,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,SAA4B;QAC/C,OAAO;YACL,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK;YACrC,aAAa,EAAE,SAAS,CAAC,aAAa;YACtC,UAAU,EAAE,SAAS,CAAC,UAAU,IAAI,IAAI;YACxC,SAAS,EAAE,SAAS,CAAC,SAAS,IAAI,IAAI;SACvC,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,oBAAoB;QAChC,IAAI,CAAC;YACH,qEAAqE;YACrE,mDAAmD;YACnD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;YACxD,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YAEjE,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;YAC5B,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC;YAEhD,6CAA6C;YAC7C,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;gBAClD,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YAC1F,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,CAAC,cAAc,CAAC;YAEzC,wEAAwE;YACxE,MAAM,MAAM,GAAG,MAAM,iBAAiB,CACpC,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAC1D,UAAU,CACX,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAClB,kDAAkD;gBAClD,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YAC1F,CAAC;YAED,OAAO,IAAI,CAAC,YAAY,CAAC;gBACvB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,aAAa,EAAE,IAAI;gBACnB,UAAU;gBACV,SAAS;aACV,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,sDAAsD;YACtD,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,KAAK,CACT,QAAgB,EAChB,SAAkC,EAAE,EACpC,UAAwB,EAAE;QAE1B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEpC,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAI,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACtE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,MAAM,CACV,cAAsB,EACtB,KAAQ,EACR,UAAyB,EAAE;QAE3B,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,WAAW,CACf,cAAsB,EACtB,MAAW,EACX,UAAyB,EAAE;QAE3B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEpC,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,GAAG,CACP,GAAW,EACX,UAAwB,EAAE;QAE1B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEpC,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAI,GAAG,EAAE,OAAO,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,KAAK,CAAC,UAAU;QACd,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;IAC/B,CAAC;IAEO,MAAM,CAAC,KAAa;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC;YAC1B,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,KAAK;YACL,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;YACxB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;SAC7B,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACjC,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,eAAe,CAAC,KAAc;QACpC,IAAI,KAAK,YAAY,gBAAgB,EAAE,CAAC;YACtC,MAAM,IAAI,aAAa,CACrB,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,QAAQ,CACf,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,CAAC;IACd,CAAC;CACF;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,YAAY,CAAC,MAAoB;IAC/C,OAAO,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.test.d.ts","sourceRoot":"","sources":["../../src/client/base.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { TinybirdClient, createClient } from "./base.js";
|
|
3
|
+
describe("TinybirdClient", () => {
|
|
4
|
+
describe("constructor", () => {
|
|
5
|
+
it("throws error when baseUrl is missing", () => {
|
|
6
|
+
expect(() => new TinybirdClient({ baseUrl: "", token: "test-token" })).toThrow("baseUrl is required");
|
|
7
|
+
});
|
|
8
|
+
it("throws error when token is missing", () => {
|
|
9
|
+
expect(() => new TinybirdClient({ baseUrl: "https://api.tinybird.co", token: "" })).toThrow("token is required");
|
|
10
|
+
});
|
|
11
|
+
it("creates client with valid config", () => {
|
|
12
|
+
const client = new TinybirdClient({
|
|
13
|
+
baseUrl: "https://api.tinybird.co",
|
|
14
|
+
token: "test-token",
|
|
15
|
+
});
|
|
16
|
+
expect(client).toBeInstanceOf(TinybirdClient);
|
|
17
|
+
});
|
|
18
|
+
it("normalizes baseUrl by removing trailing slash", async () => {
|
|
19
|
+
const client = new TinybirdClient({
|
|
20
|
+
baseUrl: "https://api.tinybird.co/",
|
|
21
|
+
token: "test-token",
|
|
22
|
+
});
|
|
23
|
+
const context = await client.getContext();
|
|
24
|
+
expect(context.baseUrl).toBe("https://api.tinybird.co");
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
describe("getContext", () => {
|
|
28
|
+
it("returns correct context in non-devMode", async () => {
|
|
29
|
+
const client = new TinybirdClient({
|
|
30
|
+
baseUrl: "https://api.tinybird.co",
|
|
31
|
+
token: "test-token",
|
|
32
|
+
});
|
|
33
|
+
const context = await client.getContext();
|
|
34
|
+
expect(context).toEqual({
|
|
35
|
+
token: "test-token",
|
|
36
|
+
baseUrl: "https://api.tinybird.co",
|
|
37
|
+
devMode: false,
|
|
38
|
+
isBranchToken: false,
|
|
39
|
+
branchName: null,
|
|
40
|
+
gitBranch: null,
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
it("returns devMode: false when devMode is not set", async () => {
|
|
44
|
+
const client = new TinybirdClient({
|
|
45
|
+
baseUrl: "https://api.tinybird.co",
|
|
46
|
+
token: "test-token",
|
|
47
|
+
});
|
|
48
|
+
const context = await client.getContext();
|
|
49
|
+
expect(context.devMode).toBe(false);
|
|
50
|
+
});
|
|
51
|
+
it("returns isBranchToken: false when not in devMode", async () => {
|
|
52
|
+
const client = new TinybirdClient({
|
|
53
|
+
baseUrl: "https://api.tinybird.co",
|
|
54
|
+
token: "test-token",
|
|
55
|
+
});
|
|
56
|
+
const context = await client.getContext();
|
|
57
|
+
expect(context.isBranchToken).toBe(false);
|
|
58
|
+
});
|
|
59
|
+
it("returns branchName: null when not in devMode", async () => {
|
|
60
|
+
const client = new TinybirdClient({
|
|
61
|
+
baseUrl: "https://api.tinybird.co",
|
|
62
|
+
token: "test-token",
|
|
63
|
+
});
|
|
64
|
+
const context = await client.getContext();
|
|
65
|
+
expect(context.branchName).toBeNull();
|
|
66
|
+
});
|
|
67
|
+
it("returns gitBranch: null when not in devMode", async () => {
|
|
68
|
+
const client = new TinybirdClient({
|
|
69
|
+
baseUrl: "https://api.tinybird.co",
|
|
70
|
+
token: "test-token",
|
|
71
|
+
});
|
|
72
|
+
const context = await client.getContext();
|
|
73
|
+
expect(context.gitBranch).toBeNull();
|
|
74
|
+
});
|
|
75
|
+
it("caches the resolved context", async () => {
|
|
76
|
+
const client = new TinybirdClient({
|
|
77
|
+
baseUrl: "https://api.tinybird.co",
|
|
78
|
+
token: "test-token",
|
|
79
|
+
});
|
|
80
|
+
const context1 = await client.getContext();
|
|
81
|
+
const context2 = await client.getContext();
|
|
82
|
+
expect(context1).toBe(context2);
|
|
83
|
+
});
|
|
84
|
+
it("works with different baseUrl regions", async () => {
|
|
85
|
+
const client = new TinybirdClient({
|
|
86
|
+
baseUrl: "https://api.us-east.tinybird.co",
|
|
87
|
+
token: "us-token",
|
|
88
|
+
});
|
|
89
|
+
const context = await client.getContext();
|
|
90
|
+
expect(context.baseUrl).toBe("https://api.us-east.tinybird.co");
|
|
91
|
+
expect(context.token).toBe("us-token");
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
describe("createClient", () => {
|
|
95
|
+
it("creates a TinybirdClient instance", () => {
|
|
96
|
+
const client = createClient({
|
|
97
|
+
baseUrl: "https://api.tinybird.co",
|
|
98
|
+
token: "test-token",
|
|
99
|
+
});
|
|
100
|
+
expect(client).toBeInstanceOf(TinybirdClient);
|
|
101
|
+
});
|
|
102
|
+
it("passes config to the client correctly", async () => {
|
|
103
|
+
const client = createClient({
|
|
104
|
+
baseUrl: "https://api.tinybird.co",
|
|
105
|
+
token: "my-token",
|
|
106
|
+
});
|
|
107
|
+
const context = await client.getContext();
|
|
108
|
+
expect(context.token).toBe("my-token");
|
|
109
|
+
expect(context.baseUrl).toBe("https://api.tinybird.co");
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
//# sourceMappingURL=base.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.test.js","sourceRoot":"","sources":["../../src/client/base.test.ts"],"names":[],"mappings":"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"}
|
package/dist/client/types.d.ts
CHANGED
|
@@ -119,6 +119,24 @@ export interface IngestOptions {
|
|
|
119
119
|
/** Wait for the ingestion to complete before returning */
|
|
120
120
|
wait?: boolean;
|
|
121
121
|
}
|
|
122
|
+
/**
|
|
123
|
+
* Client context information
|
|
124
|
+
* Contains the resolved configuration and state of the client
|
|
125
|
+
*/
|
|
126
|
+
export interface ClientContext {
|
|
127
|
+
/** The resolved token being used for requests (workspace or branch token) */
|
|
128
|
+
token: string;
|
|
129
|
+
/** Tinybird API base URL */
|
|
130
|
+
baseUrl: string;
|
|
131
|
+
/** Whether dev mode is enabled */
|
|
132
|
+
devMode: boolean;
|
|
133
|
+
/** Whether the resolved token is a branch token (vs workspace token) */
|
|
134
|
+
isBranchToken: boolean;
|
|
135
|
+
/** The Tinybird branch name if using a branch token (sanitized for Tinybird) */
|
|
136
|
+
branchName: string | null;
|
|
137
|
+
/** The current git branch name (null if not in a git repo or devMode is disabled) */
|
|
138
|
+
gitBranch: string | null;
|
|
139
|
+
}
|
|
122
140
|
/**
|
|
123
141
|
* Base interface for typed pipe endpoints
|
|
124
142
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -74,7 +74,7 @@ export type { ProjectDefinition, ProjectConfig, ProjectClient, TinybirdClientCon
|
|
|
74
74
|
export type { Infer, InferRow, InferParams, InferOutput, InferOutputRow, InferEvent, PartialRow, InferSchema, InferTinybirdTypes, InferMaterializedTarget, InferMaterializedTargetRow, IsMaterializedPipe, } from "./infer/index.js";
|
|
75
75
|
export { TinybirdClient, createClient } from "./client/base.js";
|
|
76
76
|
export { TinybirdError } from "./client/types.js";
|
|
77
|
-
export type { ClientConfig, QueryResult, IngestResult, QueryOptions, IngestOptions, ColumnMeta, QueryStatistics, TinybirdErrorResponse, TypedPipeEndpoint, TypedDatasourceIngest, } from "./client/types.js";
|
|
77
|
+
export type { ClientConfig, ClientContext, QueryResult, IngestResult, QueryOptions, IngestOptions, ColumnMeta, QueryStatistics, TinybirdErrorResponse, TypedPipeEndpoint, TypedDatasourceIngest, } from "./client/types.js";
|
|
78
78
|
export { TinybirdApi, TinybirdApiError, createTinybirdApi, createTinybirdApiWrapper, } from "./api/api.js";
|
|
79
79
|
export type { TinybirdApiConfig, TinybirdApiQueryOptions, TinybirdApiIngestOptions, TinybirdApiRequestInit, } from "./api/api.js";
|
|
80
80
|
export { isPreviewEnvironment, getPreviewBranchName, resolveToken, clearTokenCache, } from "./client/preview.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AAEH,yCAAyC;AACzC,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAQtC,OAAO,EACL,eAAe,EACf,eAAe,EACf,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,4CAA4C;AAC5C,OAAO,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAC;AAMvC,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAE5B,kDAAkD;AAClD,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAY5F,uCAAuC;AACvC,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAa5I,uCAAuC;AACvC,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AASvI,kCAAkC;AAClC,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAOnE,iCAAiC;AACjC,OAAO,EACL,UAAU,EACV,cAAc,EACd,sBAAsB,EACtB,cAAc,EACd,IAAI,EACJ,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,UAAU,EACV,YAAY,EACZ,OAAO,EACP,GAAG,GACJ,MAAM,kBAAkB,CAAC;AAqB1B,oCAAoC;AACpC,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AA8BzJ,mCAAmC;AACnC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AAEH,yCAAyC;AACzC,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAQtC,OAAO,EACL,eAAe,EACf,eAAe,EACf,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,4CAA4C;AAC5C,OAAO,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAC;AAMvC,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAE5B,kDAAkD;AAClD,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAY5F,uCAAuC;AACvC,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAa5I,uCAAuC;AACvC,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AASvI,kCAAkC;AAClC,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAOnE,iCAAiC;AACjC,OAAO,EACL,UAAU,EACV,cAAc,EACd,sBAAsB,EACtB,cAAc,EACd,IAAI,EACJ,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,UAAU,EACV,YAAY,EACZ,OAAO,EACP,GAAG,GACJ,MAAM,kBAAkB,CAAC;AAqB1B,oCAAoC;AACpC,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AA8BzJ,mCAAmC;AACnC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAelD,gDAAgD;AAChD,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,cAAc,CAAC;AAQtB,gDAAgD;AAChD,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EACZ,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAE7B,oDAAoD;AACpD,OAAO,EACL,WAAW,EACX,eAAe,EACf,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { TinybirdClient, createClient } from "./base.js";
|
|
3
|
+
|
|
4
|
+
describe("TinybirdClient", () => {
|
|
5
|
+
describe("constructor", () => {
|
|
6
|
+
it("throws error when baseUrl is missing", () => {
|
|
7
|
+
expect(() => new TinybirdClient({ baseUrl: "", token: "test-token" })).toThrow(
|
|
8
|
+
"baseUrl is required"
|
|
9
|
+
);
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
it("throws error when token is missing", () => {
|
|
13
|
+
expect(
|
|
14
|
+
() => new TinybirdClient({ baseUrl: "https://api.tinybird.co", token: "" })
|
|
15
|
+
).toThrow("token is required");
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it("creates client with valid config", () => {
|
|
19
|
+
const client = new TinybirdClient({
|
|
20
|
+
baseUrl: "https://api.tinybird.co",
|
|
21
|
+
token: "test-token",
|
|
22
|
+
});
|
|
23
|
+
expect(client).toBeInstanceOf(TinybirdClient);
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
it("normalizes baseUrl by removing trailing slash", async () => {
|
|
27
|
+
const client = new TinybirdClient({
|
|
28
|
+
baseUrl: "https://api.tinybird.co/",
|
|
29
|
+
token: "test-token",
|
|
30
|
+
});
|
|
31
|
+
const context = await client.getContext();
|
|
32
|
+
expect(context.baseUrl).toBe("https://api.tinybird.co");
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
describe("getContext", () => {
|
|
37
|
+
it("returns correct context in non-devMode", async () => {
|
|
38
|
+
const client = new TinybirdClient({
|
|
39
|
+
baseUrl: "https://api.tinybird.co",
|
|
40
|
+
token: "test-token",
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
const context = await client.getContext();
|
|
44
|
+
|
|
45
|
+
expect(context).toEqual({
|
|
46
|
+
token: "test-token",
|
|
47
|
+
baseUrl: "https://api.tinybird.co",
|
|
48
|
+
devMode: false,
|
|
49
|
+
isBranchToken: false,
|
|
50
|
+
branchName: null,
|
|
51
|
+
gitBranch: null,
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
it("returns devMode: false when devMode is not set", async () => {
|
|
56
|
+
const client = new TinybirdClient({
|
|
57
|
+
baseUrl: "https://api.tinybird.co",
|
|
58
|
+
token: "test-token",
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
const context = await client.getContext();
|
|
62
|
+
expect(context.devMode).toBe(false);
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
it("returns isBranchToken: false when not in devMode", async () => {
|
|
66
|
+
const client = new TinybirdClient({
|
|
67
|
+
baseUrl: "https://api.tinybird.co",
|
|
68
|
+
token: "test-token",
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
const context = await client.getContext();
|
|
72
|
+
expect(context.isBranchToken).toBe(false);
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
it("returns branchName: null when not in devMode", async () => {
|
|
76
|
+
const client = new TinybirdClient({
|
|
77
|
+
baseUrl: "https://api.tinybird.co",
|
|
78
|
+
token: "test-token",
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
const context = await client.getContext();
|
|
82
|
+
expect(context.branchName).toBeNull();
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
it("returns gitBranch: null when not in devMode", async () => {
|
|
86
|
+
const client = new TinybirdClient({
|
|
87
|
+
baseUrl: "https://api.tinybird.co",
|
|
88
|
+
token: "test-token",
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
const context = await client.getContext();
|
|
92
|
+
expect(context.gitBranch).toBeNull();
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
it("caches the resolved context", async () => {
|
|
96
|
+
const client = new TinybirdClient({
|
|
97
|
+
baseUrl: "https://api.tinybird.co",
|
|
98
|
+
token: "test-token",
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
const context1 = await client.getContext();
|
|
102
|
+
const context2 = await client.getContext();
|
|
103
|
+
|
|
104
|
+
expect(context1).toBe(context2);
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
it("works with different baseUrl regions", async () => {
|
|
108
|
+
const client = new TinybirdClient({
|
|
109
|
+
baseUrl: "https://api.us-east.tinybird.co",
|
|
110
|
+
token: "us-token",
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
const context = await client.getContext();
|
|
114
|
+
expect(context.baseUrl).toBe("https://api.us-east.tinybird.co");
|
|
115
|
+
expect(context.token).toBe("us-token");
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
describe("createClient", () => {
|
|
120
|
+
it("creates a TinybirdClient instance", () => {
|
|
121
|
+
const client = createClient({
|
|
122
|
+
baseUrl: "https://api.tinybird.co",
|
|
123
|
+
token: "test-token",
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
expect(client).toBeInstanceOf(TinybirdClient);
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
it("passes config to the client correctly", async () => {
|
|
130
|
+
const client = createClient({
|
|
131
|
+
baseUrl: "https://api.tinybird.co",
|
|
132
|
+
token: "my-token",
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
const context = await client.getContext();
|
|
136
|
+
expect(context.token).toBe("my-token");
|
|
137
|
+
expect(context.baseUrl).toBe("https://api.tinybird.co");
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
});
|
package/src/client/base.ts
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import type {
|
|
6
6
|
ClientConfig,
|
|
7
|
+
ClientContext,
|
|
7
8
|
QueryResult,
|
|
8
9
|
IngestResult,
|
|
9
10
|
QueryOptions,
|
|
@@ -19,6 +20,7 @@ interface ResolvedTokenInfo {
|
|
|
19
20
|
token: string;
|
|
20
21
|
isBranchToken: boolean;
|
|
21
22
|
branchName?: string;
|
|
23
|
+
gitBranch?: string;
|
|
22
24
|
}
|
|
23
25
|
|
|
24
26
|
/**
|
|
@@ -52,8 +54,8 @@ interface ResolvedTokenInfo {
|
|
|
52
54
|
export class TinybirdClient {
|
|
53
55
|
private readonly config: ClientConfig;
|
|
54
56
|
private readonly apisByToken = new Map<string, TinybirdApi>();
|
|
55
|
-
private
|
|
56
|
-
private
|
|
57
|
+
private contextPromise: Promise<ClientContext> | null = null;
|
|
58
|
+
private resolvedContext: ClientContext | null = null;
|
|
57
59
|
|
|
58
60
|
constructor(config: ClientConfig) {
|
|
59
61
|
// Validate required config
|
|
@@ -75,31 +77,56 @@ export class TinybirdClient {
|
|
|
75
77
|
* Get the effective token, resolving branch token in dev mode if needed
|
|
76
78
|
*/
|
|
77
79
|
private async getToken(): Promise<string> {
|
|
80
|
+
const context = await this.resolveContext();
|
|
81
|
+
return context.token;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Resolve the client context, including branch token resolution in dev mode
|
|
86
|
+
* This is the single source of truth for all context data
|
|
87
|
+
*/
|
|
88
|
+
private async resolveContext(): Promise<ClientContext> {
|
|
78
89
|
// If already resolved, return it
|
|
79
|
-
if (this.
|
|
80
|
-
return this.
|
|
90
|
+
if (this.resolvedContext) {
|
|
91
|
+
return this.resolvedContext;
|
|
81
92
|
}
|
|
82
93
|
|
|
83
94
|
// If not in dev mode, use the configured token
|
|
84
95
|
if (!this.config.devMode) {
|
|
85
|
-
this.
|
|
86
|
-
|
|
96
|
+
this.resolvedContext = this.buildContext({
|
|
97
|
+
token: this.config.token,
|
|
98
|
+
isBranchToken: false,
|
|
99
|
+
});
|
|
100
|
+
return this.resolvedContext;
|
|
87
101
|
}
|
|
88
102
|
|
|
89
103
|
// In dev mode, lazily resolve the branch token
|
|
90
|
-
if (!this.
|
|
91
|
-
this.
|
|
104
|
+
if (!this.contextPromise) {
|
|
105
|
+
this.contextPromise = this.resolveBranchContext();
|
|
92
106
|
}
|
|
93
107
|
|
|
94
|
-
|
|
95
|
-
this.
|
|
96
|
-
|
|
108
|
+
this.resolvedContext = await this.contextPromise;
|
|
109
|
+
return this.resolvedContext;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Build the client context from resolved token info
|
|
114
|
+
*/
|
|
115
|
+
private buildContext(tokenInfo: ResolvedTokenInfo): ClientContext {
|
|
116
|
+
return {
|
|
117
|
+
token: tokenInfo.token,
|
|
118
|
+
baseUrl: this.config.baseUrl,
|
|
119
|
+
devMode: this.config.devMode ?? false,
|
|
120
|
+
isBranchToken: tokenInfo.isBranchToken,
|
|
121
|
+
branchName: tokenInfo.branchName ?? null,
|
|
122
|
+
gitBranch: tokenInfo.gitBranch ?? null,
|
|
123
|
+
};
|
|
97
124
|
}
|
|
98
125
|
|
|
99
126
|
/**
|
|
100
|
-
* Resolve the branch
|
|
127
|
+
* Resolve the branch context in dev mode
|
|
101
128
|
*/
|
|
102
|
-
private async
|
|
129
|
+
private async resolveBranchContext(): Promise<ClientContext> {
|
|
103
130
|
try {
|
|
104
131
|
// Dynamic import to avoid circular dependencies and to keep CLI code
|
|
105
132
|
// out of the client bundle when not using dev mode
|
|
@@ -107,10 +134,11 @@ export class TinybirdClient {
|
|
|
107
134
|
const { getOrCreateBranch } = await import("../api/branches.js");
|
|
108
135
|
|
|
109
136
|
const config = loadConfig();
|
|
137
|
+
const gitBranch = config.gitBranch ?? undefined;
|
|
110
138
|
|
|
111
139
|
// If on main branch, use the workspace token
|
|
112
140
|
if (config.isMainBranch || !config.tinybirdBranch) {
|
|
113
|
-
return { token: this.config.token, isBranchToken: false };
|
|
141
|
+
return this.buildContext({ token: this.config.token, isBranchToken: false, gitBranch });
|
|
114
142
|
}
|
|
115
143
|
|
|
116
144
|
const branchName = config.tinybirdBranch;
|
|
@@ -123,17 +151,18 @@ export class TinybirdClient {
|
|
|
123
151
|
|
|
124
152
|
if (!branch.token) {
|
|
125
153
|
// Fall back to workspace token if no branch token
|
|
126
|
-
return { token: this.config.token, isBranchToken: false };
|
|
154
|
+
return this.buildContext({ token: this.config.token, isBranchToken: false, gitBranch });
|
|
127
155
|
}
|
|
128
156
|
|
|
129
|
-
return {
|
|
157
|
+
return this.buildContext({
|
|
130
158
|
token: branch.token,
|
|
131
159
|
isBranchToken: true,
|
|
132
160
|
branchName,
|
|
133
|
-
|
|
161
|
+
gitBranch,
|
|
162
|
+
});
|
|
134
163
|
} catch {
|
|
135
164
|
// If anything fails, fall back to the workspace token
|
|
136
|
-
return { token: this.config.token, isBranchToken: false };
|
|
165
|
+
return this.buildContext({ token: this.config.token, isBranchToken: false });
|
|
137
166
|
}
|
|
138
167
|
}
|
|
139
168
|
|
|
@@ -217,6 +246,31 @@ export class TinybirdClient {
|
|
|
217
246
|
}
|
|
218
247
|
}
|
|
219
248
|
|
|
249
|
+
/**
|
|
250
|
+
* Get the current client context
|
|
251
|
+
*
|
|
252
|
+
* Returns information about the resolved configuration including the token being used,
|
|
253
|
+
* API URL, dev mode status, and branch information.
|
|
254
|
+
*
|
|
255
|
+
* @returns Client context with resolved configuration
|
|
256
|
+
*
|
|
257
|
+
* @example
|
|
258
|
+
* ```ts
|
|
259
|
+
* const client = createClient({
|
|
260
|
+
* baseUrl: 'https://api.tinybird.co',
|
|
261
|
+
* token: process.env.TINYBIRD_TOKEN,
|
|
262
|
+
* devMode: true,
|
|
263
|
+
* });
|
|
264
|
+
*
|
|
265
|
+
* const context = await client.getContext();
|
|
266
|
+
* console.log(context.branchName); // 'feature_my_branch'
|
|
267
|
+
* console.log(context.isBranchToken); // true
|
|
268
|
+
* ```
|
|
269
|
+
*/
|
|
270
|
+
async getContext(): Promise<ClientContext> {
|
|
271
|
+
return this.resolveContext();
|
|
272
|
+
}
|
|
273
|
+
|
|
220
274
|
private getApi(token: string): TinybirdApi {
|
|
221
275
|
const existing = this.apisByToken.get(token);
|
|
222
276
|
if (existing) {
|
package/src/client/types.ts
CHANGED
|
@@ -147,6 +147,25 @@ export interface IngestOptions {
|
|
|
147
147
|
wait?: boolean;
|
|
148
148
|
}
|
|
149
149
|
|
|
150
|
+
/**
|
|
151
|
+
* Client context information
|
|
152
|
+
* Contains the resolved configuration and state of the client
|
|
153
|
+
*/
|
|
154
|
+
export interface ClientContext {
|
|
155
|
+
/** The resolved token being used for requests (workspace or branch token) */
|
|
156
|
+
token: string;
|
|
157
|
+
/** Tinybird API base URL */
|
|
158
|
+
baseUrl: string;
|
|
159
|
+
/** Whether dev mode is enabled */
|
|
160
|
+
devMode: boolean;
|
|
161
|
+
/** Whether the resolved token is a branch token (vs workspace token) */
|
|
162
|
+
isBranchToken: boolean;
|
|
163
|
+
/** The Tinybird branch name if using a branch token (sanitized for Tinybird) */
|
|
164
|
+
branchName: string | null;
|
|
165
|
+
/** The current git branch name (null if not in a git repo or devMode is disabled) */
|
|
166
|
+
gitBranch: string | null;
|
|
167
|
+
}
|
|
168
|
+
|
|
150
169
|
/**
|
|
151
170
|
* Base interface for typed pipe endpoints
|
|
152
171
|
*/
|
package/src/index.ts
CHANGED