get-db9 0.1.0 → 0.2.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/README.md +0 -28
- package/dist/{types-ktbIiH5T.d.ts → customer-C7kvMVbX.d.cts} +79 -1
- package/dist/{types-ktbIiH5T.d.cts → customer-C7kvMVbX.d.ts} +79 -1
- package/dist/customer.d.cts +1 -2
- package/dist/customer.d.ts +1 -2
- package/dist/index.cjs +0 -149
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -5
- package/dist/index.d.ts +2 -5
- package/dist/index.js +0 -148
- package/dist/index.js.map +1 -1
- package/package.json +1 -6
- package/dist/admin.cjs +0 -267
- package/dist/admin.cjs.map +0 -1
- package/dist/admin.d.cts +0 -46
- package/dist/admin.d.ts +0 -46
- package/dist/admin.js +0 -240
- package/dist/admin.js.map +0 -1
- package/dist/customer-B6lzIJnQ.d.cts +0 -81
- package/dist/customer-wv08UX50.d.ts +0 -81
package/README.md
CHANGED
|
@@ -56,26 +56,6 @@ await client.databases.applyMigration(db.id, {
|
|
|
56
56
|
});
|
|
57
57
|
```
|
|
58
58
|
|
|
59
|
-
## Admin API
|
|
60
|
-
|
|
61
|
-
Full typed client for the Admin API (tenant management, batch operations, audit).
|
|
62
|
-
|
|
63
|
-
```typescript
|
|
64
|
-
import { createAdminClient } from 'get-db9/admin';
|
|
65
|
-
|
|
66
|
-
const admin = createAdminClient({ apiKey: 'your-api-key' });
|
|
67
|
-
|
|
68
|
-
// List tenants
|
|
69
|
-
const { items } = await admin.tenants.list({ state: 'ACTIVE' });
|
|
70
|
-
|
|
71
|
-
// Create tenant
|
|
72
|
-
const tenant = await admin.tenants.create();
|
|
73
|
-
console.log(tenant.connection_string);
|
|
74
|
-
|
|
75
|
-
// Batch operations
|
|
76
|
-
const batch = await admin.tenants.batchCreate({ count: 5 });
|
|
77
|
-
```
|
|
78
|
-
|
|
79
59
|
## Configuration
|
|
80
60
|
|
|
81
61
|
### instantDatabase options
|
|
@@ -98,14 +78,6 @@ const batch = await admin.tenants.batchCreate({ count: 5 });
|
|
|
98
78
|
| `fetch` | `FetchFn` | `globalThis.fetch` | Custom fetch |
|
|
99
79
|
| `credentialStore` | `CredentialStore` | — | Auto-load token |
|
|
100
80
|
|
|
101
|
-
### Admin client options
|
|
102
|
-
|
|
103
|
-
| Option | Type | Default | Description |
|
|
104
|
-
|--------|------|---------|-------------|
|
|
105
|
-
| `baseUrl` | `string` | Production URL | API endpoint |
|
|
106
|
-
| `apiKey` | `string` | — | X-API-Key header |
|
|
107
|
-
| `fetch` | `FetchFn` | `globalThis.fetch` | Custom fetch |
|
|
108
|
-
|
|
109
81
|
## Error Handling
|
|
110
82
|
|
|
111
83
|
```typescript
|
|
@@ -11,6 +11,41 @@ interface HttpClient {
|
|
|
11
11
|
del<T>(path: string): Promise<T>;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
+
/** Credential fields stored in `~/.db9/credentials` (TOML). */
|
|
15
|
+
interface Credentials {
|
|
16
|
+
token: string;
|
|
17
|
+
is_anonymous?: boolean;
|
|
18
|
+
anonymous_id?: string;
|
|
19
|
+
anonymous_secret?: string;
|
|
20
|
+
}
|
|
21
|
+
/** Async credential persistence abstraction. */
|
|
22
|
+
interface CredentialStore {
|
|
23
|
+
load(): Promise<Credentials | null>;
|
|
24
|
+
save(credentials: Credentials): Promise<void>;
|
|
25
|
+
clear(): Promise<void>;
|
|
26
|
+
}
|
|
27
|
+
declare class FileCredentialStore implements CredentialStore {
|
|
28
|
+
private readonly customPath;
|
|
29
|
+
/**
|
|
30
|
+
* @param path — Override the credential file location.
|
|
31
|
+
* Defaults to `~/.db9/credentials` (resolved lazily).
|
|
32
|
+
*/
|
|
33
|
+
constructor(path?: string);
|
|
34
|
+
/** Resolve the credential file path (lazy to avoid top-level `os` import). */
|
|
35
|
+
private resolvePath;
|
|
36
|
+
load(): Promise<Credentials | null>;
|
|
37
|
+
save(credentials: Credentials): Promise<void>;
|
|
38
|
+
clear(): Promise<void>;
|
|
39
|
+
}
|
|
40
|
+
declare class MemoryCredentialStore implements CredentialStore {
|
|
41
|
+
private credentials;
|
|
42
|
+
load(): Promise<Credentials | null>;
|
|
43
|
+
save(credentials: Credentials): Promise<void>;
|
|
44
|
+
clear(): Promise<void>;
|
|
45
|
+
}
|
|
46
|
+
/** Returns a FileCredentialStore with the default path (`~/.db9/credentials`). */
|
|
47
|
+
declare function defaultCredentialStore(): CredentialStore;
|
|
48
|
+
|
|
14
49
|
interface Endpoint {
|
|
15
50
|
host: string;
|
|
16
51
|
port: number;
|
|
@@ -318,4 +353,47 @@ interface MigrationMetadata {
|
|
|
318
353
|
}
|
|
319
354
|
type TenantState = 'CREATING' | 'ACTIVE' | 'DISABLING' | 'DISABLED' | 'CREATE_FAILED';
|
|
320
355
|
|
|
321
|
-
|
|
356
|
+
interface CustomerClientOptions {
|
|
357
|
+
baseUrl?: string;
|
|
358
|
+
token?: string;
|
|
359
|
+
fetch?: FetchFn;
|
|
360
|
+
credentialStore?: CredentialStore;
|
|
361
|
+
}
|
|
362
|
+
declare function createCustomerClient(options?: CustomerClientOptions): {
|
|
363
|
+
auth: {
|
|
364
|
+
register: (req: RegisterRequest) => Promise<CustomerResponse>;
|
|
365
|
+
login: (req: LoginRequest) => Promise<LoginResponse>;
|
|
366
|
+
anonymousRegister: () => Promise<AnonymousRegisterResponse>;
|
|
367
|
+
anonymousRefresh: (req: AnonymousRefreshRequest) => Promise<AnonymousRefreshResponse>;
|
|
368
|
+
me: () => Promise<CustomerResponse>;
|
|
369
|
+
getAnonymousSecret: () => Promise<AnonymousSecretResponse>;
|
|
370
|
+
claim: (req: ClaimRequest) => Promise<ClaimResponse>;
|
|
371
|
+
};
|
|
372
|
+
tokens: {
|
|
373
|
+
list: () => Promise<TokenResponse[]>;
|
|
374
|
+
revoke: (tokenId: string) => Promise<MessageResponse>;
|
|
375
|
+
};
|
|
376
|
+
databases: {
|
|
377
|
+
create: (req: CreateDatabaseRequest) => Promise<DatabaseResponse>;
|
|
378
|
+
list: () => Promise<DatabaseResponse[]>;
|
|
379
|
+
get: (databaseId: string) => Promise<DatabaseResponse>;
|
|
380
|
+
delete: (databaseId: string) => Promise<MessageResponse>;
|
|
381
|
+
resetPassword: (databaseId: string) => Promise<CustomerPasswordResetResponse>;
|
|
382
|
+
observability: (databaseId: string) => Promise<TenantObservabilityResponse>;
|
|
383
|
+
sql: (databaseId: string, query: string) => Promise<SqlResult>;
|
|
384
|
+
sqlFile: (databaseId: string, fileContent: string) => Promise<SqlResult>;
|
|
385
|
+
schema: (databaseId: string) => Promise<SchemaResponse>;
|
|
386
|
+
dump: (databaseId: string, req?: DumpRequest) => Promise<DumpResponse>;
|
|
387
|
+
applyMigration: (databaseId: string, req: MigrationApplyRequest) => Promise<MigrationApplyResponse>;
|
|
388
|
+
listMigrations: (databaseId: string) => Promise<MigrationMetadata[]>;
|
|
389
|
+
branch: (databaseId: string, req: BranchRequest) => Promise<DatabaseResponse>;
|
|
390
|
+
users: {
|
|
391
|
+
list: (databaseId: string) => Promise<UserResponse[]>;
|
|
392
|
+
create: (databaseId: string, req: CreateUserRequest) => Promise<MessageResponse>;
|
|
393
|
+
delete: (databaseId: string, username: string) => Promise<MessageResponse>;
|
|
394
|
+
};
|
|
395
|
+
};
|
|
396
|
+
};
|
|
397
|
+
type CustomerClient = ReturnType<typeof createCustomerClient>;
|
|
398
|
+
|
|
399
|
+
export { type SqlQueryResponse as $, type AdminCreateUserRequest as A, type BatchCreateRequest as B, type CredentialStore as C, type DatabaseResponse as D, type DumpRequest as E, type FetchFn as F, type DumpResponse as G, type Endpoint as H, FileCredentialStore as I, type HealthResponse as J, type HttpClient as K, type HttpClientOptions as L, type ListTenantsParams as M, type LoginRequest as N, type LoginResponse as O, MemoryCredentialStore as P, type MessageResponse as Q, type MigrationApplyRequest as R, type MigrationApplyResponse as S, type MigrationMetadata as T, type ObservabilitySummary as U, type PasswordResetResponse as V, type QuerySample as W, type RegisterRequest as X, type SchemaResponse as Y, type SqlExecuteRequest as Z, type SqlQueryRequest as _, type AnonymousRefreshRequest as a, type SqlResult as a0, type TableMetadata as a1, type TenantConnectRequest as a2, type TenantConnectResponse as a3, type TenantListResponse as a4, type TenantObservabilityResponse as a5, type TenantResponse as a6, type TenantState as a7, type TenantUpdateRequest as a8, type TokenResponse as a9, type UserCreateResponse as aa, type UserResponse as ab, type ViewMetadata as ac, createCustomerClient as ad, defaultCredentialStore as ae, type AnonymousRefreshResponse as b, type AnonymousRegisterResponse as c, type AnonymousSecretResponse as d, type AuditLogParams as e, type AuditLogResponse as f, type BatchCreateResponse as g, type BatchDeleteRequest as h, type BatchDeleteResponse as i, type BatchItemError as j, type BatchUpdateRequest as k, type BatchUpdateResponse as l, type BranchRequest as m, type ClaimRequest as n, type ClaimResponse as o, type ColumnInfo as p, type ColumnMetadata as q, type CreateDatabaseRequest as r, type CreateTenantRequest as s, type CreateTenantResponse as t, type CreateUserRequest as u, type Credentials as v, type CustomerClient as w, type CustomerClientOptions as x, type CustomerPasswordResetResponse as y, type CustomerResponse as z };
|
|
@@ -11,6 +11,41 @@ interface HttpClient {
|
|
|
11
11
|
del<T>(path: string): Promise<T>;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
+
/** Credential fields stored in `~/.db9/credentials` (TOML). */
|
|
15
|
+
interface Credentials {
|
|
16
|
+
token: string;
|
|
17
|
+
is_anonymous?: boolean;
|
|
18
|
+
anonymous_id?: string;
|
|
19
|
+
anonymous_secret?: string;
|
|
20
|
+
}
|
|
21
|
+
/** Async credential persistence abstraction. */
|
|
22
|
+
interface CredentialStore {
|
|
23
|
+
load(): Promise<Credentials | null>;
|
|
24
|
+
save(credentials: Credentials): Promise<void>;
|
|
25
|
+
clear(): Promise<void>;
|
|
26
|
+
}
|
|
27
|
+
declare class FileCredentialStore implements CredentialStore {
|
|
28
|
+
private readonly customPath;
|
|
29
|
+
/**
|
|
30
|
+
* @param path — Override the credential file location.
|
|
31
|
+
* Defaults to `~/.db9/credentials` (resolved lazily).
|
|
32
|
+
*/
|
|
33
|
+
constructor(path?: string);
|
|
34
|
+
/** Resolve the credential file path (lazy to avoid top-level `os` import). */
|
|
35
|
+
private resolvePath;
|
|
36
|
+
load(): Promise<Credentials | null>;
|
|
37
|
+
save(credentials: Credentials): Promise<void>;
|
|
38
|
+
clear(): Promise<void>;
|
|
39
|
+
}
|
|
40
|
+
declare class MemoryCredentialStore implements CredentialStore {
|
|
41
|
+
private credentials;
|
|
42
|
+
load(): Promise<Credentials | null>;
|
|
43
|
+
save(credentials: Credentials): Promise<void>;
|
|
44
|
+
clear(): Promise<void>;
|
|
45
|
+
}
|
|
46
|
+
/** Returns a FileCredentialStore with the default path (`~/.db9/credentials`). */
|
|
47
|
+
declare function defaultCredentialStore(): CredentialStore;
|
|
48
|
+
|
|
14
49
|
interface Endpoint {
|
|
15
50
|
host: string;
|
|
16
51
|
port: number;
|
|
@@ -318,4 +353,47 @@ interface MigrationMetadata {
|
|
|
318
353
|
}
|
|
319
354
|
type TenantState = 'CREATING' | 'ACTIVE' | 'DISABLING' | 'DISABLED' | 'CREATE_FAILED';
|
|
320
355
|
|
|
321
|
-
|
|
356
|
+
interface CustomerClientOptions {
|
|
357
|
+
baseUrl?: string;
|
|
358
|
+
token?: string;
|
|
359
|
+
fetch?: FetchFn;
|
|
360
|
+
credentialStore?: CredentialStore;
|
|
361
|
+
}
|
|
362
|
+
declare function createCustomerClient(options?: CustomerClientOptions): {
|
|
363
|
+
auth: {
|
|
364
|
+
register: (req: RegisterRequest) => Promise<CustomerResponse>;
|
|
365
|
+
login: (req: LoginRequest) => Promise<LoginResponse>;
|
|
366
|
+
anonymousRegister: () => Promise<AnonymousRegisterResponse>;
|
|
367
|
+
anonymousRefresh: (req: AnonymousRefreshRequest) => Promise<AnonymousRefreshResponse>;
|
|
368
|
+
me: () => Promise<CustomerResponse>;
|
|
369
|
+
getAnonymousSecret: () => Promise<AnonymousSecretResponse>;
|
|
370
|
+
claim: (req: ClaimRequest) => Promise<ClaimResponse>;
|
|
371
|
+
};
|
|
372
|
+
tokens: {
|
|
373
|
+
list: () => Promise<TokenResponse[]>;
|
|
374
|
+
revoke: (tokenId: string) => Promise<MessageResponse>;
|
|
375
|
+
};
|
|
376
|
+
databases: {
|
|
377
|
+
create: (req: CreateDatabaseRequest) => Promise<DatabaseResponse>;
|
|
378
|
+
list: () => Promise<DatabaseResponse[]>;
|
|
379
|
+
get: (databaseId: string) => Promise<DatabaseResponse>;
|
|
380
|
+
delete: (databaseId: string) => Promise<MessageResponse>;
|
|
381
|
+
resetPassword: (databaseId: string) => Promise<CustomerPasswordResetResponse>;
|
|
382
|
+
observability: (databaseId: string) => Promise<TenantObservabilityResponse>;
|
|
383
|
+
sql: (databaseId: string, query: string) => Promise<SqlResult>;
|
|
384
|
+
sqlFile: (databaseId: string, fileContent: string) => Promise<SqlResult>;
|
|
385
|
+
schema: (databaseId: string) => Promise<SchemaResponse>;
|
|
386
|
+
dump: (databaseId: string, req?: DumpRequest) => Promise<DumpResponse>;
|
|
387
|
+
applyMigration: (databaseId: string, req: MigrationApplyRequest) => Promise<MigrationApplyResponse>;
|
|
388
|
+
listMigrations: (databaseId: string) => Promise<MigrationMetadata[]>;
|
|
389
|
+
branch: (databaseId: string, req: BranchRequest) => Promise<DatabaseResponse>;
|
|
390
|
+
users: {
|
|
391
|
+
list: (databaseId: string) => Promise<UserResponse[]>;
|
|
392
|
+
create: (databaseId: string, req: CreateUserRequest) => Promise<MessageResponse>;
|
|
393
|
+
delete: (databaseId: string, username: string) => Promise<MessageResponse>;
|
|
394
|
+
};
|
|
395
|
+
};
|
|
396
|
+
};
|
|
397
|
+
type CustomerClient = ReturnType<typeof createCustomerClient>;
|
|
398
|
+
|
|
399
|
+
export { type SqlQueryResponse as $, type AdminCreateUserRequest as A, type BatchCreateRequest as B, type CredentialStore as C, type DatabaseResponse as D, type DumpRequest as E, type FetchFn as F, type DumpResponse as G, type Endpoint as H, FileCredentialStore as I, type HealthResponse as J, type HttpClient as K, type HttpClientOptions as L, type ListTenantsParams as M, type LoginRequest as N, type LoginResponse as O, MemoryCredentialStore as P, type MessageResponse as Q, type MigrationApplyRequest as R, type MigrationApplyResponse as S, type MigrationMetadata as T, type ObservabilitySummary as U, type PasswordResetResponse as V, type QuerySample as W, type RegisterRequest as X, type SchemaResponse as Y, type SqlExecuteRequest as Z, type SqlQueryRequest as _, type AnonymousRefreshRequest as a, type SqlResult as a0, type TableMetadata as a1, type TenantConnectRequest as a2, type TenantConnectResponse as a3, type TenantListResponse as a4, type TenantObservabilityResponse as a5, type TenantResponse as a6, type TenantState as a7, type TenantUpdateRequest as a8, type TokenResponse as a9, type UserCreateResponse as aa, type UserResponse as ab, type ViewMetadata as ac, createCustomerClient as ad, defaultCredentialStore as ae, type AnonymousRefreshResponse as b, type AnonymousRegisterResponse as c, type AnonymousSecretResponse as d, type AuditLogParams as e, type AuditLogResponse as f, type BatchCreateResponse as g, type BatchDeleteRequest as h, type BatchDeleteResponse as i, type BatchItemError as j, type BatchUpdateRequest as k, type BatchUpdateResponse as l, type BranchRequest as m, type ClaimRequest as n, type ClaimResponse as o, type ColumnInfo as p, type ColumnMetadata as q, type CreateDatabaseRequest as r, type CreateTenantRequest as s, type CreateTenantResponse as t, type CreateUserRequest as u, type Credentials as v, type CustomerClient as w, type CustomerClientOptions as x, type CustomerPasswordResetResponse as y, type CustomerResponse as z };
|
package/dist/customer.d.cts
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { b as CustomerClient, c as CustomerClientOptions, d as createCustomerClient } from './customer-B6lzIJnQ.cjs';
|
|
1
|
+
export { w as CustomerClient, x as CustomerClientOptions, ad as createCustomerClient } from './customer-C7kvMVbX.cjs';
|
package/dist/customer.d.ts
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { b as CustomerClient, c as CustomerClientOptions, d as createCustomerClient } from './customer-wv08UX50.js';
|
|
1
|
+
export { w as CustomerClient, x as CustomerClientOptions, ad as createCustomerClient } from './customer-C7kvMVbX.js';
|
package/dist/index.cjs
CHANGED
|
@@ -36,7 +36,6 @@ __export(index_exports, {
|
|
|
36
36
|
Db9NotFoundError: () => Db9NotFoundError,
|
|
37
37
|
FileCredentialStore: () => FileCredentialStore,
|
|
38
38
|
MemoryCredentialStore: () => MemoryCredentialStore,
|
|
39
|
-
createAdminClient: () => createAdminClient,
|
|
40
39
|
createCustomerClient: () => createCustomerClient,
|
|
41
40
|
defaultCredentialStore: () => defaultCredentialStore,
|
|
42
41
|
instantDatabase: () => instantDatabase
|
|
@@ -411,153 +410,6 @@ function defaultCredentialStore() {
|
|
|
411
410
|
return new FileCredentialStore();
|
|
412
411
|
}
|
|
413
412
|
|
|
414
|
-
// src/admin.ts
|
|
415
|
-
function createAdminClient(options = {}) {
|
|
416
|
-
const baseUrl = options.baseUrl ?? "https://db9.shared.aws.tidbcloud.com/api";
|
|
417
|
-
const headers = {};
|
|
418
|
-
if (options.apiKey) {
|
|
419
|
-
headers["X-API-Key"] = options.apiKey;
|
|
420
|
-
}
|
|
421
|
-
const client = createHttpClient({
|
|
422
|
-
baseUrl,
|
|
423
|
-
fetch: options.fetch,
|
|
424
|
-
headers
|
|
425
|
-
});
|
|
426
|
-
return {
|
|
427
|
-
tenants: {
|
|
428
|
-
list: (params) => {
|
|
429
|
-
const queryParams = {};
|
|
430
|
-
if (params) {
|
|
431
|
-
if (params.page !== void 0)
|
|
432
|
-
queryParams.page = String(params.page);
|
|
433
|
-
if (params.size !== void 0)
|
|
434
|
-
queryParams.size = String(params.size);
|
|
435
|
-
if (params.state !== void 0) queryParams.state = params.state;
|
|
436
|
-
if (params.q !== void 0) queryParams.q = params.q;
|
|
437
|
-
if (params.cursor !== void 0) queryParams.cursor = params.cursor;
|
|
438
|
-
if (params.tag !== void 0) queryParams.tag = params.tag;
|
|
439
|
-
}
|
|
440
|
-
return client.get("/tenants", queryParams);
|
|
441
|
-
},
|
|
442
|
-
create: (req) => client.post("/tenants", req),
|
|
443
|
-
get: (tenantId) => client.get(`/tenants/${tenantId}`),
|
|
444
|
-
update: (tenantId, req) => client.put(`/tenants/${tenantId}`, req),
|
|
445
|
-
delete: (tenantId) => client.del(`/tenants/${tenantId}`),
|
|
446
|
-
remove: (tenantId) => client.post(`/tenants/${tenantId}/remove`),
|
|
447
|
-
batchCreate: (req) => client.post("/tenants/batch", req),
|
|
448
|
-
batchDelete: (req) => client.post("/tenants/batch/delete", req),
|
|
449
|
-
batchUpdate: (req) => client.put("/tenants/batch", req),
|
|
450
|
-
connect: (tenantId, req) => client.post(
|
|
451
|
-
`/tenants/${tenantId}/connect`,
|
|
452
|
-
req
|
|
453
|
-
),
|
|
454
|
-
// query() needs X-Tenant-Session header — create a one-off client
|
|
455
|
-
query: async (tenantId, sessionId, req) => {
|
|
456
|
-
const sessionClient = createHttpClient({
|
|
457
|
-
baseUrl,
|
|
458
|
-
fetch: options.fetch,
|
|
459
|
-
headers: {
|
|
460
|
-
...headers,
|
|
461
|
-
"X-Tenant-Session": sessionId
|
|
462
|
-
}
|
|
463
|
-
});
|
|
464
|
-
return sessionClient.post(
|
|
465
|
-
`/tenants/${tenantId}/query`,
|
|
466
|
-
req
|
|
467
|
-
);
|
|
468
|
-
}
|
|
469
|
-
},
|
|
470
|
-
system: {
|
|
471
|
-
health: () => client.get("/health"),
|
|
472
|
-
info: () => client.get("/info")
|
|
473
|
-
},
|
|
474
|
-
users: {
|
|
475
|
-
list: async (tenantId, sessionId) => {
|
|
476
|
-
const sessionClient = createHttpClient({
|
|
477
|
-
baseUrl,
|
|
478
|
-
fetch: options.fetch,
|
|
479
|
-
headers: {
|
|
480
|
-
...headers,
|
|
481
|
-
"X-Tenant-Session": sessionId
|
|
482
|
-
}
|
|
483
|
-
});
|
|
484
|
-
return sessionClient.get(
|
|
485
|
-
`/tenants/${tenantId}/users`
|
|
486
|
-
);
|
|
487
|
-
},
|
|
488
|
-
create: async (tenantId, sessionId, req) => {
|
|
489
|
-
const sessionClient = createHttpClient({
|
|
490
|
-
baseUrl,
|
|
491
|
-
fetch: options.fetch,
|
|
492
|
-
headers: {
|
|
493
|
-
...headers,
|
|
494
|
-
"X-Tenant-Session": sessionId
|
|
495
|
-
}
|
|
496
|
-
});
|
|
497
|
-
return sessionClient.post(
|
|
498
|
-
`/tenants/${tenantId}/users`,
|
|
499
|
-
req
|
|
500
|
-
);
|
|
501
|
-
},
|
|
502
|
-
delete: async (tenantId, sessionId, username) => {
|
|
503
|
-
const sessionClient = createHttpClient({
|
|
504
|
-
baseUrl,
|
|
505
|
-
fetch: options.fetch,
|
|
506
|
-
headers: {
|
|
507
|
-
...headers,
|
|
508
|
-
"X-Tenant-Session": sessionId
|
|
509
|
-
}
|
|
510
|
-
});
|
|
511
|
-
return sessionClient.del(
|
|
512
|
-
`/tenants/${tenantId}/users/${username}`
|
|
513
|
-
);
|
|
514
|
-
},
|
|
515
|
-
resetPassword: async (tenantId, sessionId, username) => {
|
|
516
|
-
const sessionClient = createHttpClient({
|
|
517
|
-
baseUrl,
|
|
518
|
-
fetch: options.fetch,
|
|
519
|
-
headers: {
|
|
520
|
-
...headers,
|
|
521
|
-
"X-Tenant-Session": sessionId
|
|
522
|
-
}
|
|
523
|
-
});
|
|
524
|
-
return sessionClient.post(
|
|
525
|
-
`/tenants/${tenantId}/users/${username}/password`
|
|
526
|
-
);
|
|
527
|
-
}
|
|
528
|
-
},
|
|
529
|
-
observability: {
|
|
530
|
-
get: (tenantId) => client.get(
|
|
531
|
-
`/tenants/${tenantId}/observability`
|
|
532
|
-
),
|
|
533
|
-
bootstrap: (tenantId, req) => client.post(
|
|
534
|
-
`/tenants/${tenantId}/observability/bootstrap`,
|
|
535
|
-
req
|
|
536
|
-
)
|
|
537
|
-
},
|
|
538
|
-
audit: {
|
|
539
|
-
list: (params) => {
|
|
540
|
-
const queryParams = {};
|
|
541
|
-
if (params) {
|
|
542
|
-
if (params.tenant_id !== void 0)
|
|
543
|
-
queryParams.tenant_id = params.tenant_id;
|
|
544
|
-
if (params.operation_type !== void 0)
|
|
545
|
-
queryParams.operation_type = params.operation_type;
|
|
546
|
-
if (params.resource_type !== void 0)
|
|
547
|
-
queryParams.resource_type = params.resource_type;
|
|
548
|
-
if (params.success !== void 0)
|
|
549
|
-
queryParams.success = String(params.success);
|
|
550
|
-
if (params.limit !== void 0)
|
|
551
|
-
queryParams.limit = String(params.limit);
|
|
552
|
-
if (params.offset !== void 0)
|
|
553
|
-
queryParams.offset = String(params.offset);
|
|
554
|
-
}
|
|
555
|
-
return client.get("/audit-logs", queryParams);
|
|
556
|
-
}
|
|
557
|
-
}
|
|
558
|
-
};
|
|
559
|
-
}
|
|
560
|
-
|
|
561
413
|
// src/index.ts
|
|
562
414
|
async function instantDatabase(options = {}) {
|
|
563
415
|
const store = options.credentialStore ?? defaultCredentialStore();
|
|
@@ -616,7 +468,6 @@ function toResult(db) {
|
|
|
616
468
|
Db9NotFoundError,
|
|
617
469
|
FileCredentialStore,
|
|
618
470
|
MemoryCredentialStore,
|
|
619
|
-
createAdminClient,
|
|
620
471
|
createCustomerClient,
|
|
621
472
|
defaultCredentialStore,
|
|
622
473
|
instantDatabase
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/errors.ts","../src/http.ts","../src/customer.ts","../src/credentials.ts","../src/admin.ts"],"sourcesContent":["import { createCustomerClient, type CustomerClientOptions } from './customer';\nimport {\n defaultCredentialStore,\n type CredentialStore,\n type Credentials,\n} from './credentials';\nimport type { FetchFn } from './http';\nimport type { DatabaseResponse } from './types';\n\nexport interface InstantDatabaseOptions {\n name?: string;\n baseUrl?: string;\n fetch?: FetchFn;\n credentialStore?: CredentialStore;\n seed?: string;\n seedFile?: string;\n}\n\nexport interface InstantDatabaseResult {\n databaseId: string;\n connectionString: string;\n adminUser: string;\n adminPassword: string;\n state: string;\n createdAt: string;\n}\n\nexport async function instantDatabase(\n options: InstantDatabaseOptions = {}\n): Promise<InstantDatabaseResult> {\n const store = options.credentialStore ?? defaultCredentialStore();\n const dbName = options.name ?? 'default';\n\n const creds = await store.load();\n let token: string;\n\n if (creds?.token) {\n token = creds.token;\n } else {\n const publicClient = createCustomerClient({\n baseUrl: options.baseUrl,\n fetch: options.fetch,\n });\n const regResult = await publicClient.auth.anonymousRegister();\n token = regResult.token;\n\n await store.save({\n token: regResult.token,\n is_anonymous: regResult.is_anonymous,\n anonymous_id: regResult.anonymous_id,\n anonymous_secret: regResult.anonymous_secret,\n });\n }\n\n const client = createCustomerClient({\n baseUrl: options.baseUrl,\n fetch: options.fetch,\n token,\n });\n\n const existing = await client.databases.list();\n const found = existing.find((db: DatabaseResponse) => db.name === dbName);\n if (found) {\n return toResult(found);\n }\n\n const created = await client.databases.create({ name: dbName });\n\n if (options.seed) {\n await client.databases.sql(created.id, options.seed);\n } else if (options.seedFile) {\n await client.databases.sqlFile(created.id, options.seedFile);\n }\n\n return toResult(created);\n}\n\nfunction toResult(db: DatabaseResponse): InstantDatabaseResult {\n return {\n databaseId: db.id,\n connectionString: db.connection_string ?? '',\n adminUser: db.admin_user ?? '',\n adminPassword: db.admin_password ?? '',\n state: db.state,\n createdAt: db.created_at,\n };\n}\n\nexport { createCustomerClient } from './customer';\nexport type { CustomerClientOptions, CustomerClient } from './customer';\n\nexport { createAdminClient } from './admin';\nexport type { AdminClientOptions, AdminClient } from './admin';\n\nexport {\n Db9Error,\n Db9AuthError,\n Db9NotFoundError,\n Db9ConflictError,\n} from './errors';\n\nexport {\n FileCredentialStore,\n MemoryCredentialStore,\n defaultCredentialStore,\n} from './credentials';\nexport type { CredentialStore, Credentials } from './credentials';\n\nexport type { FetchFn, HttpClient, HttpClientOptions } from './http';\n\nexport type * from './types';\n","export class Db9Error extends Error {\n readonly statusCode: number;\n readonly response?: Response;\n\n constructor(message: string, statusCode: number, response?: Response) {\n super(message);\n this.name = 'Db9Error';\n this.statusCode = statusCode;\n this.response = response;\n }\n\n static async fromResponse(response: Response): Promise<Db9Error> {\n // Parse { \"message\": string } body — the ONLY error format from the API\n let message: string;\n try {\n const body = (await response.json()) as { message?: string };\n message = body.message || response.statusText;\n } catch {\n message = response.statusText;\n }\n\n // Return specific subclass based on status code\n switch (response.status) {\n case 401:\n return new Db9AuthError(message, response);\n case 404:\n return new Db9NotFoundError(message, response);\n case 409:\n return new Db9ConflictError(message, response);\n default:\n return new Db9Error(message, response.status, response);\n }\n }\n}\n\nexport class Db9AuthError extends Db9Error {\n constructor(message: string, response?: Response) {\n super(message, 401, response);\n this.name = 'Db9AuthError';\n }\n}\n\nexport class Db9NotFoundError extends Db9Error {\n constructor(message: string, response?: Response) {\n super(message, 404, response);\n this.name = 'Db9NotFoundError';\n }\n}\n\nexport class Db9ConflictError extends Db9Error {\n constructor(message: string, response?: Response) {\n super(message, 409, response);\n this.name = 'Db9ConflictError';\n }\n}\n","import { Db9Error } from './errors';\n\nexport type FetchFn = typeof globalThis.fetch;\n\nexport interface HttpClientOptions {\n baseUrl: string;\n fetch?: FetchFn;\n headers?: Record<string, string>;\n}\n\nexport interface HttpClient {\n get<T>(path: string, params?: Record<string, string | undefined>): Promise<T>;\n post<T>(path: string, body?: unknown): Promise<T>;\n put<T>(path: string, body?: unknown): Promise<T>;\n del<T>(path: string): Promise<T>;\n}\n\nexport function createHttpClient(options: HttpClientOptions): HttpClient {\n const fetchFn = options.fetch ?? globalThis.fetch;\n const baseUrl = options.baseUrl.replace(/\\/$/, ''); // strip trailing slash\n\n async function request<T>(\n method: string,\n path: string,\n body?: unknown,\n params?: Record<string, string | undefined>\n ): Promise<T> {\n let url = `${baseUrl}${path}`;\n\n // Append query params for GET requests\n if (params) {\n const searchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(params)) {\n if (value !== undefined) {\n searchParams.set(key, value);\n }\n }\n const qs = searchParams.toString();\n if (qs) url += `?${qs}`;\n }\n\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n ...options.headers,\n };\n\n const init: RequestInit = { method, headers };\n if (body !== undefined) {\n init.body = JSON.stringify(body);\n }\n\n const response = await fetchFn(url, init);\n\n if (!response.ok) {\n throw await Db9Error.fromResponse(response);\n }\n\n // Handle 204 No Content\n if (response.status === 204) {\n return undefined as T;\n }\n\n return response.json() as Promise<T>;\n }\n\n return {\n get: <T>(path: string, params?: Record<string, string | undefined>) =>\n request<T>('GET', path, undefined, params),\n post: <T>(path: string, body?: unknown) => request<T>('POST', path, body),\n put: <T>(path: string, body?: unknown) => request<T>('PUT', path, body),\n del: <T>(path: string) => request<T>('DELETE', path),\n };\n}\n","import { createHttpClient, type FetchFn, type HttpClient } from './http';\nimport type { CredentialStore } from './credentials';\nimport type {\n RegisterRequest,\n CustomerResponse,\n LoginRequest,\n LoginResponse,\n AnonymousRegisterResponse,\n AnonymousRefreshRequest,\n AnonymousRefreshResponse,\n AnonymousSecretResponse,\n ClaimRequest,\n ClaimResponse,\n TokenResponse,\n MessageResponse,\n CreateDatabaseRequest,\n DatabaseResponse,\n CustomerPasswordResetResponse,\n TenantObservabilityResponse,\n SqlResult,\n SchemaResponse,\n DumpRequest,\n DumpResponse,\n MigrationApplyRequest,\n MigrationApplyResponse,\n MigrationMetadata,\n BranchRequest,\n UserResponse,\n CreateUserRequest,\n} from './types';\n\nexport interface CustomerClientOptions {\n baseUrl?: string;\n token?: string;\n fetch?: FetchFn;\n credentialStore?: CredentialStore;\n}\n\nexport function createCustomerClient(options: CustomerClientOptions = {}) {\n const baseUrl =\n options.baseUrl ?? 'https://db9.shared.aws.tidbcloud.com/api';\n let token = options.token;\n let tokenLoaded = !!token;\n\n // Public HTTP client — no Authorization header\n const publicClient = createHttpClient({\n baseUrl,\n fetch: options.fetch,\n });\n\n // Lazy-loading authenticated HTTP client\n async function getAuthClient(): Promise<HttpClient> {\n if (!token && !tokenLoaded && options.credentialStore) {\n const creds = await options.credentialStore.load();\n if (creds) token = creds.token;\n tokenLoaded = true;\n }\n if (!token) throw new Error('No authentication token available');\n return createHttpClient({\n baseUrl,\n fetch: options.fetch,\n headers: { Authorization: `Bearer ${token}` },\n });\n }\n\n return {\n auth: {\n // Public endpoints (no token required)\n register: (req: RegisterRequest) =>\n publicClient.post<CustomerResponse>('/customer/register', req),\n\n login: (req: LoginRequest) =>\n publicClient.post<LoginResponse>('/customer/login', req),\n\n anonymousRegister: () =>\n publicClient.post<AnonymousRegisterResponse>(\n '/customer/anonymous-register'\n ),\n\n anonymousRefresh: (req: AnonymousRefreshRequest) =>\n publicClient.post<AnonymousRefreshResponse>(\n '/customer/anonymous-refresh',\n req\n ),\n\n // Authenticated endpoints\n me: async () => {\n const client = await getAuthClient();\n return client.get<CustomerResponse>('/customer/me');\n },\n\n getAnonymousSecret: async () => {\n const client = await getAuthClient();\n return client.get<AnonymousSecretResponse>(\n '/customer/anonymous-secret'\n );\n },\n\n claim: async (req: ClaimRequest) => {\n const client = await getAuthClient();\n return client.post<ClaimResponse>('/customer/claim', req);\n },\n },\n\n tokens: {\n list: async () => {\n const client = await getAuthClient();\n return client.get<TokenResponse[]>('/customer/tokens');\n },\n\n revoke: async (tokenId: string) => {\n const client = await getAuthClient();\n return client.del<MessageResponse>(`/customer/tokens/${tokenId}`);\n },\n },\n\n databases: {\n // ── CRUD ──────────────────────────────────────────────────\n create: async (req: CreateDatabaseRequest) => {\n const client = await getAuthClient();\n return client.post<DatabaseResponse>('/customer/databases', req);\n },\n\n list: async () => {\n const client = await getAuthClient();\n return client.get<DatabaseResponse[]>('/customer/databases');\n },\n\n get: async (databaseId: string) => {\n const client = await getAuthClient();\n return client.get<DatabaseResponse>(\n `/customer/databases/${databaseId}`\n );\n },\n\n delete: async (databaseId: string) => {\n const client = await getAuthClient();\n return client.del<MessageResponse>(\n `/customer/databases/${databaseId}`\n );\n },\n\n resetPassword: async (databaseId: string) => {\n const client = await getAuthClient();\n return client.post<CustomerPasswordResetResponse>(\n `/customer/databases/${databaseId}/reset-password`\n );\n },\n\n observability: async (databaseId: string) => {\n const client = await getAuthClient();\n return client.get<TenantObservabilityResponse>(\n `/customer/databases/${databaseId}/observability`\n );\n },\n\n // ── SQL Execution ─────────────────────────────────────────\n sql: async (databaseId: string, query: string) => {\n const client = await getAuthClient();\n return client.post<SqlResult>(\n `/customer/databases/${databaseId}/sql`,\n { query }\n );\n },\n\n sqlFile: async (databaseId: string, fileContent: string) => {\n const client = await getAuthClient();\n return client.post<SqlResult>(\n `/customer/databases/${databaseId}/sql`,\n { file_content: fileContent }\n );\n },\n\n // ── Schema & Dump ─────────────────────────────────────────\n schema: async (databaseId: string) => {\n const client = await getAuthClient();\n return client.get<SchemaResponse>(\n `/customer/databases/${databaseId}/schema`\n );\n },\n\n dump: async (databaseId: string, req?: DumpRequest) => {\n const client = await getAuthClient();\n return client.post<DumpResponse>(\n `/customer/databases/${databaseId}/dump`,\n req\n );\n },\n\n // ── Migrations ────────────────────────────────────────────\n applyMigration: async (\n databaseId: string,\n req: MigrationApplyRequest\n ) => {\n const client = await getAuthClient();\n return client.post<MigrationApplyResponse>(\n `/customer/databases/${databaseId}/migrations`,\n req\n );\n },\n\n listMigrations: async (databaseId: string) => {\n const client = await getAuthClient();\n return client.get<MigrationMetadata[]>(\n `/customer/databases/${databaseId}/migrations`\n );\n },\n\n // ── Branching ─────────────────────────────────────────────\n branch: async (databaseId: string, req: BranchRequest) => {\n const client = await getAuthClient();\n return client.post<DatabaseResponse>(\n `/customer/databases/${databaseId}/branch`,\n req\n );\n },\n\n // ── User Management ───────────────────────────────────────\n users: {\n list: async (databaseId: string) => {\n const client = await getAuthClient();\n return client.get<UserResponse[]>(\n `/customer/databases/${databaseId}/users`\n );\n },\n\n create: async (databaseId: string, req: CreateUserRequest) => {\n const client = await getAuthClient();\n return client.post<MessageResponse>(\n `/customer/databases/${databaseId}/users`,\n req\n );\n },\n\n delete: async (databaseId: string, username: string) => {\n const client = await getAuthClient();\n return client.del<MessageResponse>(\n `/customer/databases/${databaseId}/users/${username}`\n );\n },\n },\n },\n };\n}\n\nexport type CustomerClient = ReturnType<typeof createCustomerClient>;\n","import { parse as parseToml, stringify as stringifyToml } from '@iarna/toml';\n\n// ---------------------------------------------------------------------------\n// Interfaces\n// ---------------------------------------------------------------------------\n\n/** Credential fields stored in `~/.db9/credentials` (TOML). */\nexport interface Credentials {\n token: string;\n is_anonymous?: boolean;\n anonymous_id?: string;\n anonymous_secret?: string;\n}\n\n/** Async credential persistence abstraction. */\nexport interface CredentialStore {\n load(): Promise<Credentials | null>;\n save(credentials: Credentials): Promise<void>;\n clear(): Promise<void>;\n}\n\n// ---------------------------------------------------------------------------\n// FileCredentialStore — TOML file at ~/.db9/credentials (matches db9 CLI)\n// ---------------------------------------------------------------------------\n\nexport class FileCredentialStore implements CredentialStore {\n private readonly customPath: string | undefined;\n\n /**\n * @param path — Override the credential file location.\n * Defaults to `~/.db9/credentials` (resolved lazily).\n */\n constructor(path?: string) {\n this.customPath = path;\n }\n\n /** Resolve the credential file path (lazy to avoid top-level `os` import). */\n private async resolvePath(): Promise<string> {\n if (this.customPath) return this.customPath;\n const os = await import('node:os');\n const nodePath = await import('node:path');\n return nodePath.join(os.homedir(), '.db9', 'credentials');\n }\n\n async load(): Promise<Credentials | null> {\n const fs = await import('node:fs/promises');\n const filePath = await this.resolvePath();\n\n let content: string;\n try {\n content = await fs.readFile(filePath, 'utf-8');\n } catch (err: unknown) {\n if ((err as NodeJS.ErrnoException).code === 'ENOENT') return null;\n throw err;\n }\n\n const parsed = parseToml(content);\n const token = parsed['token'];\n if (typeof token !== 'string') return null;\n\n const creds: Credentials = { token };\n if (typeof parsed['is_anonymous'] === 'boolean') {\n creds.is_anonymous = parsed['is_anonymous'];\n }\n if (typeof parsed['anonymous_id'] === 'string') {\n creds.anonymous_id = parsed['anonymous_id'];\n }\n if (typeof parsed['anonymous_secret'] === 'string') {\n creds.anonymous_secret = parsed['anonymous_secret'];\n }\n\n return creds;\n }\n\n async save(credentials: Credentials): Promise<void> {\n const fs = await import('node:fs/promises');\n const nodePath = await import('node:path');\n const filePath = await this.resolvePath();\n const dir = nodePath.dirname(filePath);\n\n // Ensure directory exists with 0o700 (matches CLI: ensure_config_dir)\n await fs.mkdir(dir, { recursive: true, mode: 0o700 });\n\n // Read → merge → write (preserves unknown fields as scalars)\n const data: Record<string, string | boolean | number> = {};\n try {\n const raw = await fs.readFile(filePath, 'utf-8');\n const parsed = parseToml(raw);\n for (const [k, v] of Object.entries(parsed)) {\n if (typeof v === 'string' || typeof v === 'boolean' || typeof v === 'number') {\n data[k] = v;\n }\n }\n } catch (err: unknown) {\n if ((err as NodeJS.ErrnoException).code !== 'ENOENT') throw err;\n }\n\n // Merge: always update token, only override optional fields when provided\n data['token'] = credentials.token;\n if (credentials.is_anonymous !== undefined) {\n data['is_anonymous'] = credentials.is_anonymous;\n }\n if (credentials.anonymous_id !== undefined) {\n data['anonymous_id'] = credentials.anonymous_id;\n }\n if (credentials.anonymous_secret !== undefined) {\n data['anonymous_secret'] = credentials.anonymous_secret;\n }\n\n // Serialize and write with 0o600 permissions (matches CLI: save_token)\n const toml = stringifyToml(\n data as Parameters<typeof stringifyToml>[0],\n );\n await fs.writeFile(filePath, toml, { mode: 0o600 });\n }\n\n async clear(): Promise<void> {\n const fs = await import('node:fs/promises');\n const filePath = await this.resolvePath();\n\n try {\n await fs.unlink(filePath);\n } catch (err: unknown) {\n if ((err as NodeJS.ErrnoException).code !== 'ENOENT') throw err;\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// MemoryCredentialStore — in-memory, no persistence\n// ---------------------------------------------------------------------------\n\nexport class MemoryCredentialStore implements CredentialStore {\n private credentials: Credentials | null = null;\n\n async load(): Promise<Credentials | null> {\n return this.credentials ? { ...this.credentials } : null;\n }\n\n async save(credentials: Credentials): Promise<void> {\n this.credentials = {\n token: credentials.token,\n is_anonymous: credentials.is_anonymous ?? this.credentials?.is_anonymous,\n anonymous_id: credentials.anonymous_id ?? this.credentials?.anonymous_id,\n anonymous_secret: credentials.anonymous_secret ?? this.credentials?.anonymous_secret,\n };\n }\n\n async clear(): Promise<void> {\n this.credentials = null;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Factory\n// ---------------------------------------------------------------------------\n\n/** Returns a FileCredentialStore with the default path (`~/.db9/credentials`). */\nexport function defaultCredentialStore(): CredentialStore {\n return new FileCredentialStore();\n}\n","import { createHttpClient, type FetchFn } from './http';\nimport type {\n CreateTenantRequest,\n CreateTenantResponse,\n TenantResponse,\n TenantListResponse,\n TenantUpdateRequest,\n TenantConnectRequest,\n TenantConnectResponse,\n SqlQueryRequest,\n SqlQueryResponse,\n ListTenantsParams,\n MessageResponse,\n HealthResponse,\n BatchCreateRequest,\n BatchCreateResponse,\n BatchDeleteRequest,\n BatchDeleteResponse,\n BatchUpdateRequest,\n BatchUpdateResponse,\n UserResponse,\n UserCreateResponse,\n AdminCreateUserRequest,\n PasswordResetResponse,\n TenantObservabilityResponse,\n AuditLogParams,\n AuditLogResponse,\n} from './types';\n\nexport interface AdminClientOptions {\n baseUrl?: string;\n apiKey?: string;\n fetch?: FetchFn;\n}\n\nexport function createAdminClient(options: AdminClientOptions = {}) {\n const baseUrl =\n options.baseUrl ?? 'https://db9.shared.aws.tidbcloud.com/api';\n const headers: Record<string, string> = {};\n if (options.apiKey) {\n headers['X-API-Key'] = options.apiKey;\n }\n\n const client = createHttpClient({\n baseUrl,\n fetch: options.fetch,\n headers,\n });\n\n return {\n tenants: {\n list: (params?: ListTenantsParams) => {\n const queryParams: Record<string, string | undefined> = {};\n if (params) {\n if (params.page !== undefined)\n queryParams.page = String(params.page);\n if (params.size !== undefined)\n queryParams.size = String(params.size);\n if (params.state !== undefined) queryParams.state = params.state;\n if (params.q !== undefined) queryParams.q = params.q;\n if (params.cursor !== undefined) queryParams.cursor = params.cursor;\n if (params.tag !== undefined) queryParams.tag = params.tag;\n }\n return client.get<TenantListResponse>('/tenants', queryParams);\n },\n create: (req?: CreateTenantRequest) =>\n client.post<CreateTenantResponse>('/tenants', req),\n get: (tenantId: string) =>\n client.get<TenantResponse>(`/tenants/${tenantId}`),\n update: (tenantId: string, req: TenantUpdateRequest) =>\n client.put<TenantResponse>(`/tenants/${tenantId}`, req),\n delete: (tenantId: string) =>\n client.del<MessageResponse>(`/tenants/${tenantId}`),\n remove: (tenantId: string) =>\n client.post<MessageResponse>(`/tenants/${tenantId}/remove`),\n\n batchCreate: (req: BatchCreateRequest) =>\n client.post<BatchCreateResponse>('/tenants/batch', req),\n batchDelete: (req: BatchDeleteRequest) =>\n client.post<BatchDeleteResponse>('/tenants/batch/delete', req),\n batchUpdate: (req: BatchUpdateRequest) =>\n client.put<BatchUpdateResponse>('/tenants/batch', req),\n\n connect: (tenantId: string, req: TenantConnectRequest) =>\n client.post<TenantConnectResponse>(\n `/tenants/${tenantId}/connect`,\n req\n ),\n\n // query() needs X-Tenant-Session header — create a one-off client\n query: async (\n tenantId: string,\n sessionId: string,\n req: SqlQueryRequest\n ) => {\n const sessionClient = createHttpClient({\n baseUrl,\n fetch: options.fetch,\n headers: {\n ...headers,\n 'X-Tenant-Session': sessionId,\n },\n });\n return sessionClient.post<SqlQueryResponse>(\n `/tenants/${tenantId}/query`,\n req\n );\n },\n },\n\n system: {\n health: () => client.get<HealthResponse>('/health'),\n info: () =>\n client.get<{ name: string; version: string; docs: string }>('/info'),\n },\n\n users: {\n list: async (tenantId: string, sessionId: string) => {\n const sessionClient = createHttpClient({\n baseUrl,\n fetch: options.fetch,\n headers: {\n ...headers,\n 'X-Tenant-Session': sessionId,\n },\n });\n return sessionClient.get<UserResponse[]>(\n `/tenants/${tenantId}/users`\n );\n },\n\n create: async (\n tenantId: string,\n sessionId: string,\n req: AdminCreateUserRequest\n ) => {\n const sessionClient = createHttpClient({\n baseUrl,\n fetch: options.fetch,\n headers: {\n ...headers,\n 'X-Tenant-Session': sessionId,\n },\n });\n return sessionClient.post<UserCreateResponse>(\n `/tenants/${tenantId}/users`,\n req\n );\n },\n\n delete: async (\n tenantId: string,\n sessionId: string,\n username: string\n ) => {\n const sessionClient = createHttpClient({\n baseUrl,\n fetch: options.fetch,\n headers: {\n ...headers,\n 'X-Tenant-Session': sessionId,\n },\n });\n return sessionClient.del<MessageResponse>(\n `/tenants/${tenantId}/users/${username}`\n );\n },\n\n resetPassword: async (\n tenantId: string,\n sessionId: string,\n username: string\n ) => {\n const sessionClient = createHttpClient({\n baseUrl,\n fetch: options.fetch,\n headers: {\n ...headers,\n 'X-Tenant-Session': sessionId,\n },\n });\n return sessionClient.post<PasswordResetResponse>(\n `/tenants/${tenantId}/users/${username}/password`\n );\n },\n },\n\n observability: {\n get: (tenantId: string) =>\n client.get<TenantObservabilityResponse>(\n `/tenants/${tenantId}/observability`\n ),\n\n bootstrap: (tenantId: string, req: TenantConnectRequest) =>\n client.post<MessageResponse>(\n `/tenants/${tenantId}/observability/bootstrap`,\n req\n ),\n },\n\n audit: {\n list: (params?: AuditLogParams) => {\n const queryParams: Record<string, string | undefined> = {};\n if (params) {\n if (params.tenant_id !== undefined)\n queryParams.tenant_id = params.tenant_id;\n if (params.operation_type !== undefined)\n queryParams.operation_type = params.operation_type;\n if (params.resource_type !== undefined)\n queryParams.resource_type = params.resource_type;\n if (params.success !== undefined)\n queryParams.success = String(params.success);\n if (params.limit !== undefined)\n queryParams.limit = String(params.limit);\n if (params.offset !== undefined)\n queryParams.offset = String(params.offset);\n }\n return client.get<AuditLogResponse[]>('/audit-logs', queryParams);\n },\n },\n };\n}\n\nexport type AdminClient = ReturnType<typeof createAdminClient>;"],"mappings":"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","names":["parseToml","stringifyToml"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/errors.ts","../src/http.ts","../src/customer.ts","../src/credentials.ts"],"sourcesContent":["import { createCustomerClient, type CustomerClientOptions } from './customer';\nimport {\n defaultCredentialStore,\n type CredentialStore,\n type Credentials,\n} from './credentials';\nimport type { FetchFn } from './http';\nimport type { DatabaseResponse } from './types';\n\nexport interface InstantDatabaseOptions {\n name?: string;\n baseUrl?: string;\n fetch?: FetchFn;\n credentialStore?: CredentialStore;\n seed?: string;\n seedFile?: string;\n}\n\nexport interface InstantDatabaseResult {\n databaseId: string;\n connectionString: string;\n adminUser: string;\n adminPassword: string;\n state: string;\n createdAt: string;\n}\n\nexport async function instantDatabase(\n options: InstantDatabaseOptions = {}\n): Promise<InstantDatabaseResult> {\n const store = options.credentialStore ?? defaultCredentialStore();\n const dbName = options.name ?? 'default';\n\n const creds = await store.load();\n let token: string;\n\n if (creds?.token) {\n token = creds.token;\n } else {\n const publicClient = createCustomerClient({\n baseUrl: options.baseUrl,\n fetch: options.fetch,\n });\n const regResult = await publicClient.auth.anonymousRegister();\n token = regResult.token;\n\n await store.save({\n token: regResult.token,\n is_anonymous: regResult.is_anonymous,\n anonymous_id: regResult.anonymous_id,\n anonymous_secret: regResult.anonymous_secret,\n });\n }\n\n const client = createCustomerClient({\n baseUrl: options.baseUrl,\n fetch: options.fetch,\n token,\n });\n\n const existing = await client.databases.list();\n const found = existing.find((db: DatabaseResponse) => db.name === dbName);\n if (found) {\n return toResult(found);\n }\n\n const created = await client.databases.create({ name: dbName });\n\n if (options.seed) {\n await client.databases.sql(created.id, options.seed);\n } else if (options.seedFile) {\n await client.databases.sqlFile(created.id, options.seedFile);\n }\n\n return toResult(created);\n}\n\nfunction toResult(db: DatabaseResponse): InstantDatabaseResult {\n return {\n databaseId: db.id,\n connectionString: db.connection_string ?? '',\n adminUser: db.admin_user ?? '',\n adminPassword: db.admin_password ?? '',\n state: db.state,\n createdAt: db.created_at,\n };\n}\n\nexport { createCustomerClient } from './customer';\nexport type { CustomerClientOptions, CustomerClient } from './customer';\n\nexport {\n Db9Error,\n Db9AuthError,\n Db9NotFoundError,\n Db9ConflictError,\n} from './errors';\n\nexport {\n FileCredentialStore,\n MemoryCredentialStore,\n defaultCredentialStore,\n} from './credentials';\nexport type { CredentialStore, Credentials } from './credentials';\n\nexport type { FetchFn, HttpClient, HttpClientOptions } from './http';\n\nexport type * from './types';\n","export class Db9Error extends Error {\n readonly statusCode: number;\n readonly response?: Response;\n\n constructor(message: string, statusCode: number, response?: Response) {\n super(message);\n this.name = 'Db9Error';\n this.statusCode = statusCode;\n this.response = response;\n }\n\n static async fromResponse(response: Response): Promise<Db9Error> {\n // Parse { \"message\": string } body — the ONLY error format from the API\n let message: string;\n try {\n const body = (await response.json()) as { message?: string };\n message = body.message || response.statusText;\n } catch {\n message = response.statusText;\n }\n\n // Return specific subclass based on status code\n switch (response.status) {\n case 401:\n return new Db9AuthError(message, response);\n case 404:\n return new Db9NotFoundError(message, response);\n case 409:\n return new Db9ConflictError(message, response);\n default:\n return new Db9Error(message, response.status, response);\n }\n }\n}\n\nexport class Db9AuthError extends Db9Error {\n constructor(message: string, response?: Response) {\n super(message, 401, response);\n this.name = 'Db9AuthError';\n }\n}\n\nexport class Db9NotFoundError extends Db9Error {\n constructor(message: string, response?: Response) {\n super(message, 404, response);\n this.name = 'Db9NotFoundError';\n }\n}\n\nexport class Db9ConflictError extends Db9Error {\n constructor(message: string, response?: Response) {\n super(message, 409, response);\n this.name = 'Db9ConflictError';\n }\n}\n","import { Db9Error } from './errors';\n\nexport type FetchFn = typeof globalThis.fetch;\n\nexport interface HttpClientOptions {\n baseUrl: string;\n fetch?: FetchFn;\n headers?: Record<string, string>;\n}\n\nexport interface HttpClient {\n get<T>(path: string, params?: Record<string, string | undefined>): Promise<T>;\n post<T>(path: string, body?: unknown): Promise<T>;\n put<T>(path: string, body?: unknown): Promise<T>;\n del<T>(path: string): Promise<T>;\n}\n\nexport function createHttpClient(options: HttpClientOptions): HttpClient {\n const fetchFn = options.fetch ?? globalThis.fetch;\n const baseUrl = options.baseUrl.replace(/\\/$/, ''); // strip trailing slash\n\n async function request<T>(\n method: string,\n path: string,\n body?: unknown,\n params?: Record<string, string | undefined>\n ): Promise<T> {\n let url = `${baseUrl}${path}`;\n\n // Append query params for GET requests\n if (params) {\n const searchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(params)) {\n if (value !== undefined) {\n searchParams.set(key, value);\n }\n }\n const qs = searchParams.toString();\n if (qs) url += `?${qs}`;\n }\n\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n ...options.headers,\n };\n\n const init: RequestInit = { method, headers };\n if (body !== undefined) {\n init.body = JSON.stringify(body);\n }\n\n const response = await fetchFn(url, init);\n\n if (!response.ok) {\n throw await Db9Error.fromResponse(response);\n }\n\n // Handle 204 No Content\n if (response.status === 204) {\n return undefined as T;\n }\n\n return response.json() as Promise<T>;\n }\n\n return {\n get: <T>(path: string, params?: Record<string, string | undefined>) =>\n request<T>('GET', path, undefined, params),\n post: <T>(path: string, body?: unknown) => request<T>('POST', path, body),\n put: <T>(path: string, body?: unknown) => request<T>('PUT', path, body),\n del: <T>(path: string) => request<T>('DELETE', path),\n };\n}\n","import { createHttpClient, type FetchFn, type HttpClient } from './http';\nimport type { CredentialStore } from './credentials';\nimport type {\n RegisterRequest,\n CustomerResponse,\n LoginRequest,\n LoginResponse,\n AnonymousRegisterResponse,\n AnonymousRefreshRequest,\n AnonymousRefreshResponse,\n AnonymousSecretResponse,\n ClaimRequest,\n ClaimResponse,\n TokenResponse,\n MessageResponse,\n CreateDatabaseRequest,\n DatabaseResponse,\n CustomerPasswordResetResponse,\n TenantObservabilityResponse,\n SqlResult,\n SchemaResponse,\n DumpRequest,\n DumpResponse,\n MigrationApplyRequest,\n MigrationApplyResponse,\n MigrationMetadata,\n BranchRequest,\n UserResponse,\n CreateUserRequest,\n} from './types';\n\nexport interface CustomerClientOptions {\n baseUrl?: string;\n token?: string;\n fetch?: FetchFn;\n credentialStore?: CredentialStore;\n}\n\nexport function createCustomerClient(options: CustomerClientOptions = {}) {\n const baseUrl =\n options.baseUrl ?? 'https://db9.shared.aws.tidbcloud.com/api';\n let token = options.token;\n let tokenLoaded = !!token;\n\n // Public HTTP client — no Authorization header\n const publicClient = createHttpClient({\n baseUrl,\n fetch: options.fetch,\n });\n\n // Lazy-loading authenticated HTTP client\n async function getAuthClient(): Promise<HttpClient> {\n if (!token && !tokenLoaded && options.credentialStore) {\n const creds = await options.credentialStore.load();\n if (creds) token = creds.token;\n tokenLoaded = true;\n }\n if (!token) throw new Error('No authentication token available');\n return createHttpClient({\n baseUrl,\n fetch: options.fetch,\n headers: { Authorization: `Bearer ${token}` },\n });\n }\n\n return {\n auth: {\n // Public endpoints (no token required)\n register: (req: RegisterRequest) =>\n publicClient.post<CustomerResponse>('/customer/register', req),\n\n login: (req: LoginRequest) =>\n publicClient.post<LoginResponse>('/customer/login', req),\n\n anonymousRegister: () =>\n publicClient.post<AnonymousRegisterResponse>(\n '/customer/anonymous-register'\n ),\n\n anonymousRefresh: (req: AnonymousRefreshRequest) =>\n publicClient.post<AnonymousRefreshResponse>(\n '/customer/anonymous-refresh',\n req\n ),\n\n // Authenticated endpoints\n me: async () => {\n const client = await getAuthClient();\n return client.get<CustomerResponse>('/customer/me');\n },\n\n getAnonymousSecret: async () => {\n const client = await getAuthClient();\n return client.get<AnonymousSecretResponse>(\n '/customer/anonymous-secret'\n );\n },\n\n claim: async (req: ClaimRequest) => {\n const client = await getAuthClient();\n return client.post<ClaimResponse>('/customer/claim', req);\n },\n },\n\n tokens: {\n list: async () => {\n const client = await getAuthClient();\n return client.get<TokenResponse[]>('/customer/tokens');\n },\n\n revoke: async (tokenId: string) => {\n const client = await getAuthClient();\n return client.del<MessageResponse>(`/customer/tokens/${tokenId}`);\n },\n },\n\n databases: {\n // ── CRUD ──────────────────────────────────────────────────\n create: async (req: CreateDatabaseRequest) => {\n const client = await getAuthClient();\n return client.post<DatabaseResponse>('/customer/databases', req);\n },\n\n list: async () => {\n const client = await getAuthClient();\n return client.get<DatabaseResponse[]>('/customer/databases');\n },\n\n get: async (databaseId: string) => {\n const client = await getAuthClient();\n return client.get<DatabaseResponse>(\n `/customer/databases/${databaseId}`\n );\n },\n\n delete: async (databaseId: string) => {\n const client = await getAuthClient();\n return client.del<MessageResponse>(\n `/customer/databases/${databaseId}`\n );\n },\n\n resetPassword: async (databaseId: string) => {\n const client = await getAuthClient();\n return client.post<CustomerPasswordResetResponse>(\n `/customer/databases/${databaseId}/reset-password`\n );\n },\n\n observability: async (databaseId: string) => {\n const client = await getAuthClient();\n return client.get<TenantObservabilityResponse>(\n `/customer/databases/${databaseId}/observability`\n );\n },\n\n // ── SQL Execution ─────────────────────────────────────────\n sql: async (databaseId: string, query: string) => {\n const client = await getAuthClient();\n return client.post<SqlResult>(\n `/customer/databases/${databaseId}/sql`,\n { query }\n );\n },\n\n sqlFile: async (databaseId: string, fileContent: string) => {\n const client = await getAuthClient();\n return client.post<SqlResult>(\n `/customer/databases/${databaseId}/sql`,\n { file_content: fileContent }\n );\n },\n\n // ── Schema & Dump ─────────────────────────────────────────\n schema: async (databaseId: string) => {\n const client = await getAuthClient();\n return client.get<SchemaResponse>(\n `/customer/databases/${databaseId}/schema`\n );\n },\n\n dump: async (databaseId: string, req?: DumpRequest) => {\n const client = await getAuthClient();\n return client.post<DumpResponse>(\n `/customer/databases/${databaseId}/dump`,\n req\n );\n },\n\n // ── Migrations ────────────────────────────────────────────\n applyMigration: async (\n databaseId: string,\n req: MigrationApplyRequest\n ) => {\n const client = await getAuthClient();\n return client.post<MigrationApplyResponse>(\n `/customer/databases/${databaseId}/migrations`,\n req\n );\n },\n\n listMigrations: async (databaseId: string) => {\n const client = await getAuthClient();\n return client.get<MigrationMetadata[]>(\n `/customer/databases/${databaseId}/migrations`\n );\n },\n\n // ── Branching ─────────────────────────────────────────────\n branch: async (databaseId: string, req: BranchRequest) => {\n const client = await getAuthClient();\n return client.post<DatabaseResponse>(\n `/customer/databases/${databaseId}/branch`,\n req\n );\n },\n\n // ── User Management ───────────────────────────────────────\n users: {\n list: async (databaseId: string) => {\n const client = await getAuthClient();\n return client.get<UserResponse[]>(\n `/customer/databases/${databaseId}/users`\n );\n },\n\n create: async (databaseId: string, req: CreateUserRequest) => {\n const client = await getAuthClient();\n return client.post<MessageResponse>(\n `/customer/databases/${databaseId}/users`,\n req\n );\n },\n\n delete: async (databaseId: string, username: string) => {\n const client = await getAuthClient();\n return client.del<MessageResponse>(\n `/customer/databases/${databaseId}/users/${username}`\n );\n },\n },\n },\n };\n}\n\nexport type CustomerClient = ReturnType<typeof createCustomerClient>;\n","import { parse as parseToml, stringify as stringifyToml } from '@iarna/toml';\n\n// ---------------------------------------------------------------------------\n// Interfaces\n// ---------------------------------------------------------------------------\n\n/** Credential fields stored in `~/.db9/credentials` (TOML). */\nexport interface Credentials {\n token: string;\n is_anonymous?: boolean;\n anonymous_id?: string;\n anonymous_secret?: string;\n}\n\n/** Async credential persistence abstraction. */\nexport interface CredentialStore {\n load(): Promise<Credentials | null>;\n save(credentials: Credentials): Promise<void>;\n clear(): Promise<void>;\n}\n\n// ---------------------------------------------------------------------------\n// FileCredentialStore — TOML file at ~/.db9/credentials (matches db9 CLI)\n// ---------------------------------------------------------------------------\n\nexport class FileCredentialStore implements CredentialStore {\n private readonly customPath: string | undefined;\n\n /**\n * @param path — Override the credential file location.\n * Defaults to `~/.db9/credentials` (resolved lazily).\n */\n constructor(path?: string) {\n this.customPath = path;\n }\n\n /** Resolve the credential file path (lazy to avoid top-level `os` import). */\n private async resolvePath(): Promise<string> {\n if (this.customPath) return this.customPath;\n const os = await import('node:os');\n const nodePath = await import('node:path');\n return nodePath.join(os.homedir(), '.db9', 'credentials');\n }\n\n async load(): Promise<Credentials | null> {\n const fs = await import('node:fs/promises');\n const filePath = await this.resolvePath();\n\n let content: string;\n try {\n content = await fs.readFile(filePath, 'utf-8');\n } catch (err: unknown) {\n if ((err as NodeJS.ErrnoException).code === 'ENOENT') return null;\n throw err;\n }\n\n const parsed = parseToml(content);\n const token = parsed['token'];\n if (typeof token !== 'string') return null;\n\n const creds: Credentials = { token };\n if (typeof parsed['is_anonymous'] === 'boolean') {\n creds.is_anonymous = parsed['is_anonymous'];\n }\n if (typeof parsed['anonymous_id'] === 'string') {\n creds.anonymous_id = parsed['anonymous_id'];\n }\n if (typeof parsed['anonymous_secret'] === 'string') {\n creds.anonymous_secret = parsed['anonymous_secret'];\n }\n\n return creds;\n }\n\n async save(credentials: Credentials): Promise<void> {\n const fs = await import('node:fs/promises');\n const nodePath = await import('node:path');\n const filePath = await this.resolvePath();\n const dir = nodePath.dirname(filePath);\n\n // Ensure directory exists with 0o700 (matches CLI: ensure_config_dir)\n await fs.mkdir(dir, { recursive: true, mode: 0o700 });\n\n // Read → merge → write (preserves unknown fields as scalars)\n const data: Record<string, string | boolean | number> = {};\n try {\n const raw = await fs.readFile(filePath, 'utf-8');\n const parsed = parseToml(raw);\n for (const [k, v] of Object.entries(parsed)) {\n if (typeof v === 'string' || typeof v === 'boolean' || typeof v === 'number') {\n data[k] = v;\n }\n }\n } catch (err: unknown) {\n if ((err as NodeJS.ErrnoException).code !== 'ENOENT') throw err;\n }\n\n // Merge: always update token, only override optional fields when provided\n data['token'] = credentials.token;\n if (credentials.is_anonymous !== undefined) {\n data['is_anonymous'] = credentials.is_anonymous;\n }\n if (credentials.anonymous_id !== undefined) {\n data['anonymous_id'] = credentials.anonymous_id;\n }\n if (credentials.anonymous_secret !== undefined) {\n data['anonymous_secret'] = credentials.anonymous_secret;\n }\n\n // Serialize and write with 0o600 permissions (matches CLI: save_token)\n const toml = stringifyToml(\n data as Parameters<typeof stringifyToml>[0],\n );\n await fs.writeFile(filePath, toml, { mode: 0o600 });\n }\n\n async clear(): Promise<void> {\n const fs = await import('node:fs/promises');\n const filePath = await this.resolvePath();\n\n try {\n await fs.unlink(filePath);\n } catch (err: unknown) {\n if ((err as NodeJS.ErrnoException).code !== 'ENOENT') throw err;\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// MemoryCredentialStore — in-memory, no persistence\n// ---------------------------------------------------------------------------\n\nexport class MemoryCredentialStore implements CredentialStore {\n private credentials: Credentials | null = null;\n\n async load(): Promise<Credentials | null> {\n return this.credentials ? { ...this.credentials } : null;\n }\n\n async save(credentials: Credentials): Promise<void> {\n this.credentials = {\n token: credentials.token,\n is_anonymous: credentials.is_anonymous ?? this.credentials?.is_anonymous,\n anonymous_id: credentials.anonymous_id ?? this.credentials?.anonymous_id,\n anonymous_secret: credentials.anonymous_secret ?? this.credentials?.anonymous_secret,\n };\n }\n\n async clear(): Promise<void> {\n this.credentials = null;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Factory\n// ---------------------------------------------------------------------------\n\n/** Returns a FileCredentialStore with the default path (`~/.db9/credentials`). */\nexport function defaultCredentialStore(): CredentialStore {\n return new FileCredentialStore();\n}\n"],"mappings":"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","names":["parseToml","stringifyToml"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
import { C as CredentialStore } from './customer-
|
|
2
|
-
export { a as
|
|
3
|
-
import { F as FetchFn } from './types-ktbIiH5T.cjs';
|
|
4
|
-
export { A as AdminCreateUserRequest, a as AnonymousRefreshRequest, b as AnonymousRefreshResponse, c as AnonymousRegisterResponse, d as AnonymousSecretResponse, e as AuditLogParams, f as AuditLogResponse, B as BatchCreateRequest, g as BatchCreateResponse, h as BatchDeleteRequest, i as BatchDeleteResponse, j as BatchItemError, k as BatchUpdateRequest, l as BatchUpdateResponse, m as BranchRequest, C as ClaimRequest, n as ClaimResponse, o as ColumnInfo, p as ColumnMetadata, q as CreateDatabaseRequest, r as CreateTenantRequest, s as CreateTenantResponse, t as CreateUserRequest, u as CustomerPasswordResetResponse, v as CustomerResponse, D as DatabaseResponse, w as DumpRequest, x as DumpResponse, E as Endpoint, H as HealthResponse, y as HttpClient, z as HttpClientOptions, L as ListTenantsParams, G as LoginRequest, I as LoginResponse, M as MessageResponse, J as MigrationApplyRequest, K as MigrationApplyResponse, N as MigrationMetadata, O as ObservabilitySummary, P as PasswordResetResponse, Q as QuerySample, R as RegisterRequest, S as SchemaResponse, T as SqlExecuteRequest, U as SqlQueryRequest, V as SqlQueryResponse, W as SqlResult, X as TableMetadata, Y as TenantConnectRequest, Z as TenantConnectResponse, _ as TenantListResponse, $ as TenantObservabilityResponse, a0 as TenantResponse, a1 as TenantState, a2 as TenantUpdateRequest, a3 as TokenResponse, a4 as UserCreateResponse, a5 as UserResponse, a6 as ViewMetadata } from './types-ktbIiH5T.cjs';
|
|
5
|
-
export { AdminClient, AdminClientOptions, createAdminClient } from './admin.cjs';
|
|
1
|
+
import { F as FetchFn, C as CredentialStore } from './customer-C7kvMVbX.cjs';
|
|
2
|
+
export { A as AdminCreateUserRequest, a as AnonymousRefreshRequest, b as AnonymousRefreshResponse, c as AnonymousRegisterResponse, d as AnonymousSecretResponse, e as AuditLogParams, f as AuditLogResponse, B as BatchCreateRequest, g as BatchCreateResponse, h as BatchDeleteRequest, i as BatchDeleteResponse, j as BatchItemError, k as BatchUpdateRequest, l as BatchUpdateResponse, m as BranchRequest, n as ClaimRequest, o as ClaimResponse, p as ColumnInfo, q as ColumnMetadata, r as CreateDatabaseRequest, s as CreateTenantRequest, t as CreateTenantResponse, u as CreateUserRequest, v as Credentials, w as CustomerClient, x as CustomerClientOptions, y as CustomerPasswordResetResponse, z as CustomerResponse, D as DatabaseResponse, E as DumpRequest, G as DumpResponse, H as Endpoint, I as FileCredentialStore, J as HealthResponse, K as HttpClient, L as HttpClientOptions, M as ListTenantsParams, N as LoginRequest, O as LoginResponse, P as MemoryCredentialStore, Q as MessageResponse, R as MigrationApplyRequest, S as MigrationApplyResponse, T as MigrationMetadata, U as ObservabilitySummary, V as PasswordResetResponse, W as QuerySample, X as RegisterRequest, Y as SchemaResponse, Z as SqlExecuteRequest, _ as SqlQueryRequest, $ as SqlQueryResponse, a0 as SqlResult, a1 as TableMetadata, a2 as TenantConnectRequest, a3 as TenantConnectResponse, a4 as TenantListResponse, a5 as TenantObservabilityResponse, a6 as TenantResponse, a7 as TenantState, a8 as TenantUpdateRequest, a9 as TokenResponse, aa as UserCreateResponse, ab as UserResponse, ac as ViewMetadata, ad as createCustomerClient, ae as defaultCredentialStore } from './customer-C7kvMVbX.cjs';
|
|
6
3
|
|
|
7
4
|
declare class Db9Error extends Error {
|
|
8
5
|
readonly statusCode: number;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
import { C as CredentialStore } from './customer-
|
|
2
|
-
export { a as
|
|
3
|
-
import { F as FetchFn } from './types-ktbIiH5T.js';
|
|
4
|
-
export { A as AdminCreateUserRequest, a as AnonymousRefreshRequest, b as AnonymousRefreshResponse, c as AnonymousRegisterResponse, d as AnonymousSecretResponse, e as AuditLogParams, f as AuditLogResponse, B as BatchCreateRequest, g as BatchCreateResponse, h as BatchDeleteRequest, i as BatchDeleteResponse, j as BatchItemError, k as BatchUpdateRequest, l as BatchUpdateResponse, m as BranchRequest, C as ClaimRequest, n as ClaimResponse, o as ColumnInfo, p as ColumnMetadata, q as CreateDatabaseRequest, r as CreateTenantRequest, s as CreateTenantResponse, t as CreateUserRequest, u as CustomerPasswordResetResponse, v as CustomerResponse, D as DatabaseResponse, w as DumpRequest, x as DumpResponse, E as Endpoint, H as HealthResponse, y as HttpClient, z as HttpClientOptions, L as ListTenantsParams, G as LoginRequest, I as LoginResponse, M as MessageResponse, J as MigrationApplyRequest, K as MigrationApplyResponse, N as MigrationMetadata, O as ObservabilitySummary, P as PasswordResetResponse, Q as QuerySample, R as RegisterRequest, S as SchemaResponse, T as SqlExecuteRequest, U as SqlQueryRequest, V as SqlQueryResponse, W as SqlResult, X as TableMetadata, Y as TenantConnectRequest, Z as TenantConnectResponse, _ as TenantListResponse, $ as TenantObservabilityResponse, a0 as TenantResponse, a1 as TenantState, a2 as TenantUpdateRequest, a3 as TokenResponse, a4 as UserCreateResponse, a5 as UserResponse, a6 as ViewMetadata } from './types-ktbIiH5T.js';
|
|
5
|
-
export { AdminClient, AdminClientOptions, createAdminClient } from './admin.js';
|
|
1
|
+
import { F as FetchFn, C as CredentialStore } from './customer-C7kvMVbX.js';
|
|
2
|
+
export { A as AdminCreateUserRequest, a as AnonymousRefreshRequest, b as AnonymousRefreshResponse, c as AnonymousRegisterResponse, d as AnonymousSecretResponse, e as AuditLogParams, f as AuditLogResponse, B as BatchCreateRequest, g as BatchCreateResponse, h as BatchDeleteRequest, i as BatchDeleteResponse, j as BatchItemError, k as BatchUpdateRequest, l as BatchUpdateResponse, m as BranchRequest, n as ClaimRequest, o as ClaimResponse, p as ColumnInfo, q as ColumnMetadata, r as CreateDatabaseRequest, s as CreateTenantRequest, t as CreateTenantResponse, u as CreateUserRequest, v as Credentials, w as CustomerClient, x as CustomerClientOptions, y as CustomerPasswordResetResponse, z as CustomerResponse, D as DatabaseResponse, E as DumpRequest, G as DumpResponse, H as Endpoint, I as FileCredentialStore, J as HealthResponse, K as HttpClient, L as HttpClientOptions, M as ListTenantsParams, N as LoginRequest, O as LoginResponse, P as MemoryCredentialStore, Q as MessageResponse, R as MigrationApplyRequest, S as MigrationApplyResponse, T as MigrationMetadata, U as ObservabilitySummary, V as PasswordResetResponse, W as QuerySample, X as RegisterRequest, Y as SchemaResponse, Z as SqlExecuteRequest, _ as SqlQueryRequest, $ as SqlQueryResponse, a0 as SqlResult, a1 as TableMetadata, a2 as TenantConnectRequest, a3 as TenantConnectResponse, a4 as TenantListResponse, a5 as TenantObservabilityResponse, a6 as TenantResponse, a7 as TenantState, a8 as TenantUpdateRequest, a9 as TokenResponse, aa as UserCreateResponse, ab as UserResponse, ac as ViewMetadata, ad as createCustomerClient, ae as defaultCredentialStore } from './customer-C7kvMVbX.js';
|
|
6
3
|
|
|
7
4
|
declare class Db9Error extends Error {
|
|
8
5
|
readonly statusCode: number;
|