@loykin/datasourcekit 0.0.2

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.
@@ -0,0 +1,295 @@
1
+ interface AuthSubject {
2
+ id: string;
3
+ roles?: string[];
4
+ groups?: string[];
5
+ attributes?: Record<string, unknown>;
6
+ }
7
+ interface AuthContext {
8
+ subject?: AuthSubject;
9
+ tenantId?: string;
10
+ attributes?: Record<string, unknown>;
11
+ }
12
+ interface DataQuery<TQuery = unknown> {
13
+ id: string;
14
+ datasourceUid: string;
15
+ datasourceType?: string;
16
+ query?: TQuery;
17
+ options?: Record<string, unknown>;
18
+ cacheTtlMs?: number;
19
+ staleWhileRevalidate?: boolean;
20
+ permissions?: unknown[];
21
+ meta?: Record<string, unknown>;
22
+ }
23
+ interface DatasourceContext {
24
+ authToken?: string;
25
+ headers?: Record<string, string>;
26
+ signal?: AbortSignal;
27
+ variables?: Record<string, string | string[]>;
28
+ timeRange?: {
29
+ from: string;
30
+ to: string;
31
+ raw?: {
32
+ from: string;
33
+ to: string;
34
+ };
35
+ };
36
+ authContext?: AuthContext;
37
+ builtins?: Record<string, string>;
38
+ meta?: Record<string, unknown>;
39
+ }
40
+ interface DatasourcePermissionHint {
41
+ canRead?: boolean;
42
+ canCreate?: boolean;
43
+ canUpdate?: boolean;
44
+ canDelete?: boolean;
45
+ canQuery?: boolean;
46
+ canManage?: boolean;
47
+ reason?: string;
48
+ }
49
+ interface DatasourceTypeInfo {
50
+ type: string;
51
+ name: string;
52
+ description?: string;
53
+ enabled?: boolean;
54
+ installed?: boolean;
55
+ permissions?: DatasourcePermissionHint;
56
+ hasConfigEditor?: boolean;
57
+ hasQueryEditor?: boolean;
58
+ meta?: Record<string, unknown>;
59
+ }
60
+ interface DatasourceInstance<TOptions = unknown> {
61
+ uid: string;
62
+ type: string;
63
+ name: string;
64
+ options?: TOptions;
65
+ enabled?: boolean;
66
+ version?: string;
67
+ createdAt?: string;
68
+ updatedAt?: string;
69
+ permissions?: DatasourcePermissionHint;
70
+ meta?: Record<string, unknown>;
71
+ }
72
+ interface DatasourceCreateInput<TOptions = unknown> {
73
+ uid?: string;
74
+ type: string;
75
+ name: string;
76
+ options?: TOptions;
77
+ enabled?: boolean;
78
+ meta?: Record<string, unknown>;
79
+ }
80
+ type DatasourceUpdateInput<TOptions = unknown> = Partial<Omit<DatasourceCreateInput<TOptions>, 'uid' | 'type'>> & {
81
+ version?: string;
82
+ };
83
+ interface DatasourceListFilter {
84
+ type?: string | string[];
85
+ enabled?: boolean;
86
+ search?: string;
87
+ }
88
+ interface DatasourceListOptions {
89
+ filter?: DatasourceListFilter;
90
+ page?: number;
91
+ pageSize?: number;
92
+ cursor?: string;
93
+ }
94
+ interface DatasourceListResult {
95
+ items: DatasourceInstance[];
96
+ total?: number;
97
+ nextCursor?: string;
98
+ }
99
+ interface QueryResult {
100
+ columns: Array<{
101
+ name: string;
102
+ type: string;
103
+ meta?: Record<string, unknown>;
104
+ }>;
105
+ rows: unknown[][];
106
+ requestId?: string;
107
+ meta?: Record<string, unknown>;
108
+ }
109
+ interface VariableOption {
110
+ label: string;
111
+ value: string;
112
+ }
113
+ interface DatasourceValidationResult {
114
+ valid: boolean;
115
+ errors?: string[];
116
+ }
117
+ interface DatasourceHealthResult {
118
+ ok: boolean;
119
+ message?: string;
120
+ details?: Record<string, unknown>;
121
+ }
122
+ interface DatasourceSchemaNamespace {
123
+ id: string;
124
+ name: string;
125
+ kind?: 'database' | 'schema' | 'table' | 'metric' | 'bucket' | 'index' | string;
126
+ parentId?: string;
127
+ meta?: Record<string, unknown>;
128
+ }
129
+ interface DatasourceSchemaFieldRequest {
130
+ namespaceId: string;
131
+ }
132
+ interface DatasourceSchemaField {
133
+ name: string;
134
+ type?: string;
135
+ label?: string;
136
+ description?: string;
137
+ meta?: Record<string, unknown>;
138
+ }
139
+ interface AnnotationQuery<TQuery = unknown> {
140
+ id: string;
141
+ datasourceUid: string;
142
+ name?: string;
143
+ query?: TQuery;
144
+ options?: Record<string, unknown>;
145
+ hide?: boolean;
146
+ color?: string;
147
+ }
148
+ type BatchQueryResultItem = {
149
+ data: QueryResult;
150
+ error?: never;
151
+ } | {
152
+ data?: never;
153
+ error: Error;
154
+ };
155
+ interface BatchQueryResult {
156
+ items: BatchQueryResultItem[];
157
+ }
158
+ interface Annotation {
159
+ id?: string;
160
+ time: number;
161
+ timeEnd?: number;
162
+ title?: string;
163
+ text?: string;
164
+ tags?: string[];
165
+ color?: string;
166
+ source?: AnnotationQuery;
167
+ meta?: Record<string, unknown>;
168
+ }
169
+
170
+ interface DatasourceConfigEditorProps<TOptions = unknown> {
171
+ instance: DatasourceInstance<TOptions>;
172
+ options: TOptions;
173
+ onChange(options: TOptions): void;
174
+ onSave(): void;
175
+ }
176
+ interface DatasourceQueryEditorProps<TOptions = unknown, TQuery = unknown> {
177
+ instance: DatasourceInstance<TOptions>;
178
+ query: TQuery;
179
+ onChange(query: TQuery): void;
180
+ onRunQuery(): void;
181
+ }
182
+ interface DatasourcePluginBackend<TOptions = unknown, TQuery = unknown> {
183
+ query?(request: DataQuery<TQuery>, context?: DatasourceContext): Promise<unknown>;
184
+ transform?(raw: unknown, request: DataQuery<TQuery>, context?: DatasourceContext): QueryResult | Promise<QueryResult>;
185
+ healthCheck?(uid: string, options: TOptions, context?: DatasourceContext): Promise<DatasourceHealthResult>;
186
+ validateQuery?(uid: string, query: TQuery, context?: DatasourceContext): Promise<DatasourceValidationResult>;
187
+ listNamespaces?(uid: string, options: TOptions, context?: DatasourceContext): Promise<DatasourceSchemaNamespace[]>;
188
+ listFields?(uid: string, request: DatasourceSchemaFieldRequest, options: TOptions, context?: DatasourceContext): Promise<DatasourceSchemaField[]>;
189
+ }
190
+ interface DatasourcePluginDef<TOptions = unknown, TQuery = unknown> {
191
+ type: string;
192
+ name: string;
193
+ description?: string;
194
+ configEditor?(props: DatasourceConfigEditorProps<TOptions>): unknown;
195
+ queryEditor?(props: DatasourceQueryEditorProps<TOptions, TQuery>): unknown;
196
+ backend?: DatasourcePluginBackend<TOptions, TQuery>;
197
+ meta?: Record<string, unknown>;
198
+ }
199
+ declare function defineDatasourcePlugin<TOptions = unknown, TQuery = unknown>(def: DatasourcePluginDef<TOptions, TQuery>): DatasourcePluginDef<TOptions, TQuery>;
200
+
201
+ interface DatasourceRegistry {
202
+ register(plugin: DatasourcePluginDef): void;
203
+ get(type: string): DatasourcePluginDef | undefined;
204
+ has(type: string): boolean;
205
+ list(): DatasourcePluginDef[];
206
+ getConfigEditor(type: string): ((props: DatasourceConfigEditorProps<unknown>) => unknown) | undefined;
207
+ getQueryEditor(type: string): ((props: DatasourceQueryEditorProps<unknown, unknown>) => unknown) | undefined;
208
+ }
209
+ declare function createDatasourceRegistry(plugins?: readonly DatasourcePluginDef[]): DatasourceRegistry;
210
+
211
+ interface QueryCallOptions {
212
+ transform?: (result: QueryResult) => QueryResult | Promise<QueryResult>;
213
+ }
214
+ interface DatasourceManagerTypes {
215
+ list(context?: DatasourceContext): Promise<DatasourceTypeInfo[]>;
216
+ get(type: string, context?: DatasourceContext): Promise<DatasourceTypeInfo>;
217
+ install?(type: string, context?: DatasourceContext): Promise<void>;
218
+ uninstall?(type: string, context?: DatasourceContext): Promise<void>;
219
+ enable?(type: string, context?: DatasourceContext): Promise<void>;
220
+ disable?(type: string, context?: DatasourceContext): Promise<void>;
221
+ }
222
+ interface DatasourceManagerInstances {
223
+ list(options?: DatasourceListOptions, context?: DatasourceContext): Promise<DatasourceListResult>;
224
+ get(uid: string, context?: DatasourceContext): Promise<DatasourceInstance>;
225
+ create(input: DatasourceCreateInput, context?: DatasourceContext): Promise<DatasourceInstance>;
226
+ update(uid: string, patch: DatasourceUpdateInput, context?: DatasourceContext): Promise<DatasourceInstance>;
227
+ delete(uid: string, context?: DatasourceContext): Promise<void>;
228
+ query(request: DataQuery, context?: DatasourceContext, options?: QueryCallOptions): Promise<QueryResult>;
229
+ batchQuery(requests: DataQuery[], context?: DatasourceContext, options?: QueryCallOptions): Promise<BatchQueryResult>;
230
+ healthCheck(uid: string, type: string, context?: DatasourceContext): Promise<DatasourceHealthResult>;
231
+ validateQuery(uid: string, type: string, query: unknown, context?: DatasourceContext): Promise<DatasourceValidationResult>;
232
+ listNamespaces(uid: string, type: string, context?: DatasourceContext): Promise<DatasourceSchemaNamespace[]>;
233
+ listFields(uid: string, type: string, request: DatasourceSchemaFieldRequest, context?: DatasourceContext): Promise<DatasourceSchemaField[]>;
234
+ }
235
+ interface DatasourceManager {
236
+ registerPlugin(plugin: DatasourcePluginDef): void;
237
+ registry: DatasourceRegistry;
238
+ types: DatasourceManagerTypes;
239
+ instances: DatasourceManagerInstances;
240
+ }
241
+ interface DatasourceManagerBackend {
242
+ types: {
243
+ list(context?: DatasourceContext): Promise<DatasourceTypeInfo[]>;
244
+ get(type: string, context?: DatasourceContext): Promise<DatasourceTypeInfo>;
245
+ install?(type: string, context?: DatasourceContext): Promise<void>;
246
+ uninstall?(type: string, context?: DatasourceContext): Promise<void>;
247
+ enable?(type: string, context?: DatasourceContext): Promise<void>;
248
+ disable?(type: string, context?: DatasourceContext): Promise<void>;
249
+ };
250
+ instances: {
251
+ list(options?: DatasourceListOptions, context?: DatasourceContext): Promise<DatasourceListResult>;
252
+ get(uid: string, context?: DatasourceContext): Promise<DatasourceInstance>;
253
+ create(input: DatasourceCreateInput, context?: DatasourceContext): Promise<DatasourceInstance>;
254
+ update(uid: string, patch: DatasourceUpdateInput, context?: DatasourceContext): Promise<DatasourceInstance>;
255
+ delete(uid: string, context?: DatasourceContext): Promise<void>;
256
+ };
257
+ query(request: DataQuery, context?: DatasourceContext): Promise<unknown>;
258
+ batchQuery?(requests: DataQuery[], context?: DatasourceContext): Promise<BatchQueryResult>;
259
+ healthCheck?(uid: string, context?: DatasourceContext): Promise<DatasourceHealthResult>;
260
+ validateQuery?(uid: string, query: unknown, context?: DatasourceContext): Promise<DatasourceValidationResult>;
261
+ listNamespaces?(uid: string, context?: DatasourceContext): Promise<DatasourceSchemaNamespace[]>;
262
+ listFields?(uid: string, request: DatasourceSchemaFieldRequest, context?: DatasourceContext): Promise<DatasourceSchemaField[]>;
263
+ }
264
+ interface CreateDatasourceManagerOptions {
265
+ registry?: DatasourceRegistry;
266
+ plugins?: readonly DatasourcePluginDef[];
267
+ backend: DatasourceManagerBackend;
268
+ }
269
+ declare function createDatasourceManager(options: CreateDatasourceManagerOptions): DatasourceManager;
270
+ interface CreateRestDatasourceManagerOptions {
271
+ baseUrl: string;
272
+ fetch?: typeof fetch;
273
+ getHeaders?: (context?: DatasourceContext) => HeadersInit | Promise<HeadersInit>;
274
+ paths?: Partial<RestDatasourceManagerPaths>;
275
+ unwrap?<T>(body: unknown, response: Response): T;
276
+ createError?(response: Response, body: unknown): Error | undefined;
277
+ }
278
+ interface RestDatasourceManagerPaths {
279
+ typesList(): string;
280
+ typeGet(type: string): string;
281
+ typeAction(type: string, action: 'install' | 'uninstall' | 'enable' | 'disable'): string;
282
+ instancesList(queryString: string): string;
283
+ instanceGet(uid: string): string;
284
+ instanceCreate(): string;
285
+ instanceUpdate(uid: string): string;
286
+ instanceDelete(uid: string): string;
287
+ query(): string;
288
+ healthCheck(uid: string): string;
289
+ validateQuery(uid: string): string;
290
+ listNamespaces(uid: string): string;
291
+ listFields(uid: string): string;
292
+ }
293
+ declare function createRestDatasourceManager(options: CreateRestDatasourceManagerOptions): DatasourceManagerBackend;
294
+
295
+ export { type Annotation as A, type BatchQueryResult as B, type CreateDatasourceManagerOptions as C, type DataQuery as D, type DatasourceUpdateInput as E, type DatasourceValidationResult as F, type QueryResult as G, createDatasourceManager as H, createDatasourceRegistry as I, createRestDatasourceManager as J, defineDatasourcePlugin as K, type QueryCallOptions as Q, type RestDatasourceManagerPaths as R, type VariableOption as V, type AnnotationQuery as a, type AuthContext as b, type AuthSubject as c, type BatchQueryResultItem as d, type CreateRestDatasourceManagerOptions as e, type DatasourceConfigEditorProps as f, type DatasourceContext as g, type DatasourceCreateInput as h, type DatasourceHealthResult as i, type DatasourceInstance as j, type DatasourceListFilter as k, type DatasourceListOptions as l, type DatasourceListResult as m, type DatasourceManager as n, type DatasourceManagerBackend as o, type DatasourceManagerInstances as p, type DatasourceManagerTypes as q, type DatasourcePermissionHint as r, type DatasourcePluginBackend as s, type DatasourcePluginDef as t, type DatasourceQueryEditorProps as u, type DatasourceRegistry as v, type DatasourceSchemaField as w, type DatasourceSchemaFieldRequest as x, type DatasourceSchemaNamespace as y, type DatasourceTypeInfo as z };
@@ -0,0 +1,295 @@
1
+ interface AuthSubject {
2
+ id: string;
3
+ roles?: string[];
4
+ groups?: string[];
5
+ attributes?: Record<string, unknown>;
6
+ }
7
+ interface AuthContext {
8
+ subject?: AuthSubject;
9
+ tenantId?: string;
10
+ attributes?: Record<string, unknown>;
11
+ }
12
+ interface DataQuery<TQuery = unknown> {
13
+ id: string;
14
+ datasourceUid: string;
15
+ datasourceType?: string;
16
+ query?: TQuery;
17
+ options?: Record<string, unknown>;
18
+ cacheTtlMs?: number;
19
+ staleWhileRevalidate?: boolean;
20
+ permissions?: unknown[];
21
+ meta?: Record<string, unknown>;
22
+ }
23
+ interface DatasourceContext {
24
+ authToken?: string;
25
+ headers?: Record<string, string>;
26
+ signal?: AbortSignal;
27
+ variables?: Record<string, string | string[]>;
28
+ timeRange?: {
29
+ from: string;
30
+ to: string;
31
+ raw?: {
32
+ from: string;
33
+ to: string;
34
+ };
35
+ };
36
+ authContext?: AuthContext;
37
+ builtins?: Record<string, string>;
38
+ meta?: Record<string, unknown>;
39
+ }
40
+ interface DatasourcePermissionHint {
41
+ canRead?: boolean;
42
+ canCreate?: boolean;
43
+ canUpdate?: boolean;
44
+ canDelete?: boolean;
45
+ canQuery?: boolean;
46
+ canManage?: boolean;
47
+ reason?: string;
48
+ }
49
+ interface DatasourceTypeInfo {
50
+ type: string;
51
+ name: string;
52
+ description?: string;
53
+ enabled?: boolean;
54
+ installed?: boolean;
55
+ permissions?: DatasourcePermissionHint;
56
+ hasConfigEditor?: boolean;
57
+ hasQueryEditor?: boolean;
58
+ meta?: Record<string, unknown>;
59
+ }
60
+ interface DatasourceInstance<TOptions = unknown> {
61
+ uid: string;
62
+ type: string;
63
+ name: string;
64
+ options?: TOptions;
65
+ enabled?: boolean;
66
+ version?: string;
67
+ createdAt?: string;
68
+ updatedAt?: string;
69
+ permissions?: DatasourcePermissionHint;
70
+ meta?: Record<string, unknown>;
71
+ }
72
+ interface DatasourceCreateInput<TOptions = unknown> {
73
+ uid?: string;
74
+ type: string;
75
+ name: string;
76
+ options?: TOptions;
77
+ enabled?: boolean;
78
+ meta?: Record<string, unknown>;
79
+ }
80
+ type DatasourceUpdateInput<TOptions = unknown> = Partial<Omit<DatasourceCreateInput<TOptions>, 'uid' | 'type'>> & {
81
+ version?: string;
82
+ };
83
+ interface DatasourceListFilter {
84
+ type?: string | string[];
85
+ enabled?: boolean;
86
+ search?: string;
87
+ }
88
+ interface DatasourceListOptions {
89
+ filter?: DatasourceListFilter;
90
+ page?: number;
91
+ pageSize?: number;
92
+ cursor?: string;
93
+ }
94
+ interface DatasourceListResult {
95
+ items: DatasourceInstance[];
96
+ total?: number;
97
+ nextCursor?: string;
98
+ }
99
+ interface QueryResult {
100
+ columns: Array<{
101
+ name: string;
102
+ type: string;
103
+ meta?: Record<string, unknown>;
104
+ }>;
105
+ rows: unknown[][];
106
+ requestId?: string;
107
+ meta?: Record<string, unknown>;
108
+ }
109
+ interface VariableOption {
110
+ label: string;
111
+ value: string;
112
+ }
113
+ interface DatasourceValidationResult {
114
+ valid: boolean;
115
+ errors?: string[];
116
+ }
117
+ interface DatasourceHealthResult {
118
+ ok: boolean;
119
+ message?: string;
120
+ details?: Record<string, unknown>;
121
+ }
122
+ interface DatasourceSchemaNamespace {
123
+ id: string;
124
+ name: string;
125
+ kind?: 'database' | 'schema' | 'table' | 'metric' | 'bucket' | 'index' | string;
126
+ parentId?: string;
127
+ meta?: Record<string, unknown>;
128
+ }
129
+ interface DatasourceSchemaFieldRequest {
130
+ namespaceId: string;
131
+ }
132
+ interface DatasourceSchemaField {
133
+ name: string;
134
+ type?: string;
135
+ label?: string;
136
+ description?: string;
137
+ meta?: Record<string, unknown>;
138
+ }
139
+ interface AnnotationQuery<TQuery = unknown> {
140
+ id: string;
141
+ datasourceUid: string;
142
+ name?: string;
143
+ query?: TQuery;
144
+ options?: Record<string, unknown>;
145
+ hide?: boolean;
146
+ color?: string;
147
+ }
148
+ type BatchQueryResultItem = {
149
+ data: QueryResult;
150
+ error?: never;
151
+ } | {
152
+ data?: never;
153
+ error: Error;
154
+ };
155
+ interface BatchQueryResult {
156
+ items: BatchQueryResultItem[];
157
+ }
158
+ interface Annotation {
159
+ id?: string;
160
+ time: number;
161
+ timeEnd?: number;
162
+ title?: string;
163
+ text?: string;
164
+ tags?: string[];
165
+ color?: string;
166
+ source?: AnnotationQuery;
167
+ meta?: Record<string, unknown>;
168
+ }
169
+
170
+ interface DatasourceConfigEditorProps<TOptions = unknown> {
171
+ instance: DatasourceInstance<TOptions>;
172
+ options: TOptions;
173
+ onChange(options: TOptions): void;
174
+ onSave(): void;
175
+ }
176
+ interface DatasourceQueryEditorProps<TOptions = unknown, TQuery = unknown> {
177
+ instance: DatasourceInstance<TOptions>;
178
+ query: TQuery;
179
+ onChange(query: TQuery): void;
180
+ onRunQuery(): void;
181
+ }
182
+ interface DatasourcePluginBackend<TOptions = unknown, TQuery = unknown> {
183
+ query?(request: DataQuery<TQuery>, context?: DatasourceContext): Promise<unknown>;
184
+ transform?(raw: unknown, request: DataQuery<TQuery>, context?: DatasourceContext): QueryResult | Promise<QueryResult>;
185
+ healthCheck?(uid: string, options: TOptions, context?: DatasourceContext): Promise<DatasourceHealthResult>;
186
+ validateQuery?(uid: string, query: TQuery, context?: DatasourceContext): Promise<DatasourceValidationResult>;
187
+ listNamespaces?(uid: string, options: TOptions, context?: DatasourceContext): Promise<DatasourceSchemaNamespace[]>;
188
+ listFields?(uid: string, request: DatasourceSchemaFieldRequest, options: TOptions, context?: DatasourceContext): Promise<DatasourceSchemaField[]>;
189
+ }
190
+ interface DatasourcePluginDef<TOptions = unknown, TQuery = unknown> {
191
+ type: string;
192
+ name: string;
193
+ description?: string;
194
+ configEditor?(props: DatasourceConfigEditorProps<TOptions>): unknown;
195
+ queryEditor?(props: DatasourceQueryEditorProps<TOptions, TQuery>): unknown;
196
+ backend?: DatasourcePluginBackend<TOptions, TQuery>;
197
+ meta?: Record<string, unknown>;
198
+ }
199
+ declare function defineDatasourcePlugin<TOptions = unknown, TQuery = unknown>(def: DatasourcePluginDef<TOptions, TQuery>): DatasourcePluginDef<TOptions, TQuery>;
200
+
201
+ interface DatasourceRegistry {
202
+ register(plugin: DatasourcePluginDef): void;
203
+ get(type: string): DatasourcePluginDef | undefined;
204
+ has(type: string): boolean;
205
+ list(): DatasourcePluginDef[];
206
+ getConfigEditor(type: string): ((props: DatasourceConfigEditorProps<unknown>) => unknown) | undefined;
207
+ getQueryEditor(type: string): ((props: DatasourceQueryEditorProps<unknown, unknown>) => unknown) | undefined;
208
+ }
209
+ declare function createDatasourceRegistry(plugins?: readonly DatasourcePluginDef[]): DatasourceRegistry;
210
+
211
+ interface QueryCallOptions {
212
+ transform?: (result: QueryResult) => QueryResult | Promise<QueryResult>;
213
+ }
214
+ interface DatasourceManagerTypes {
215
+ list(context?: DatasourceContext): Promise<DatasourceTypeInfo[]>;
216
+ get(type: string, context?: DatasourceContext): Promise<DatasourceTypeInfo>;
217
+ install?(type: string, context?: DatasourceContext): Promise<void>;
218
+ uninstall?(type: string, context?: DatasourceContext): Promise<void>;
219
+ enable?(type: string, context?: DatasourceContext): Promise<void>;
220
+ disable?(type: string, context?: DatasourceContext): Promise<void>;
221
+ }
222
+ interface DatasourceManagerInstances {
223
+ list(options?: DatasourceListOptions, context?: DatasourceContext): Promise<DatasourceListResult>;
224
+ get(uid: string, context?: DatasourceContext): Promise<DatasourceInstance>;
225
+ create(input: DatasourceCreateInput, context?: DatasourceContext): Promise<DatasourceInstance>;
226
+ update(uid: string, patch: DatasourceUpdateInput, context?: DatasourceContext): Promise<DatasourceInstance>;
227
+ delete(uid: string, context?: DatasourceContext): Promise<void>;
228
+ query(request: DataQuery, context?: DatasourceContext, options?: QueryCallOptions): Promise<QueryResult>;
229
+ batchQuery(requests: DataQuery[], context?: DatasourceContext, options?: QueryCallOptions): Promise<BatchQueryResult>;
230
+ healthCheck(uid: string, type: string, context?: DatasourceContext): Promise<DatasourceHealthResult>;
231
+ validateQuery(uid: string, type: string, query: unknown, context?: DatasourceContext): Promise<DatasourceValidationResult>;
232
+ listNamespaces(uid: string, type: string, context?: DatasourceContext): Promise<DatasourceSchemaNamespace[]>;
233
+ listFields(uid: string, type: string, request: DatasourceSchemaFieldRequest, context?: DatasourceContext): Promise<DatasourceSchemaField[]>;
234
+ }
235
+ interface DatasourceManager {
236
+ registerPlugin(plugin: DatasourcePluginDef): void;
237
+ registry: DatasourceRegistry;
238
+ types: DatasourceManagerTypes;
239
+ instances: DatasourceManagerInstances;
240
+ }
241
+ interface DatasourceManagerBackend {
242
+ types: {
243
+ list(context?: DatasourceContext): Promise<DatasourceTypeInfo[]>;
244
+ get(type: string, context?: DatasourceContext): Promise<DatasourceTypeInfo>;
245
+ install?(type: string, context?: DatasourceContext): Promise<void>;
246
+ uninstall?(type: string, context?: DatasourceContext): Promise<void>;
247
+ enable?(type: string, context?: DatasourceContext): Promise<void>;
248
+ disable?(type: string, context?: DatasourceContext): Promise<void>;
249
+ };
250
+ instances: {
251
+ list(options?: DatasourceListOptions, context?: DatasourceContext): Promise<DatasourceListResult>;
252
+ get(uid: string, context?: DatasourceContext): Promise<DatasourceInstance>;
253
+ create(input: DatasourceCreateInput, context?: DatasourceContext): Promise<DatasourceInstance>;
254
+ update(uid: string, patch: DatasourceUpdateInput, context?: DatasourceContext): Promise<DatasourceInstance>;
255
+ delete(uid: string, context?: DatasourceContext): Promise<void>;
256
+ };
257
+ query(request: DataQuery, context?: DatasourceContext): Promise<unknown>;
258
+ batchQuery?(requests: DataQuery[], context?: DatasourceContext): Promise<BatchQueryResult>;
259
+ healthCheck?(uid: string, context?: DatasourceContext): Promise<DatasourceHealthResult>;
260
+ validateQuery?(uid: string, query: unknown, context?: DatasourceContext): Promise<DatasourceValidationResult>;
261
+ listNamespaces?(uid: string, context?: DatasourceContext): Promise<DatasourceSchemaNamespace[]>;
262
+ listFields?(uid: string, request: DatasourceSchemaFieldRequest, context?: DatasourceContext): Promise<DatasourceSchemaField[]>;
263
+ }
264
+ interface CreateDatasourceManagerOptions {
265
+ registry?: DatasourceRegistry;
266
+ plugins?: readonly DatasourcePluginDef[];
267
+ backend: DatasourceManagerBackend;
268
+ }
269
+ declare function createDatasourceManager(options: CreateDatasourceManagerOptions): DatasourceManager;
270
+ interface CreateRestDatasourceManagerOptions {
271
+ baseUrl: string;
272
+ fetch?: typeof fetch;
273
+ getHeaders?: (context?: DatasourceContext) => HeadersInit | Promise<HeadersInit>;
274
+ paths?: Partial<RestDatasourceManagerPaths>;
275
+ unwrap?<T>(body: unknown, response: Response): T;
276
+ createError?(response: Response, body: unknown): Error | undefined;
277
+ }
278
+ interface RestDatasourceManagerPaths {
279
+ typesList(): string;
280
+ typeGet(type: string): string;
281
+ typeAction(type: string, action: 'install' | 'uninstall' | 'enable' | 'disable'): string;
282
+ instancesList(queryString: string): string;
283
+ instanceGet(uid: string): string;
284
+ instanceCreate(): string;
285
+ instanceUpdate(uid: string): string;
286
+ instanceDelete(uid: string): string;
287
+ query(): string;
288
+ healthCheck(uid: string): string;
289
+ validateQuery(uid: string): string;
290
+ listNamespaces(uid: string): string;
291
+ listFields(uid: string): string;
292
+ }
293
+ declare function createRestDatasourceManager(options: CreateRestDatasourceManagerOptions): DatasourceManagerBackend;
294
+
295
+ export { type Annotation as A, type BatchQueryResult as B, type CreateDatasourceManagerOptions as C, type DataQuery as D, type DatasourceUpdateInput as E, type DatasourceValidationResult as F, type QueryResult as G, createDatasourceManager as H, createDatasourceRegistry as I, createRestDatasourceManager as J, defineDatasourcePlugin as K, type QueryCallOptions as Q, type RestDatasourceManagerPaths as R, type VariableOption as V, type AnnotationQuery as a, type AuthContext as b, type AuthSubject as c, type BatchQueryResultItem as d, type CreateRestDatasourceManagerOptions as e, type DatasourceConfigEditorProps as f, type DatasourceContext as g, type DatasourceCreateInput as h, type DatasourceHealthResult as i, type DatasourceInstance as j, type DatasourceListFilter as k, type DatasourceListOptions as l, type DatasourceListResult as m, type DatasourceManager as n, type DatasourceManagerBackend as o, type DatasourceManagerInstances as p, type DatasourceManagerTypes as q, type DatasourcePermissionHint as r, type DatasourcePluginBackend as s, type DatasourcePluginDef as t, type DatasourceQueryEditorProps as u, type DatasourceRegistry as v, type DatasourceSchemaField as w, type DatasourceSchemaFieldRequest as x, type DatasourceSchemaNamespace as y, type DatasourceTypeInfo as z };