@vtriv/sdk 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/dist/client.d.ts +73 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/errors.d.ts +47 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1073 -0
- package/dist/services/ai.d.ts +46 -0
- package/dist/services/ai.d.ts.map +1 -0
- package/dist/services/auth.d.ts +113 -0
- package/dist/services/auth.d.ts.map +1 -0
- package/dist/services/blob.d.ts +49 -0
- package/dist/services/blob.d.ts.map +1 -0
- package/dist/services/cron.d.ts +54 -0
- package/dist/services/cron.d.ts.map +1 -0
- package/dist/services/db.d.ts +45 -0
- package/dist/services/db.d.ts.map +1 -0
- package/dist/services/search.d.ts +38 -0
- package/dist/services/search.d.ts.map +1 -0
- package/dist/types.d.ts +323 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/utils/fetch.d.ts +28 -0
- package/dist/utils/fetch.d.ts.map +1 -0
- package/dist/utils/token.d.ts +73 -0
- package/dist/utils/token.d.ts.map +1 -0
- package/package.json +45 -0
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* vtriv SDK - Shared Types
|
|
3
|
+
*/
|
|
4
|
+
/** Base configuration for all client modes */
|
|
5
|
+
export interface VtrivBaseConfig {
|
|
6
|
+
/** Base URL of the vtriv API gateway (e.g., https://api.vtriv.com) */
|
|
7
|
+
baseUrl: string;
|
|
8
|
+
}
|
|
9
|
+
/** Admin mode - uses root key or account key for management operations */
|
|
10
|
+
export interface VtrivAdminConfig extends VtrivBaseConfig {
|
|
11
|
+
/** Root key (vtriv_rk_...) or Account key (vtriv_ak_...) */
|
|
12
|
+
adminKey: string;
|
|
13
|
+
}
|
|
14
|
+
/** Backend mode - uses API key to mint tokens and make service calls */
|
|
15
|
+
export interface VtrivBackendConfig extends VtrivBaseConfig {
|
|
16
|
+
/** Project name */
|
|
17
|
+
project: string;
|
|
18
|
+
/** Project API key (vtriv_sk_...) */
|
|
19
|
+
apiKey: string;
|
|
20
|
+
}
|
|
21
|
+
/** Frontend mode - uses JWT tokens for authenticated requests */
|
|
22
|
+
export interface VtrivClientConfig extends VtrivBaseConfig {
|
|
23
|
+
/** Project name */
|
|
24
|
+
project: string;
|
|
25
|
+
/** Initial access token (optional - can login later) */
|
|
26
|
+
accessToken?: string;
|
|
27
|
+
/** Initial refresh token (optional) */
|
|
28
|
+
refreshToken?: string;
|
|
29
|
+
/** Callback when tokens are refreshed (for persistence) */
|
|
30
|
+
onTokenRefresh?: (tokens: TokenPair) => void;
|
|
31
|
+
}
|
|
32
|
+
export type VtrivConfig = VtrivAdminConfig | VtrivBackendConfig | VtrivClientConfig;
|
|
33
|
+
/** Token pair returned from login/register/refresh */
|
|
34
|
+
export interface TokenPair {
|
|
35
|
+
access_token: string;
|
|
36
|
+
refresh_token: string;
|
|
37
|
+
expires_in: number;
|
|
38
|
+
}
|
|
39
|
+
/** Account (managed by root key) */
|
|
40
|
+
export interface Account {
|
|
41
|
+
id: string;
|
|
42
|
+
name: string | null;
|
|
43
|
+
created_at: string;
|
|
44
|
+
}
|
|
45
|
+
/** Account with owned projects */
|
|
46
|
+
export interface AccountWithProjects extends Account {
|
|
47
|
+
projects: Array<{
|
|
48
|
+
name: string;
|
|
49
|
+
created_at: string;
|
|
50
|
+
}>;
|
|
51
|
+
}
|
|
52
|
+
/** Account creation response (includes key once) */
|
|
53
|
+
export interface AccountCreateResponse {
|
|
54
|
+
id: string;
|
|
55
|
+
name: string | null;
|
|
56
|
+
account_key: string;
|
|
57
|
+
warning: string;
|
|
58
|
+
}
|
|
59
|
+
/** Project configuration */
|
|
60
|
+
export interface ProjectConfig {
|
|
61
|
+
name: string;
|
|
62
|
+
account_id: string | null;
|
|
63
|
+
created_at: string;
|
|
64
|
+
resend_api_key?: string | null;
|
|
65
|
+
registration: "open" | "invite" | "closed";
|
|
66
|
+
auth_methods: {
|
|
67
|
+
password: boolean;
|
|
68
|
+
magic_link: boolean;
|
|
69
|
+
};
|
|
70
|
+
default_role: string;
|
|
71
|
+
roles: Record<string, {
|
|
72
|
+
claims: Record<string, unknown>;
|
|
73
|
+
}>;
|
|
74
|
+
magic_link: {
|
|
75
|
+
redirect_url: string;
|
|
76
|
+
expires_in: number;
|
|
77
|
+
};
|
|
78
|
+
token: {
|
|
79
|
+
access_expires_in: number;
|
|
80
|
+
refresh_expires_in: number;
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/** User */
|
|
84
|
+
export interface User {
|
|
85
|
+
id: string;
|
|
86
|
+
email: string;
|
|
87
|
+
role: string;
|
|
88
|
+
provider: string;
|
|
89
|
+
profile: Record<string, unknown>;
|
|
90
|
+
metadata: Record<string, unknown>;
|
|
91
|
+
email_verified: boolean;
|
|
92
|
+
created_at: string;
|
|
93
|
+
}
|
|
94
|
+
/** API key (without the actual key value) */
|
|
95
|
+
export interface ApiKey {
|
|
96
|
+
id: string;
|
|
97
|
+
name: string | null;
|
|
98
|
+
created_at: string;
|
|
99
|
+
}
|
|
100
|
+
/** API key creation response (includes key once) */
|
|
101
|
+
export interface ApiKeyCreateResponse {
|
|
102
|
+
id: string;
|
|
103
|
+
name: string | null;
|
|
104
|
+
api_key: string;
|
|
105
|
+
warning: string;
|
|
106
|
+
}
|
|
107
|
+
/** Login credentials */
|
|
108
|
+
export interface LoginCredentials {
|
|
109
|
+
email: string;
|
|
110
|
+
password: string;
|
|
111
|
+
}
|
|
112
|
+
/** Registration data */
|
|
113
|
+
export interface RegisterData {
|
|
114
|
+
email: string;
|
|
115
|
+
password: string;
|
|
116
|
+
}
|
|
117
|
+
/** User creation data (admin) */
|
|
118
|
+
export interface CreateUserData {
|
|
119
|
+
email: string;
|
|
120
|
+
password?: string;
|
|
121
|
+
role?: string;
|
|
122
|
+
profile?: Record<string, unknown>;
|
|
123
|
+
metadata?: Record<string, unknown>;
|
|
124
|
+
email_verified?: boolean;
|
|
125
|
+
}
|
|
126
|
+
/** User update data */
|
|
127
|
+
export interface UpdateUserData {
|
|
128
|
+
email?: string;
|
|
129
|
+
password?: string;
|
|
130
|
+
role?: string;
|
|
131
|
+
profile?: Record<string, unknown>;
|
|
132
|
+
metadata?: Record<string, unknown>;
|
|
133
|
+
email_verified?: boolean;
|
|
134
|
+
}
|
|
135
|
+
/** Token mint request */
|
|
136
|
+
export interface MintTokenRequest {
|
|
137
|
+
sub?: string;
|
|
138
|
+
expires_in?: number;
|
|
139
|
+
claims?: Record<string, unknown>;
|
|
140
|
+
}
|
|
141
|
+
/** Base document with system fields */
|
|
142
|
+
export interface Document {
|
|
143
|
+
id: string;
|
|
144
|
+
_created_at: string;
|
|
145
|
+
_updated_at: string;
|
|
146
|
+
[key: string]: unknown;
|
|
147
|
+
}
|
|
148
|
+
/** Collection schema */
|
|
149
|
+
export interface CollectionSchema {
|
|
150
|
+
indexes?: string[];
|
|
151
|
+
unique?: string[];
|
|
152
|
+
}
|
|
153
|
+
/** List query options */
|
|
154
|
+
export interface ListOptions {
|
|
155
|
+
limit?: number;
|
|
156
|
+
cursor?: string;
|
|
157
|
+
sort?: string;
|
|
158
|
+
filter?: Record<string, unknown>;
|
|
159
|
+
}
|
|
160
|
+
/** List response with pagination */
|
|
161
|
+
export interface ListResponse<T> {
|
|
162
|
+
data: T[];
|
|
163
|
+
cursor?: string;
|
|
164
|
+
}
|
|
165
|
+
/** Batch operation */
|
|
166
|
+
export interface BatchOperation {
|
|
167
|
+
method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
|
|
168
|
+
collection: string;
|
|
169
|
+
id?: string;
|
|
170
|
+
body?: Record<string, unknown>;
|
|
171
|
+
}
|
|
172
|
+
/** Batch result */
|
|
173
|
+
export interface BatchResult {
|
|
174
|
+
status: number;
|
|
175
|
+
body: unknown;
|
|
176
|
+
}
|
|
177
|
+
/** Upload response */
|
|
178
|
+
export interface UploadResponse {
|
|
179
|
+
ok: true;
|
|
180
|
+
path: string;
|
|
181
|
+
size: number;
|
|
182
|
+
}
|
|
183
|
+
/** Presigned URL response */
|
|
184
|
+
export interface PresignedUrlResponse {
|
|
185
|
+
url: string;
|
|
186
|
+
expiresIn: number;
|
|
187
|
+
contentType?: string;
|
|
188
|
+
}
|
|
189
|
+
/** Index configuration */
|
|
190
|
+
export interface IndexConfig {
|
|
191
|
+
dimensions: number;
|
|
192
|
+
model?: string;
|
|
193
|
+
input_fields?: string[];
|
|
194
|
+
store_fields?: string[];
|
|
195
|
+
}
|
|
196
|
+
/** Search document (for indexing) */
|
|
197
|
+
export interface SearchDocument {
|
|
198
|
+
id: string;
|
|
199
|
+
[key: string]: unknown;
|
|
200
|
+
}
|
|
201
|
+
/** Search result */
|
|
202
|
+
export interface SearchResult {
|
|
203
|
+
id: string;
|
|
204
|
+
data: Record<string, unknown>;
|
|
205
|
+
distance: number;
|
|
206
|
+
}
|
|
207
|
+
/** Search options */
|
|
208
|
+
export interface SearchOptions {
|
|
209
|
+
limit?: number;
|
|
210
|
+
}
|
|
211
|
+
/** Chat message */
|
|
212
|
+
export interface ChatMessage {
|
|
213
|
+
role: "system" | "user" | "assistant";
|
|
214
|
+
content: string;
|
|
215
|
+
}
|
|
216
|
+
/** Chat completion request */
|
|
217
|
+
export interface ChatCompletionRequest {
|
|
218
|
+
model?: string;
|
|
219
|
+
messages: ChatMessage[];
|
|
220
|
+
stream?: boolean;
|
|
221
|
+
max_tokens?: number;
|
|
222
|
+
temperature?: number;
|
|
223
|
+
}
|
|
224
|
+
/** Chat completion response (non-streaming) */
|
|
225
|
+
export interface ChatCompletionResponse {
|
|
226
|
+
id: string;
|
|
227
|
+
object: "chat.completion";
|
|
228
|
+
created: number;
|
|
229
|
+
model: string;
|
|
230
|
+
choices: Array<{
|
|
231
|
+
index: number;
|
|
232
|
+
message: ChatMessage;
|
|
233
|
+
finish_reason: string;
|
|
234
|
+
}>;
|
|
235
|
+
usage: {
|
|
236
|
+
prompt_tokens: number;
|
|
237
|
+
completion_tokens: number;
|
|
238
|
+
total_tokens: number;
|
|
239
|
+
cost: number | null;
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
/** Streaming chat chunk */
|
|
243
|
+
export interface ChatCompletionChunk {
|
|
244
|
+
id: string;
|
|
245
|
+
object: "chat.completion.chunk";
|
|
246
|
+
created: number;
|
|
247
|
+
model: string;
|
|
248
|
+
choices: Array<{
|
|
249
|
+
index: number;
|
|
250
|
+
delta: Partial<ChatMessage>;
|
|
251
|
+
finish_reason: string | null;
|
|
252
|
+
}>;
|
|
253
|
+
}
|
|
254
|
+
/** Embedding request */
|
|
255
|
+
export interface EmbeddingRequest {
|
|
256
|
+
input: string | string[];
|
|
257
|
+
model?: string;
|
|
258
|
+
}
|
|
259
|
+
/** Embedding response */
|
|
260
|
+
export interface EmbeddingResponse {
|
|
261
|
+
object: "list";
|
|
262
|
+
data: Array<{
|
|
263
|
+
object: "embedding";
|
|
264
|
+
embedding: number[];
|
|
265
|
+
index: number;
|
|
266
|
+
}>;
|
|
267
|
+
model: string;
|
|
268
|
+
usage: {
|
|
269
|
+
prompt_tokens: number;
|
|
270
|
+
total_tokens: number;
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
/** AI project config */
|
|
274
|
+
export interface AiConfig {
|
|
275
|
+
default_model?: string;
|
|
276
|
+
rate_limit_usd?: number;
|
|
277
|
+
key?: string;
|
|
278
|
+
}
|
|
279
|
+
/** Usage statistics */
|
|
280
|
+
export interface UsageStats {
|
|
281
|
+
period: string;
|
|
282
|
+
total_requests: number;
|
|
283
|
+
total_tokens: number;
|
|
284
|
+
total_cost: number;
|
|
285
|
+
by_model: Record<string, {
|
|
286
|
+
requests: number;
|
|
287
|
+
tokens: number;
|
|
288
|
+
cost: number;
|
|
289
|
+
}>;
|
|
290
|
+
}
|
|
291
|
+
/** Cron job definition */
|
|
292
|
+
export interface CronJob {
|
|
293
|
+
id: string;
|
|
294
|
+
name: string;
|
|
295
|
+
schedule: string;
|
|
296
|
+
script: string;
|
|
297
|
+
timeout?: number;
|
|
298
|
+
}
|
|
299
|
+
/** Cron job with API key (for setting) */
|
|
300
|
+
export interface CronJobWithKey extends CronJob {
|
|
301
|
+
api_key: string;
|
|
302
|
+
}
|
|
303
|
+
/** Job run history */
|
|
304
|
+
export interface JobRun {
|
|
305
|
+
job_id: string;
|
|
306
|
+
job_name: string;
|
|
307
|
+
started_at: string;
|
|
308
|
+
finished_at?: string;
|
|
309
|
+
exit_code?: number;
|
|
310
|
+
skipped?: boolean;
|
|
311
|
+
reason?: string;
|
|
312
|
+
}
|
|
313
|
+
/** Standard success response */
|
|
314
|
+
export interface OkResponse {
|
|
315
|
+
ok: true;
|
|
316
|
+
}
|
|
317
|
+
/** Standard error response */
|
|
318
|
+
export interface ErrorResponse {
|
|
319
|
+
error: string;
|
|
320
|
+
code?: string;
|
|
321
|
+
details?: unknown;
|
|
322
|
+
}
|
|
323
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* vtriv SDK - Fetch Utilities
|
|
3
|
+
*
|
|
4
|
+
* Isomorphic fetch wrapper that works in browser and Node.js
|
|
5
|
+
*/
|
|
6
|
+
export interface RequestOptions {
|
|
7
|
+
method?: "GET" | "POST" | "PUT" | "PATCH" | "DELETE" | "HEAD";
|
|
8
|
+
headers?: Record<string, string>;
|
|
9
|
+
body?: unknown;
|
|
10
|
+
signal?: AbortSignal;
|
|
11
|
+
}
|
|
12
|
+
export interface FetchContext {
|
|
13
|
+
baseUrl: string;
|
|
14
|
+
getAuthHeader: () => Promise<string | null>;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Make an authenticated request to the vtriv API
|
|
18
|
+
*/
|
|
19
|
+
export declare function request<T>(ctx: FetchContext, path: string, options?: RequestOptions): Promise<T>;
|
|
20
|
+
/**
|
|
21
|
+
* Make a streaming request (for SSE responses like AI chat)
|
|
22
|
+
*/
|
|
23
|
+
export declare function requestStream(ctx: FetchContext, path: string, options?: RequestOptions): AsyncGenerator<string, void, unknown>;
|
|
24
|
+
/**
|
|
25
|
+
* Upload a file/blob
|
|
26
|
+
*/
|
|
27
|
+
export declare function uploadFile(ctx: FetchContext, path: string, file: Blob | ArrayBuffer | ReadableStream, contentType?: string): Promise<Response>;
|
|
28
|
+
//# sourceMappingURL=fetch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/utils/fetch.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,WAAW,cAAc;IAC9B,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAC5C;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,CAAC,EAC9B,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC1B,OAAO,CAAC,CAAC,CAAC,CA+DZ;AAED;;GAEG;AACH,wBAAuB,aAAa,CACnC,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC1B,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAuEvC;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC/B,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,IAAI,GAAG,WAAW,GAAG,cAAc,EACzC,WAAW,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,QAAQ,CAAC,CAqCnB"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* vtriv SDK - Token Management
|
|
3
|
+
*
|
|
4
|
+
* Handles JWT token caching, expiry detection, and auto-refresh
|
|
5
|
+
*/
|
|
6
|
+
import type { TokenPair } from "../types.js";
|
|
7
|
+
/** Decoded JWT payload (minimal fields we care about) */
|
|
8
|
+
interface JwtPayload {
|
|
9
|
+
exp?: number;
|
|
10
|
+
iat?: number;
|
|
11
|
+
sub?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Decode a JWT payload without verification
|
|
15
|
+
* This is safe for client-side expiry checking - the server will verify the signature
|
|
16
|
+
*/
|
|
17
|
+
export declare function decodeJwt(token: string): JwtPayload | null;
|
|
18
|
+
/**
|
|
19
|
+
* Check if a token is expired or about to expire
|
|
20
|
+
*/
|
|
21
|
+
export declare function isTokenExpired(token: string, bufferMs?: number): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Get time until token expires in milliseconds
|
|
24
|
+
*/
|
|
25
|
+
export declare function getTokenExpiresIn(token: string): number;
|
|
26
|
+
/** Token refresh function type */
|
|
27
|
+
export type TokenRefreshFn = (refreshToken: string) => Promise<TokenPair>;
|
|
28
|
+
/** Token refresh callback */
|
|
29
|
+
export type OnTokenRefresh = (tokens: TokenPair) => void;
|
|
30
|
+
/**
|
|
31
|
+
* Token manager for handling access/refresh token lifecycle
|
|
32
|
+
*/
|
|
33
|
+
export declare class TokenManager {
|
|
34
|
+
private accessToken;
|
|
35
|
+
private refreshToken;
|
|
36
|
+
private refreshPromise;
|
|
37
|
+
private refreshFn;
|
|
38
|
+
private onRefresh;
|
|
39
|
+
constructor(options?: {
|
|
40
|
+
accessToken?: string;
|
|
41
|
+
refreshToken?: string;
|
|
42
|
+
refreshFn?: TokenRefreshFn;
|
|
43
|
+
onRefresh?: OnTokenRefresh;
|
|
44
|
+
});
|
|
45
|
+
/**
|
|
46
|
+
* Set tokens (after login/register)
|
|
47
|
+
*/
|
|
48
|
+
setTokens(tokens: TokenPair): void;
|
|
49
|
+
/**
|
|
50
|
+
* Clear tokens (on logout)
|
|
51
|
+
*/
|
|
52
|
+
clearTokens(): void;
|
|
53
|
+
/**
|
|
54
|
+
* Check if we have tokens
|
|
55
|
+
*/
|
|
56
|
+
hasTokens(): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Get current access token (raw, no refresh)
|
|
59
|
+
*/
|
|
60
|
+
getAccessToken(): string | null;
|
|
61
|
+
/**
|
|
62
|
+
* Get a valid access token, refreshing if needed
|
|
63
|
+
* Deduplicates concurrent refresh requests
|
|
64
|
+
*/
|
|
65
|
+
getValidAccessToken(): Promise<string>;
|
|
66
|
+
private doRefresh;
|
|
67
|
+
/**
|
|
68
|
+
* Set the refresh function (called after client initialization)
|
|
69
|
+
*/
|
|
70
|
+
setRefreshFn(fn: TokenRefreshFn): void;
|
|
71
|
+
}
|
|
72
|
+
export {};
|
|
73
|
+
//# sourceMappingURL=token.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../src/utils/token.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAK7C,yDAAyD;AACzD,UAAU,UAAU;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAgB1D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAoB,GAAG,OAAO,CAQnF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMvD;AAED,kCAAkC;AAClC,MAAM,MAAM,cAAc,GAAG,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;AAE1E,6BAA6B;AAC7B,MAAM,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;AAEzD;;GAEG;AACH,qBAAa,YAAY;IACxB,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,cAAc,CAAmC;IACzD,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,SAAS,CAA+B;gBAEpC,OAAO,CAAC,EAAE;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,cAAc,CAAC;QAC3B,SAAS,CAAC,EAAE,cAAc,CAAC;KAC3B;IAOD;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAKlC;;OAEG;IACH,WAAW,IAAI,IAAI;IAKnB;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,cAAc,IAAI,MAAM,GAAG,IAAI;IAI/B;;;OAGG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;YAkC9B,SAAS;IAgBvB;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI;CAGtC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@vtriv/sdk",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "TypeScript SDK for vtriv services",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"types": "./dist/index.d.ts"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist"
|
|
17
|
+
],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "bun build ./src/index.ts --outdir ./dist --target browser && bun run build:types",
|
|
20
|
+
"build:types": "tsc --emitDeclarationOnly --declaration --outDir dist",
|
|
21
|
+
"test": "bun test",
|
|
22
|
+
"lint": "bunx @biomejs/biome check src",
|
|
23
|
+
"format": "bunx @biomejs/biome format --write src"
|
|
24
|
+
},
|
|
25
|
+
"devDependencies": {
|
|
26
|
+
"@biomejs/biome": "latest",
|
|
27
|
+
"@types/bun": "latest",
|
|
28
|
+
"typescript": "^5.0.0"
|
|
29
|
+
},
|
|
30
|
+
"keywords": [
|
|
31
|
+
"vtriv",
|
|
32
|
+
"sdk",
|
|
33
|
+
"typescript",
|
|
34
|
+
"auth",
|
|
35
|
+
"database",
|
|
36
|
+
"blob",
|
|
37
|
+
"search",
|
|
38
|
+
"ai"
|
|
39
|
+
],
|
|
40
|
+
"license": "MIT",
|
|
41
|
+
"repository": {
|
|
42
|
+
"type": "git",
|
|
43
|
+
"url": "https://github.com/vtriv/sdk-typescript"
|
|
44
|
+
}
|
|
45
|
+
}
|