@bubblelab/shared-schemas 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.txt +202 -0
- package/README.md +138 -0
- package/dist/api-schema.d.ts +38 -0
- package/dist/api-schema.d.ts.map +1 -0
- package/dist/api-schema.js +26 -0
- package/dist/api-schema.js.map +1 -0
- package/dist/bubble-definition-schema.d.ts +242 -0
- package/dist/bubble-definition-schema.d.ts.map +1 -0
- package/dist/bubble-definition-schema.js +95 -0
- package/dist/bubble-definition-schema.js.map +1 -0
- package/dist/bubbleflow-execution-schema.d.ts +580 -0
- package/dist/bubbleflow-execution-schema.d.ts.map +1 -0
- package/dist/bubbleflow-execution-schema.js +230 -0
- package/dist/bubbleflow-execution-schema.js.map +1 -0
- package/dist/bubbleflow-schema.d.ts +785 -0
- package/dist/bubbleflow-schema.d.ts.map +1 -0
- package/dist/bubbleflow-schema.js +206 -0
- package/dist/bubbleflow-schema.js.map +1 -0
- package/dist/credential-schema.d.ts +405 -0
- package/dist/credential-schema.d.ts.map +1 -0
- package/dist/credential-schema.js +327 -0
- package/dist/credential-schema.js.map +1 -0
- package/dist/database-definition-schema.d.ts +97 -0
- package/dist/database-definition-schema.d.ts.map +1 -0
- package/dist/database-definition-schema.js +36 -0
- package/dist/database-definition-schema.js.map +1 -0
- package/dist/generate-bubbleflow-schema.d.ts +481 -0
- package/dist/generate-bubbleflow-schema.d.ts.map +1 -0
- package/dist/generate-bubbleflow-schema.js +247 -0
- package/dist/generate-bubbleflow-schema.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/mock-data-generator.d.ts +51 -0
- package/dist/mock-data-generator.d.ts.map +1 -0
- package/dist/mock-data-generator.js +325 -0
- package/dist/mock-data-generator.js.map +1 -0
- package/dist/mock-data-generator.test.d.ts +2 -0
- package/dist/mock-data-generator.test.d.ts.map +1 -0
- package/dist/mock-data-generator.test.js +176 -0
- package/dist/mock-data-generator.test.js.map +1 -0
- package/dist/oauth-schema.d.ts +61 -0
- package/dist/oauth-schema.d.ts.map +1 -0
- package/dist/oauth-schema.js +75 -0
- package/dist/oauth-schema.js.map +1 -0
- package/dist/prompts.d.ts +12 -0
- package/dist/prompts.d.ts.map +1 -0
- package/dist/prompts.js +40 -0
- package/dist/prompts.js.map +1 -0
- package/dist/routes.d.ts +2207 -0
- package/dist/routes.d.ts.map +1 -0
- package/dist/routes.js +978 -0
- package/dist/routes.js.map +1 -0
- package/dist/streaming-events.d.ts +35 -0
- package/dist/streaming-events.d.ts.map +1 -0
- package/dist/streaming-events.js +5 -0
- package/dist/streaming-events.js.map +1 -0
- package/dist/subscription-status-schema.d.ts +90 -0
- package/dist/subscription-status-schema.d.ts.map +1 -0
- package/dist/subscription-status-schema.js +66 -0
- package/dist/subscription-status-schema.js.map +1 -0
- package/dist/types.d.ts +19 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +27 -0
- package/dist/types.js.map +1 -0
- package/dist/waitlist-schema.d.ts +30 -0
- package/dist/waitlist-schema.d.ts.map +1 -0
- package/dist/waitlist-schema.js +39 -0
- package/dist/waitlist-schema.js.map +1 -0
- package/dist/webhook-schema.d.ts +95 -0
- package/dist/webhook-schema.d.ts.map +1 -0
- package/dist/webhook-schema.js +50 -0
- package/dist/webhook-schema.js.map +1 -0
- package/package.json +45 -0
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
import { CredentialType } from './types.js';
|
|
2
|
+
import { z } from '@hono/zod-openapi';
|
|
3
|
+
import { databaseMetadataSchema } from './database-definition-schema.js';
|
|
4
|
+
/**
|
|
5
|
+
* Maps credential types to their environment variable names (for backend only!!!!)
|
|
6
|
+
*/
|
|
7
|
+
export const CREDENTIAL_ENV_MAP = {
|
|
8
|
+
[CredentialType.OPENAI_CRED]: 'OPENAI_API_KEY',
|
|
9
|
+
[CredentialType.GOOGLE_GEMINI_CRED]: 'GOOGLE_API_KEY',
|
|
10
|
+
[CredentialType.ANTHROPIC_CRED]: 'ANTHROPIC_API_KEY',
|
|
11
|
+
[CredentialType.FIRECRAWL_API_KEY]: 'FIRE_CRAWL_API_KEY',
|
|
12
|
+
[CredentialType.DATABASE_CRED]: 'BUBBLE_CONNECTING_STRING_URL',
|
|
13
|
+
[CredentialType.SLACK_CRED]: 'SLACK_TOKEN',
|
|
14
|
+
[CredentialType.RESEND_CRED]: 'RESEND_API_KEY',
|
|
15
|
+
[CredentialType.OPENROUTER_CRED]: 'OPENROUTER_API_KEY',
|
|
16
|
+
[CredentialType.CLOUDFLARE_R2_ACCESS_KEY]: 'CLOUDFLARE_R2_ACCESS_KEY',
|
|
17
|
+
[CredentialType.CLOUDFLARE_R2_SECRET_KEY]: 'CLOUDFLARE_R2_SECRET_KEY',
|
|
18
|
+
[CredentialType.CLOUDFLARE_R2_ACCOUNT_ID]: 'CLOUDFLARE_R2_ACCOUNT_ID',
|
|
19
|
+
[CredentialType.GOOGLE_DRIVE_CRED]: '',
|
|
20
|
+
[CredentialType.GMAIL_CRED]: '',
|
|
21
|
+
[CredentialType.GOOGLE_SHEETS_CRED]: '',
|
|
22
|
+
[CredentialType.GOOGLE_CALENDAR_CRED]: '',
|
|
23
|
+
};
|
|
24
|
+
/** Used by bubblelab studio */
|
|
25
|
+
export const SYSTEM_CREDENTIALS = new Set([
|
|
26
|
+
CredentialType.GOOGLE_GEMINI_CRED,
|
|
27
|
+
CredentialType.FIRECRAWL_API_KEY,
|
|
28
|
+
CredentialType.OPENAI_CRED,
|
|
29
|
+
CredentialType.ANTHROPIC_CRED,
|
|
30
|
+
CredentialType.RESEND_CRED,
|
|
31
|
+
CredentialType.OPENROUTER_CRED,
|
|
32
|
+
// Cloudflare R2 Storage credentials
|
|
33
|
+
CredentialType.CLOUDFLARE_R2_ACCESS_KEY,
|
|
34
|
+
CredentialType.CLOUDFLARE_R2_SECRET_KEY,
|
|
35
|
+
CredentialType.CLOUDFLARE_R2_ACCOUNT_ID,
|
|
36
|
+
]);
|
|
37
|
+
/**
|
|
38
|
+
* OAuth provider configurations - single source of truth for OAuth providers
|
|
39
|
+
* Contains all information needed by frontend and backend
|
|
40
|
+
*/
|
|
41
|
+
export const OAUTH_PROVIDERS = {
|
|
42
|
+
google: {
|
|
43
|
+
name: 'google',
|
|
44
|
+
displayName: 'Google',
|
|
45
|
+
credentialTypes: {
|
|
46
|
+
[CredentialType.GOOGLE_DRIVE_CRED]: {
|
|
47
|
+
displayName: 'Google Drive',
|
|
48
|
+
defaultScopes: [
|
|
49
|
+
'https://www.googleapis.com/auth/drive.readonly',
|
|
50
|
+
'https://www.googleapis.com/auth/drive.file',
|
|
51
|
+
],
|
|
52
|
+
description: 'Access Google Drive files and folders',
|
|
53
|
+
},
|
|
54
|
+
[CredentialType.GMAIL_CRED]: {
|
|
55
|
+
displayName: 'Gmail',
|
|
56
|
+
defaultScopes: [
|
|
57
|
+
'https://www.googleapis.com/auth/gmail.readonly',
|
|
58
|
+
'https://www.googleapis.com/auth/gmail.send',
|
|
59
|
+
'https://www.googleapis.com/auth/gmail.modify',
|
|
60
|
+
],
|
|
61
|
+
description: 'Access Gmail for reading, sending, and managing emails',
|
|
62
|
+
},
|
|
63
|
+
[CredentialType.GOOGLE_SHEETS_CRED]: {
|
|
64
|
+
displayName: 'Google Sheets',
|
|
65
|
+
defaultScopes: [
|
|
66
|
+
'https://www.googleapis.com/auth/spreadsheets',
|
|
67
|
+
'https://www.googleapis.com/auth/drive.file',
|
|
68
|
+
],
|
|
69
|
+
description: 'Access Google Sheets for reading and writing spreadsheet data',
|
|
70
|
+
},
|
|
71
|
+
[CredentialType.GOOGLE_CALENDAR_CRED]: {
|
|
72
|
+
displayName: 'Google Calendar',
|
|
73
|
+
defaultScopes: [
|
|
74
|
+
'https://www.googleapis.com/auth/calendar.readonly',
|
|
75
|
+
'https://www.googleapis.com/auth/calendar.events',
|
|
76
|
+
],
|
|
77
|
+
description: 'Access Google Calendar for reading and managing events',
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
authorizationParams: {
|
|
81
|
+
access_type: 'offline', // Required for refresh tokens
|
|
82
|
+
prompt: 'consent', // Force consent screen to ensure refresh token is issued
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* Get the OAuth provider for a specific credential type
|
|
88
|
+
* Safely maps credential types to their OAuth providers
|
|
89
|
+
*/
|
|
90
|
+
export function getOAuthProvider(credentialType) {
|
|
91
|
+
for (const [providerName, config] of Object.entries(OAUTH_PROVIDERS)) {
|
|
92
|
+
if (config.credentialTypes[credentialType]) {
|
|
93
|
+
return providerName;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Check if a credential type is OAuth-based
|
|
100
|
+
*/
|
|
101
|
+
export function isOAuthCredential(credentialType) {
|
|
102
|
+
return getOAuthProvider(credentialType) !== null;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Collection of credential options for all bubbles
|
|
106
|
+
*/
|
|
107
|
+
export const BUBBLE_CREDENTIAL_OPTIONS = {
|
|
108
|
+
'ai-agent': [
|
|
109
|
+
CredentialType.OPENAI_CRED,
|
|
110
|
+
CredentialType.GOOGLE_GEMINI_CRED,
|
|
111
|
+
CredentialType.ANTHROPIC_CRED,
|
|
112
|
+
CredentialType.FIRECRAWL_API_KEY,
|
|
113
|
+
],
|
|
114
|
+
postgresql: [CredentialType.DATABASE_CRED],
|
|
115
|
+
slack: [CredentialType.SLACK_CRED],
|
|
116
|
+
resend: [CredentialType.RESEND_CRED],
|
|
117
|
+
'database-analyzer': [CredentialType.DATABASE_CRED],
|
|
118
|
+
'slack-notifier': [
|
|
119
|
+
CredentialType.SLACK_CRED,
|
|
120
|
+
CredentialType.OPENAI_CRED,
|
|
121
|
+
CredentialType.GOOGLE_GEMINI_CRED,
|
|
122
|
+
CredentialType.ANTHROPIC_CRED,
|
|
123
|
+
],
|
|
124
|
+
'slack-formatter-agent': [
|
|
125
|
+
CredentialType.OPENAI_CRED,
|
|
126
|
+
CredentialType.GOOGLE_GEMINI_CRED,
|
|
127
|
+
CredentialType.ANTHROPIC_CRED,
|
|
128
|
+
],
|
|
129
|
+
'slack-data-assistant': [
|
|
130
|
+
CredentialType.DATABASE_CRED,
|
|
131
|
+
CredentialType.SLACK_CRED,
|
|
132
|
+
CredentialType.OPENAI_CRED,
|
|
133
|
+
CredentialType.GOOGLE_GEMINI_CRED,
|
|
134
|
+
CredentialType.ANTHROPIC_CRED,
|
|
135
|
+
],
|
|
136
|
+
'hello-world': [],
|
|
137
|
+
http: [],
|
|
138
|
+
'get-bubble-details-tool': [],
|
|
139
|
+
'list-bubbles-tool': [],
|
|
140
|
+
'sql-query-tool': [],
|
|
141
|
+
'chart-js-tool': [],
|
|
142
|
+
'bubbleflow-validation-tool': [],
|
|
143
|
+
'web-search-tool': [CredentialType.FIRECRAWL_API_KEY],
|
|
144
|
+
'web-scrape-tool': [CredentialType.FIRECRAWL_API_KEY],
|
|
145
|
+
'web-crawl-tool': [CredentialType.FIRECRAWL_API_KEY],
|
|
146
|
+
'web-extract-tool': [CredentialType.FIRECRAWL_API_KEY],
|
|
147
|
+
'research-agent-tool': [
|
|
148
|
+
CredentialType.FIRECRAWL_API_KEY,
|
|
149
|
+
CredentialType.GOOGLE_GEMINI_CRED,
|
|
150
|
+
],
|
|
151
|
+
'reddit-scrape-tool': [],
|
|
152
|
+
'bubbleflow-code-generator': [],
|
|
153
|
+
'bubbleflow-generator': [
|
|
154
|
+
CredentialType.GOOGLE_GEMINI_CRED,
|
|
155
|
+
CredentialType.OPENROUTER_CRED,
|
|
156
|
+
],
|
|
157
|
+
'pdf-form-operations': [],
|
|
158
|
+
'pdf-ocr-workflow': [
|
|
159
|
+
CredentialType.GOOGLE_GEMINI_CRED,
|
|
160
|
+
CredentialType.OPENAI_CRED,
|
|
161
|
+
CredentialType.ANTHROPIC_CRED,
|
|
162
|
+
CredentialType.OPENROUTER_CRED,
|
|
163
|
+
],
|
|
164
|
+
'generate-document-workflow': [
|
|
165
|
+
CredentialType.GOOGLE_GEMINI_CRED,
|
|
166
|
+
CredentialType.OPENAI_CRED,
|
|
167
|
+
CredentialType.ANTHROPIC_CRED,
|
|
168
|
+
CredentialType.OPENROUTER_CRED,
|
|
169
|
+
],
|
|
170
|
+
'parse-document-workflow': [
|
|
171
|
+
CredentialType.GOOGLE_GEMINI_CRED,
|
|
172
|
+
CredentialType.OPENAI_CRED,
|
|
173
|
+
CredentialType.ANTHROPIC_CRED,
|
|
174
|
+
CredentialType.OPENROUTER_CRED,
|
|
175
|
+
CredentialType.CLOUDFLARE_R2_ACCESS_KEY,
|
|
176
|
+
CredentialType.CLOUDFLARE_R2_SECRET_KEY,
|
|
177
|
+
CredentialType.CLOUDFLARE_R2_ACCOUNT_ID,
|
|
178
|
+
],
|
|
179
|
+
storage: [
|
|
180
|
+
CredentialType.CLOUDFLARE_R2_ACCESS_KEY,
|
|
181
|
+
CredentialType.CLOUDFLARE_R2_SECRET_KEY,
|
|
182
|
+
CredentialType.CLOUDFLARE_R2_ACCOUNT_ID,
|
|
183
|
+
],
|
|
184
|
+
'google-drive': [CredentialType.GOOGLE_DRIVE_CRED],
|
|
185
|
+
gmail: [CredentialType.GMAIL_CRED],
|
|
186
|
+
'google-sheets': [CredentialType.GOOGLE_SHEETS_CRED],
|
|
187
|
+
'google-calendar': [CredentialType.GOOGLE_CALENDAR_CRED],
|
|
188
|
+
};
|
|
189
|
+
// POST /credentials - Create credential schema
|
|
190
|
+
export const createCredentialSchema = z
|
|
191
|
+
.object({
|
|
192
|
+
credentialType: z.nativeEnum(CredentialType).openapi({
|
|
193
|
+
description: 'Type of credential to store',
|
|
194
|
+
example: CredentialType.OPENAI_CRED,
|
|
195
|
+
}),
|
|
196
|
+
value: z.string().min(1).openapi({
|
|
197
|
+
description: 'The credential value (will be encrypted)',
|
|
198
|
+
example: 'sk-1234567890abcdef',
|
|
199
|
+
}),
|
|
200
|
+
name: z.string().optional().openapi({
|
|
201
|
+
description: 'Optional user-friendly name for the credential',
|
|
202
|
+
example: 'My OpenAI Key',
|
|
203
|
+
}),
|
|
204
|
+
skipValidation: z.boolean().optional().openapi({
|
|
205
|
+
description: 'Skip credential validation before storing (for testing/admin use)',
|
|
206
|
+
example: false,
|
|
207
|
+
}),
|
|
208
|
+
credentialConfigurations: z
|
|
209
|
+
.record(z.string(), z.unknown())
|
|
210
|
+
.optional()
|
|
211
|
+
.openapi({
|
|
212
|
+
description: 'Optional configurations for credential validation (e.g., ignoreSSL for PostgreSQL)',
|
|
213
|
+
example: { ignoreSSL: true },
|
|
214
|
+
}),
|
|
215
|
+
metadata: databaseMetadataSchema.optional().openapi({
|
|
216
|
+
description: 'Optional metadata for the credential (e.g., database schema for DATABASE_CRED)',
|
|
217
|
+
example: {
|
|
218
|
+
tables: {
|
|
219
|
+
users: {
|
|
220
|
+
id: 'integer',
|
|
221
|
+
email: 'character varying',
|
|
222
|
+
created_at: 'timestamp with time zone',
|
|
223
|
+
},
|
|
224
|
+
},
|
|
225
|
+
rules: [
|
|
226
|
+
{
|
|
227
|
+
id: 'rule-1',
|
|
228
|
+
text: 'No direct DELETE on users table',
|
|
229
|
+
enabled: true,
|
|
230
|
+
createdAt: '2024-01-01T00:00:00Z',
|
|
231
|
+
updatedAt: '2024-01-01T00:00:00Z',
|
|
232
|
+
},
|
|
233
|
+
],
|
|
234
|
+
},
|
|
235
|
+
}),
|
|
236
|
+
})
|
|
237
|
+
.openapi('CreateCredentialRequest');
|
|
238
|
+
// PUT /credentials/:id - Update credential schema
|
|
239
|
+
export const updateCredentialSchema = z
|
|
240
|
+
.object({
|
|
241
|
+
value: z.string().optional().openapi({
|
|
242
|
+
description: 'The credential value (will be encrypted). Leave empty to keep current value.',
|
|
243
|
+
example: 'sk-1234567890abcdef',
|
|
244
|
+
}),
|
|
245
|
+
name: z.string().optional().openapi({
|
|
246
|
+
description: 'Optional user-friendly name for the credential',
|
|
247
|
+
example: 'My OpenAI Key',
|
|
248
|
+
}),
|
|
249
|
+
skipValidation: z.boolean().optional().openapi({
|
|
250
|
+
description: 'Skip credential validation before storing (for testing/admin use)',
|
|
251
|
+
example: false,
|
|
252
|
+
}),
|
|
253
|
+
credentialConfigurations: z
|
|
254
|
+
.record(z.string(), z.unknown())
|
|
255
|
+
.optional()
|
|
256
|
+
.openapi({
|
|
257
|
+
description: 'Optional configurations for credential validation (e.g., ignoreSSL for PostgreSQL)',
|
|
258
|
+
example: { ignoreSSL: true },
|
|
259
|
+
}),
|
|
260
|
+
metadata: databaseMetadataSchema.optional().openapi({
|
|
261
|
+
description: 'Optional metadata for the credential (e.g., database schema for DATABASE_CRED)',
|
|
262
|
+
example: {
|
|
263
|
+
tables: {
|
|
264
|
+
users: {
|
|
265
|
+
id: 'integer',
|
|
266
|
+
email: 'character varying',
|
|
267
|
+
created_at: 'timestamp with time zone',
|
|
268
|
+
},
|
|
269
|
+
},
|
|
270
|
+
},
|
|
271
|
+
}),
|
|
272
|
+
})
|
|
273
|
+
.openapi('UpdateCredentialRequest');
|
|
274
|
+
// GET /credentials - List credentials response
|
|
275
|
+
export const credentialResponseSchema = z
|
|
276
|
+
.object({
|
|
277
|
+
id: z.number().openapi({ description: 'Credential ID' }),
|
|
278
|
+
credentialType: z.string().openapi({ description: 'Type of credential' }),
|
|
279
|
+
name: z.string().optional().openapi({ description: 'Credential name' }),
|
|
280
|
+
metadata: databaseMetadataSchema
|
|
281
|
+
.optional()
|
|
282
|
+
.openapi({ description: 'Credential metadata' }),
|
|
283
|
+
createdAt: z.string().openapi({ description: 'Creation timestamp' }),
|
|
284
|
+
// OAuth-specific fields
|
|
285
|
+
isOauth: z
|
|
286
|
+
.boolean()
|
|
287
|
+
.optional()
|
|
288
|
+
.openapi({ description: 'Whether this is an OAuth credential' }),
|
|
289
|
+
oauthProvider: z
|
|
290
|
+
.string()
|
|
291
|
+
.optional()
|
|
292
|
+
.openapi({ description: 'OAuth provider name' }),
|
|
293
|
+
oauthExpiresAt: z
|
|
294
|
+
.string()
|
|
295
|
+
.optional()
|
|
296
|
+
.openapi({ description: 'OAuth token expiration timestamp' }),
|
|
297
|
+
oauthScopes: z
|
|
298
|
+
.array(z.string())
|
|
299
|
+
.optional()
|
|
300
|
+
.openapi({ description: 'OAuth scopes granted' }),
|
|
301
|
+
oauthStatus: z
|
|
302
|
+
.enum(['active', 'expired', 'needs_refresh'])
|
|
303
|
+
.optional()
|
|
304
|
+
.openapi({ description: 'OAuth token status' }),
|
|
305
|
+
})
|
|
306
|
+
.openapi('CredentialResponse');
|
|
307
|
+
// POST /credentials - Create credential response
|
|
308
|
+
export const createCredentialResponseSchema = z
|
|
309
|
+
.object({
|
|
310
|
+
id: z.number().openapi({ description: 'Credential ID' }),
|
|
311
|
+
message: z.string().openapi({ description: 'Success message' }),
|
|
312
|
+
})
|
|
313
|
+
.openapi('CreateCredentialResponse');
|
|
314
|
+
// PUT /credentials/:id - Update credential response
|
|
315
|
+
export const updateCredentialResponseSchema = z
|
|
316
|
+
.object({
|
|
317
|
+
id: z.number().openapi({ description: 'Credential ID' }),
|
|
318
|
+
message: z.string().openapi({ description: 'Success message' }),
|
|
319
|
+
})
|
|
320
|
+
.openapi('UpdateCredentialResponse');
|
|
321
|
+
// General success message response (used by DELETE /credentials/:id, DELETE /bubble-flow/:id, PUT /bubble-flow/:id)
|
|
322
|
+
export const successMessageResponseSchema = z
|
|
323
|
+
.object({
|
|
324
|
+
message: z.string().openapi({ description: 'Success message' }),
|
|
325
|
+
})
|
|
326
|
+
.openapi('SuccessMessageResponse');
|
|
327
|
+
//# sourceMappingURL=credential-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credential-schema.js","sourceRoot":"","sources":["../src/credential-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database Definition Schema
|
|
3
|
+
*
|
|
4
|
+
* This schema is designed to store database table definitions and metadata
|
|
5
|
+
*/
|
|
6
|
+
import { z } from '@hono/zod-openapi';
|
|
7
|
+
export interface DatabaseConnection {
|
|
8
|
+
id: string;
|
|
9
|
+
name: string;
|
|
10
|
+
type: 'postgresql' | 'mysql' | 'mongodb' | 'bigquery' | 'sqlite';
|
|
11
|
+
host: string;
|
|
12
|
+
port: number;
|
|
13
|
+
database: string;
|
|
14
|
+
username?: string;
|
|
15
|
+
status: 'connected' | 'disconnected' | 'error';
|
|
16
|
+
createdAt: string;
|
|
17
|
+
lastUsed: string;
|
|
18
|
+
description?: string;
|
|
19
|
+
}
|
|
20
|
+
export type DatabaseStatus = 'connected' | 'disconnected' | 'error';
|
|
21
|
+
export type DatabaseType = 'postgresql' | 'mysql' | 'mongodb' | 'bigquery' | 'sqlite';
|
|
22
|
+
export interface DatabaseColumn {
|
|
23
|
+
name: string;
|
|
24
|
+
type: string;
|
|
25
|
+
isNullable: boolean;
|
|
26
|
+
defaultValue?: string;
|
|
27
|
+
constraints?: string[];
|
|
28
|
+
}
|
|
29
|
+
export interface DatabaseTable {
|
|
30
|
+
name: string;
|
|
31
|
+
schema: string;
|
|
32
|
+
columns: DatabaseColumn[];
|
|
33
|
+
rowCount?: number;
|
|
34
|
+
size?: string;
|
|
35
|
+
}
|
|
36
|
+
export interface DatabaseSchema {
|
|
37
|
+
tables: DatabaseTable[];
|
|
38
|
+
totalTables: number;
|
|
39
|
+
totalSize?: string;
|
|
40
|
+
}
|
|
41
|
+
export declare const databaseMetadataSchema: z.ZodObject<{
|
|
42
|
+
tables: z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
43
|
+
tableNotes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
44
|
+
databaseName: z.ZodOptional<z.ZodString>;
|
|
45
|
+
databaseType: z.ZodOptional<z.ZodEnum<["postgresql", "mysql", "sqlite", "mssql", "oracle"]>>;
|
|
46
|
+
rules: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
47
|
+
id: z.ZodString;
|
|
48
|
+
text: z.ZodString;
|
|
49
|
+
enabled: z.ZodBoolean;
|
|
50
|
+
createdAt: z.ZodString;
|
|
51
|
+
updatedAt: z.ZodString;
|
|
52
|
+
}, "strip", z.ZodTypeAny, {
|
|
53
|
+
id: string;
|
|
54
|
+
text: string;
|
|
55
|
+
enabled: boolean;
|
|
56
|
+
createdAt: string;
|
|
57
|
+
updatedAt: string;
|
|
58
|
+
}, {
|
|
59
|
+
id: string;
|
|
60
|
+
text: string;
|
|
61
|
+
enabled: boolean;
|
|
62
|
+
createdAt: string;
|
|
63
|
+
updatedAt: string;
|
|
64
|
+
}>, "many">>;
|
|
65
|
+
notes: z.ZodOptional<z.ZodString>;
|
|
66
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
67
|
+
}, "strip", z.ZodTypeAny, {
|
|
68
|
+
tables: Record<string, Record<string, string>>;
|
|
69
|
+
tableNotes?: Record<string, string> | undefined;
|
|
70
|
+
databaseName?: string | undefined;
|
|
71
|
+
databaseType?: "postgresql" | "mysql" | "sqlite" | "mssql" | "oracle" | undefined;
|
|
72
|
+
rules?: {
|
|
73
|
+
id: string;
|
|
74
|
+
text: string;
|
|
75
|
+
enabled: boolean;
|
|
76
|
+
createdAt: string;
|
|
77
|
+
updatedAt: string;
|
|
78
|
+
}[] | undefined;
|
|
79
|
+
notes?: string | undefined;
|
|
80
|
+
tags?: string[] | undefined;
|
|
81
|
+
}, {
|
|
82
|
+
tables: Record<string, Record<string, string>>;
|
|
83
|
+
tableNotes?: Record<string, string> | undefined;
|
|
84
|
+
databaseName?: string | undefined;
|
|
85
|
+
databaseType?: "postgresql" | "mysql" | "sqlite" | "mssql" | "oracle" | undefined;
|
|
86
|
+
rules?: {
|
|
87
|
+
id: string;
|
|
88
|
+
text: string;
|
|
89
|
+
enabled: boolean;
|
|
90
|
+
createdAt: string;
|
|
91
|
+
updatedAt: string;
|
|
92
|
+
}[] | undefined;
|
|
93
|
+
notes?: string | undefined;
|
|
94
|
+
tags?: string[] | undefined;
|
|
95
|
+
}>;
|
|
96
|
+
export type DatabaseMetadata = z.infer<typeof databaseMetadataSchema>;
|
|
97
|
+
//# sourceMappingURL=database-definition-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database-definition-schema.d.ts","sourceRoot":"","sources":["../src/database-definition-schema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAGtC,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,YAAY,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,WAAW,GAAG,cAAc,GAAG,OAAO,CAAC;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,cAAc,GAAG,OAAO,CAAC;AACpE,MAAM,MAAM,YAAY,GACpB,YAAY,GACZ,OAAO,GACP,SAAS,GACT,UAAU,GACV,QAAQ,CAAC;AAGb,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAGD,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgCjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database Definition Schema
|
|
3
|
+
*
|
|
4
|
+
* This schema is designed to store database table definitions and metadata
|
|
5
|
+
*/
|
|
6
|
+
import { z } from '@hono/zod-openapi';
|
|
7
|
+
// Schema for database metadata that can be stored in credentials
|
|
8
|
+
export const databaseMetadataSchema = z.object({
|
|
9
|
+
// Core database definition - mapping of table names to column definitions
|
|
10
|
+
// Format: { [tableName]: { [columnName]: columnType } }
|
|
11
|
+
tables: z.record(z.string(), // table name
|
|
12
|
+
z.record(z.string(), // column name
|
|
13
|
+
z.string() // notes about it
|
|
14
|
+
)),
|
|
15
|
+
// Table-level notes - mapping of table names to notes about the entire table
|
|
16
|
+
tableNotes: z.record(z.string(), z.string()).optional(),
|
|
17
|
+
// Optional metadata
|
|
18
|
+
databaseName: z.string().optional(),
|
|
19
|
+
databaseType: z
|
|
20
|
+
.enum(['postgresql', 'mysql', 'sqlite', 'mssql', 'oracle'])
|
|
21
|
+
.optional(),
|
|
22
|
+
// Rules and constraints - simplified to match frontend
|
|
23
|
+
rules: z
|
|
24
|
+
.array(z.object({
|
|
25
|
+
id: z.string(),
|
|
26
|
+
text: z.string(),
|
|
27
|
+
enabled: z.boolean(),
|
|
28
|
+
createdAt: z.string(), // ISO string
|
|
29
|
+
updatedAt: z.string(), // ISO string
|
|
30
|
+
}))
|
|
31
|
+
.optional(),
|
|
32
|
+
// Additional context
|
|
33
|
+
notes: z.string().optional(),
|
|
34
|
+
tags: z.array(z.string()).optional(),
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=database-definition-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database-definition-schema.js","sourceRoot":"","sources":["../src/database-definition-schema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAgDtC,iEAAiE;AACjE,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,0EAA0E;IAC1E,wDAAwD;IACxD,MAAM,EAAE,CAAC,CAAC,MAAM,CACd,CAAC,CAAC,MAAM,EAAE,EAAE,aAAa;IACzB,CAAC,CAAC,MAAM,CACN,CAAC,CAAC,MAAM,EAAE,EAAE,cAAc;IAC1B,CAAC,CAAC,MAAM,EAAE,CAAC,iBAAiB;KAC7B,CACF;IACD,6EAA6E;IAC7E,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACvD,oBAAoB;IACpB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,YAAY,EAAE,CAAC;SACZ,IAAI,CAAC,CAAC,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;SAC1D,QAAQ,EAAE;IACb,uDAAuD;IACvD,KAAK,EAAE,CAAC;SACL,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;QACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;QACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,aAAa;QACpC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,aAAa;KACrC,CAAC,CACH;SACA,QAAQ,EAAE;IACb,qBAAqB;IACrB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC"}
|