@vibesdotdev/client 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/SPEC.md +107 -0
- package/dist/factory.d.ts +34 -0
- package/dist/factory.d.ts.map +1 -0
- package/dist/factory.js +80 -0
- package/dist/factory.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/client/core.d.ts +8 -0
- package/dist/lib/client/core.d.ts.map +1 -0
- package/dist/lib/client/core.js +5 -0
- package/dist/lib/client/core.js.map +1 -0
- package/dist/lib/client/internal/base-client.d.ts +19 -0
- package/dist/lib/client/internal/base-client.d.ts.map +1 -0
- package/dist/lib/client/internal/base-client.js +92 -0
- package/dist/lib/client/internal/base-client.js.map +1 -0
- package/dist/lib/client/internal/base-helpers.d.ts +9 -0
- package/dist/lib/client/internal/base-helpers.d.ts.map +1 -0
- package/dist/lib/client/internal/base-helpers.js +79 -0
- package/dist/lib/client/internal/base-helpers.js.map +1 -0
- package/dist/lib/client/internal/base-types.d.ts +35 -0
- package/dist/lib/client/internal/base-types.d.ts.map +1 -0
- package/dist/lib/client/internal/base-types.js +15 -0
- package/dist/lib/client/internal/base-types.js.map +1 -0
- package/dist/lib/client/internal/endpoint.d.ts +22 -0
- package/dist/lib/client/internal/endpoint.d.ts.map +1 -0
- package/dist/lib/client/internal/endpoint.js +35 -0
- package/dist/lib/client/internal/endpoint.js.map +1 -0
- package/dist/lib/client/internal/generator.d.ts +20 -0
- package/dist/lib/client/internal/generator.d.ts.map +1 -0
- package/dist/lib/client/internal/generator.js +173 -0
- package/dist/lib/client/internal/generator.js.map +1 -0
- package/dist/lib/client/internal/index.d.ts +5 -0
- package/dist/lib/client/internal/index.d.ts.map +1 -0
- package/dist/lib/client/internal/index.js +4 -0
- package/dist/lib/client/internal/index.js.map +1 -0
- package/dist/lib/client/internal/node/http2-fetch.node.d.ts +2 -0
- package/dist/lib/client/internal/node/http2-fetch.node.d.ts.map +1 -0
- package/dist/lib/client/internal/node/http2-fetch.node.js +131 -0
- package/dist/lib/client/internal/node/http2-fetch.node.js.map +1 -0
- package/dist/lib/client/internal/request-builder.d.ts +15 -0
- package/dist/lib/client/internal/request-builder.d.ts.map +1 -0
- package/dist/lib/client/internal/request-builder.js +158 -0
- package/dist/lib/client/internal/request-builder.js.map +1 -0
- package/dist/lib/client/internal/sse-stream.d.ts +23 -0
- package/dist/lib/client/internal/sse-stream.d.ts.map +1 -0
- package/dist/lib/client/internal/sse-stream.js +110 -0
- package/dist/lib/client/internal/sse-stream.js.map +1 -0
- package/dist/lib/client/internal/vibes-client.d.ts +32 -0
- package/dist/lib/client/internal/vibes-client.d.ts.map +1 -0
- package/dist/lib/client/internal/vibes-client.js +120 -0
- package/dist/lib/client/internal/vibes-client.js.map +1 -0
- package/dist/lib/client/internal/wrap-fetch.d.ts +6 -0
- package/dist/lib/client/internal/wrap-fetch.d.ts.map +1 -0
- package/dist/lib/client/internal/wrap-fetch.js +46 -0
- package/dist/lib/client/internal/wrap-fetch.js.map +1 -0
- package/dist/lib/client/node.d.ts +5 -0
- package/dist/lib/client/node.d.ts.map +1 -0
- package/dist/lib/client/node.js +33 -0
- package/dist/lib/client/node.js.map +1 -0
- package/dist/lib/client/types.d.ts +145 -0
- package/dist/lib/client/types.d.ts.map +1 -0
- package/dist/lib/client/types.js +21 -0
- package/dist/lib/client/types.js.map +1 -0
- package/dist/plugin.d.ts +19 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +80 -0
- package/dist/plugin.js.map +1 -0
- package/dist/schemas.d.ts +90 -0
- package/dist/schemas.d.ts.map +1 -0
- package/dist/schemas.js +9 -0
- package/dist/schemas.js.map +1 -0
- package/dist/sse-client.d.ts +39 -0
- package/dist/sse-client.d.ts.map +1 -0
- package/dist/sse-client.js +124 -0
- package/dist/sse-client.js.map +1 -0
- package/dist/tools/api-request/api-request.descriptor.d.ts +48 -0
- package/dist/tools/api-request/api-request.descriptor.d.ts.map +1 -0
- package/dist/tools/api-request/api-request.descriptor.js +27 -0
- package/dist/tools/api-request/api-request.descriptor.js.map +1 -0
- package/dist/tools/api-request/api-request.impl.consumer.d.ts +13 -0
- package/dist/tools/api-request/api-request.impl.consumer.d.ts.map +1 -0
- package/dist/tools/api-request/api-request.impl.consumer.js +51 -0
- package/dist/tools/api-request/api-request.impl.consumer.js.map +1 -0
- package/dist/tools/api-request/index.d.ts +5 -0
- package/dist/tools/api-request/index.d.ts.map +1 -0
- package/dist/tools/api-request/index.js +4 -0
- package/dist/tools/api-request/index.js.map +1 -0
- package/dist/tools/api-request/schemas/index.d.ts +33 -0
- package/dist/tools/api-request/schemas/index.d.ts.map +1 -0
- package/dist/tools/api-request/schemas/index.js +24 -0
- package/dist/tools/api-request/schemas/index.js.map +1 -0
- package/package.json +99 -0
- package/src/factory.ts +114 -0
- package/src/index.ts +15 -0
- package/src/lib/client/core.ts +13 -0
- package/src/lib/client/internal/base-client.ts +107 -0
- package/src/lib/client/internal/base-helpers.ts +74 -0
- package/src/lib/client/internal/base-types.ts +42 -0
- package/src/lib/client/internal/endpoint.ts +51 -0
- package/src/lib/client/internal/generator.ts +181 -0
- package/src/lib/client/internal/index.ts +4 -0
- package/src/lib/client/internal/node/http2-fetch.node.ts +138 -0
- package/src/lib/client/internal/request-builder.ts +147 -0
- package/src/lib/client/internal/sse-stream.ts +130 -0
- package/src/lib/client/internal/vibes-client.ts +167 -0
- package/src/lib/client/internal/wrap-fetch.ts +59 -0
- package/src/lib/client/node.ts +36 -0
- package/src/lib/client/types.ts +156 -0
- package/src/plugin.ts +104 -0
- package/src/schemas.ts +91 -0
- package/src/sse-client.ts +155 -0
- package/src/tools/api-request/api-request.descriptor.ts +28 -0
- package/src/tools/api-request/api-request.impl.consumer.ts +66 -0
- package/src/tools/api-request/index.ts +4 -0
- package/src/tools/api-request/schemas/index.ts +29 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { ClientError } from "../types.js";
|
|
2
|
+
export async function* streamSSE(args) {
|
|
3
|
+
const options = args.options ?? {};
|
|
4
|
+
let url = `${args.baseUrl}${args.path}`;
|
|
5
|
+
if (options.params) {
|
|
6
|
+
for (const [key, value] of Object.entries(options.params)) {
|
|
7
|
+
url = url.replace(`:${key}`, String(value));
|
|
8
|
+
url = url.replace(`{${key}}`, String(value));
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
if (options.query) {
|
|
12
|
+
const searchParams = new URLSearchParams();
|
|
13
|
+
for (const [key, value] of Object.entries(options.query)) {
|
|
14
|
+
if (value === undefined || value === null)
|
|
15
|
+
continue;
|
|
16
|
+
if (Array.isArray(value))
|
|
17
|
+
value.forEach((v) => searchParams.append(key, String(v)));
|
|
18
|
+
else
|
|
19
|
+
searchParams.append(key, String(value));
|
|
20
|
+
}
|
|
21
|
+
const queryString = searchParams.toString();
|
|
22
|
+
if (queryString)
|
|
23
|
+
url += `?${queryString}`;
|
|
24
|
+
}
|
|
25
|
+
const headers = { Accept: 'text/event-stream', ...options.headers };
|
|
26
|
+
if (!('Content-Type' in headers))
|
|
27
|
+
headers['Content-Type'] = 'application/json';
|
|
28
|
+
if (args.auth.type === 'apiKey' && args.auth.credentials) {
|
|
29
|
+
headers['X-API-Key'] = args.auth.credentials;
|
|
30
|
+
}
|
|
31
|
+
else if (args.auth.type === 'bearer') {
|
|
32
|
+
const token = args.auth.tokenProvider ? await args.auth.tokenProvider() : args.auth.credentials;
|
|
33
|
+
if (token)
|
|
34
|
+
headers.Authorization = `Bearer ${token}`;
|
|
35
|
+
}
|
|
36
|
+
const requestOptions = {
|
|
37
|
+
method: options.method || 'POST',
|
|
38
|
+
path: args.path,
|
|
39
|
+
params: options.params,
|
|
40
|
+
query: options.query,
|
|
41
|
+
body: options.body,
|
|
42
|
+
headers: options.headers,
|
|
43
|
+
timeout: options.timeout
|
|
44
|
+
};
|
|
45
|
+
const requestInit = { method: requestOptions.method, headers };
|
|
46
|
+
if (requestOptions.timeout) {
|
|
47
|
+
const controller = new AbortController();
|
|
48
|
+
setTimeout(() => controller.abort(), requestOptions.timeout);
|
|
49
|
+
requestInit.signal = controller.signal;
|
|
50
|
+
}
|
|
51
|
+
if (options.body !== undefined)
|
|
52
|
+
requestInit.body = JSON.stringify(options.body);
|
|
53
|
+
const response = await args.fetchImpl(url, requestInit);
|
|
54
|
+
if (!response.ok) {
|
|
55
|
+
throw new ClientError(`SSE stream failed: ${response.statusText}`, response.status, response, requestOptions);
|
|
56
|
+
}
|
|
57
|
+
if (!response.body) {
|
|
58
|
+
throw new ClientError('No response body for SSE stream', response.status, response, requestOptions);
|
|
59
|
+
}
|
|
60
|
+
const reader = response.body.getReader();
|
|
61
|
+
const decoder = new TextDecoder();
|
|
62
|
+
let buffer = '';
|
|
63
|
+
try {
|
|
64
|
+
while (true) {
|
|
65
|
+
const { done, value } = await reader.read();
|
|
66
|
+
if (done)
|
|
67
|
+
break;
|
|
68
|
+
buffer += decoder.decode(value, { stream: true });
|
|
69
|
+
const lines = buffer.split('\n');
|
|
70
|
+
buffer = lines.pop() || '';
|
|
71
|
+
let currentEvent = {};
|
|
72
|
+
for (const line of lines) {
|
|
73
|
+
if (line.trim() === '') {
|
|
74
|
+
if (currentEvent.data !== undefined) {
|
|
75
|
+
yield currentEvent;
|
|
76
|
+
currentEvent = {};
|
|
77
|
+
}
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
if (line.startsWith('event:')) {
|
|
81
|
+
currentEvent.event = line.slice(6).trim();
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
if (line.startsWith('data:')) {
|
|
85
|
+
const dataStr = line.slice(5).trim();
|
|
86
|
+
if (dataStr === '[DONE]')
|
|
87
|
+
return;
|
|
88
|
+
try {
|
|
89
|
+
currentEvent.data = JSON.parse(dataStr);
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
currentEvent.data = dataStr;
|
|
93
|
+
}
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
if (line.startsWith('id:')) {
|
|
97
|
+
currentEvent.id = line.slice(3).trim();
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
if (line.startsWith('retry:')) {
|
|
101
|
+
currentEvent.retry = parseInt(line.slice(6).trim());
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
finally {
|
|
107
|
+
reader.releaseLock();
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=sse-stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sse-stream.js","sourceRoot":"","sources":["../../../../src/lib/client/internal/sse-stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { AuthConfig, ClientConfig, RequestOptions } from '../types.ts';
|
|
2
|
+
import { type OpenAPISpec } from './generator.ts';
|
|
3
|
+
import { type SSEEvent, type SSEStreamOptions } from './sse-stream.ts';
|
|
4
|
+
export declare class VibesClient {
|
|
5
|
+
private config;
|
|
6
|
+
private requestBuilder;
|
|
7
|
+
private apiGenerator;
|
|
8
|
+
private apis;
|
|
9
|
+
private specPromise;
|
|
10
|
+
constructor(config?: ClientConfig);
|
|
11
|
+
private initialize;
|
|
12
|
+
getOpenAPISpec(): Promise<OpenAPISpec>;
|
|
13
|
+
private fetchOpenAPISpec;
|
|
14
|
+
private buildAPIs;
|
|
15
|
+
request<T = unknown>(path: string, options?: {
|
|
16
|
+
method?: string;
|
|
17
|
+
params?: Record<string, string | number | boolean>;
|
|
18
|
+
query?: Record<string, string | number | boolean | string[] | undefined>;
|
|
19
|
+
body?: unknown;
|
|
20
|
+
headers?: Record<string, string>;
|
|
21
|
+
timeout?: number;
|
|
22
|
+
}): Promise<T>;
|
|
23
|
+
setAuth(auth: AuthConfig): void;
|
|
24
|
+
getResources(): string[];
|
|
25
|
+
hasResource(name: string): boolean;
|
|
26
|
+
get<T = unknown>(endpoint: string, options?: RequestOptions): Promise<T>;
|
|
27
|
+
post<T = unknown>(endpoint: string, body?: unknown, options?: RequestOptions): Promise<T>;
|
|
28
|
+
put<T = unknown>(endpoint: string, body?: unknown, options?: RequestOptions): Promise<T>;
|
|
29
|
+
delete<T = unknown>(endpoint: string, options?: RequestOptions): Promise<T>;
|
|
30
|
+
stream<T = unknown>(path: string, options?: SSEStreamOptions): AsyncIterableIterator<SSEEvent<T>>;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=vibes-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vibes-client.d.ts","sourceRoot":"","sources":["../../../../src/lib/client/internal/vibes-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAe,cAAc,EAAE,MAAM,aAAa,CAAC;AACzF,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGhE,OAAO,EAAa,KAAK,QAAQ,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAYlF,qBAAa,WAAW;IACvB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,IAAI,CAA+B;IAC3C,OAAO,CAAC,WAAW,CAAqC;gBAE5C,MAAM,GAAE,YAAiB;YA+BvB,UAAU;IAcxB,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC;YAKxB,gBAAgB;IAM9B,OAAO,CAAC,SAAS;IAYjB,OAAO,CAAC,CAAC,GAAG,OAAO,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;QACR,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;QACnD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;QACzE,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,OAAO,CAAC,EAAE,MAAM,CAAC;KACZ,GACJ,OAAO,CAAC,CAAC,CAAC;IAYb,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAiB/B,YAAY,IAAI,MAAM,EAAE;IAIxB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIlC,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;IAIxE,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;IAIzF,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;IAIxF,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;IAIpE,MAAM,CAAC,CAAC,GAAG,OAAO,EACxB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,gBAAqB,GAC5B,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;CASrC"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { APIGenerator } from "./generator.js";
|
|
2
|
+
import { getRuntimeEnv } from '@vibesdotdev/runtime';
|
|
3
|
+
import { RequestBuilder } from "./request-builder.js";
|
|
4
|
+
import { streamSSE } from "./sse-stream.js";
|
|
5
|
+
import { createHookedFetch } from "./wrap-fetch.js";
|
|
6
|
+
export class VibesClient {
|
|
7
|
+
config;
|
|
8
|
+
requestBuilder;
|
|
9
|
+
apiGenerator;
|
|
10
|
+
apis = {};
|
|
11
|
+
specPromise = null;
|
|
12
|
+
constructor(config = {}) {
|
|
13
|
+
const baseUrl = config.baseUrl ||
|
|
14
|
+
getRuntimeEnv('VIBES_API_URL') ||
|
|
15
|
+
'http://localhost:5173';
|
|
16
|
+
const fetchImpl = config.fetch || globalThis.fetch?.bind(globalThis);
|
|
17
|
+
if (!fetchImpl)
|
|
18
|
+
throw new Error('Fetch is not available. Please provide a fetch implementation.');
|
|
19
|
+
const hooks = config.hooks || {};
|
|
20
|
+
this.config = {
|
|
21
|
+
baseUrl,
|
|
22
|
+
auth: config.auth || { type: 'none' },
|
|
23
|
+
fetch: fetchImpl,
|
|
24
|
+
hooks,
|
|
25
|
+
timeout: config.timeout || 30000,
|
|
26
|
+
debug: config.debug || false
|
|
27
|
+
};
|
|
28
|
+
const hookedFetch = createHookedFetch({
|
|
29
|
+
fetchImpl: this.config.fetch,
|
|
30
|
+
hooks: this.config.hooks
|
|
31
|
+
});
|
|
32
|
+
this.requestBuilder = new RequestBuilder(this.config.baseUrl, this.config.auth, hookedFetch, this.config.timeout, this.config.debug);
|
|
33
|
+
this.apiGenerator = new APIGenerator(this.requestBuilder);
|
|
34
|
+
}
|
|
35
|
+
async initialize() {
|
|
36
|
+
try {
|
|
37
|
+
const spec = await this.getOpenAPISpec();
|
|
38
|
+
this.buildAPIs(spec);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
const shouldWarn = this.config.debug ||
|
|
42
|
+
(typeof process !== 'undefined' && process.env?.VIBES_CLIENT_WARN_OAS === 'true');
|
|
43
|
+
if (shouldWarn) {
|
|
44
|
+
console.warn('Failed to load OpenAPI spec, client will have limited functionality:', error);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
getOpenAPISpec() {
|
|
49
|
+
if (!this.specPromise)
|
|
50
|
+
this.specPromise = this.fetchOpenAPISpec();
|
|
51
|
+
return this.specPromise;
|
|
52
|
+
}
|
|
53
|
+
async fetchOpenAPISpec() {
|
|
54
|
+
const response = await this.config.fetch(`${this.config.baseUrl}/api/docs/openapi.json`);
|
|
55
|
+
if (!response.ok)
|
|
56
|
+
throw new Error(`Failed to fetch OpenAPI spec: ${response.statusText}`);
|
|
57
|
+
return response.json();
|
|
58
|
+
}
|
|
59
|
+
buildAPIs(spec) {
|
|
60
|
+
const apis = this.apiGenerator.generateAPIs(spec);
|
|
61
|
+
for (const [name, api] of Object.entries(apis)) {
|
|
62
|
+
this.apis[name] = api;
|
|
63
|
+
Object.defineProperty(this, name, {
|
|
64
|
+
get: () => this.apis[name],
|
|
65
|
+
enumerable: true,
|
|
66
|
+
configurable: true
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
request(path, options = {}) {
|
|
71
|
+
return this.requestBuilder.request({
|
|
72
|
+
path,
|
|
73
|
+
method: options.method || 'GET',
|
|
74
|
+
params: options.params,
|
|
75
|
+
query: options.query,
|
|
76
|
+
body: options.body,
|
|
77
|
+
headers: options.headers,
|
|
78
|
+
timeout: options.timeout
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
setAuth(auth) {
|
|
82
|
+
this.config.auth = auth;
|
|
83
|
+
const hookedFetch = createHookedFetch({
|
|
84
|
+
fetchImpl: this.config.fetch,
|
|
85
|
+
hooks: this.config.hooks
|
|
86
|
+
});
|
|
87
|
+
this.requestBuilder = new RequestBuilder(this.config.baseUrl, auth, hookedFetch, this.config.timeout, this.config.debug);
|
|
88
|
+
this.apiGenerator = new APIGenerator(this.requestBuilder);
|
|
89
|
+
if (this.specPromise)
|
|
90
|
+
this.specPromise.then((spec) => this.buildAPIs(spec));
|
|
91
|
+
}
|
|
92
|
+
getResources() {
|
|
93
|
+
return Object.keys(this.apis);
|
|
94
|
+
}
|
|
95
|
+
hasResource(name) {
|
|
96
|
+
return name in this.apis;
|
|
97
|
+
}
|
|
98
|
+
get(endpoint, options) {
|
|
99
|
+
return this.request(endpoint, { ...options, method: 'GET' });
|
|
100
|
+
}
|
|
101
|
+
post(endpoint, body, options) {
|
|
102
|
+
return this.request(endpoint, { ...options, method: 'POST', body });
|
|
103
|
+
}
|
|
104
|
+
put(endpoint, body, options) {
|
|
105
|
+
return this.request(endpoint, { ...options, method: 'PUT', body });
|
|
106
|
+
}
|
|
107
|
+
delete(endpoint, options) {
|
|
108
|
+
return this.request(endpoint, { ...options, method: 'DELETE' });
|
|
109
|
+
}
|
|
110
|
+
async *stream(path, options = {}) {
|
|
111
|
+
yield* streamSSE({
|
|
112
|
+
baseUrl: this.config.baseUrl,
|
|
113
|
+
auth: this.config.auth,
|
|
114
|
+
fetchImpl: this.config.fetch,
|
|
115
|
+
path,
|
|
116
|
+
options
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=vibes-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vibes-client.js","sourceRoot":"","sources":["../../../../src/lib/client/internal/vibes-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAoB,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAwC,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAWpD,MAAM,OAAO,WAAW;IACf,MAAM,CAAuB;IAC7B,cAAc,CAAiB;IAC/B,YAAY,CAAe;IAC3B,IAAI,GAA4B,EAAE,CAAC;IACnC,WAAW,GAAgC,IAAI,CAAC;IAExD,YAAY,SAAuB,EAAE;QACpC,MAAM,OAAO,GACZ,MAAM,CAAC,OAAO;YACd,aAAa,CAAC,eAAe,CAAC;YAC9B,uBAAuB,CAAC;QACzB,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACrE,IAAI,CAAC,SAAS;YACb,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACnF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG;YACb,OAAO;YACP,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;YACrC,KAAK,EAAE,SAAyB;YAChC,KAAK;YACL,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,KAAK;YAChC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,KAAK;SAC5B,CAAC;QACF,MAAM,WAAW,GAAG,iBAAiB,CAAC;YACrC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;YAC5B,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;SACxB,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CACvC,IAAI,CAAC,MAAM,CAAC,OAAO,EACnB,IAAI,CAAC,MAAM,CAAC,IAAI,EAChB,WAA2B,EAC3B,IAAI,CAAC,MAAM,CAAC,OAAO,EACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CACjB,CAAC;QACF,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC3D,CAAC;IAEO,KAAK,CAAC,UAAU;QACvB,IAAI,CAAC;YACJ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YACzC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,UAAU,GACf,IAAI,CAAC,MAAM,CAAC,KAAK;gBACjB,CAAC,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,qBAAqB,KAAK,MAAM,CAAC,CAAC;YACnF,IAAI,UAAU,EAAE,CAAC;gBAChB,OAAO,CAAC,IAAI,CAAC,sEAAsE,EAAE,KAAK,CAAC,CAAC;YAC7F,CAAC;QACF,CAAC;IACF,CAAC;IAED,cAAc;QACb,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAClE,OAAO,IAAI,CAAC,WAAW,CAAC;IACzB,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,wBAAwB,CAAC,CAAC;QACzF,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QAC1F,OAAO,QAAQ,CAAC,IAAI,EAA0B,CAAC;IAChD,CAAC;IAEO,SAAS,CAAC,IAAiB;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAClD,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;YACtB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE;gBACjC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC1B,UAAU,EAAE,IAAI;gBAChB,YAAY,EAAE,IAAI;aAClB,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,OAAO,CACN,IAAY,EACZ,UAOI,EAAE;QAEN,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;YAClC,IAAI;YACJ,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;YAC/B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,EAAE,OAAO,CAAC,OAAO;SACxB,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,IAAgB;QACvB,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACxB,MAAM,WAAW,GAAG,iBAAiB,CAAC;YACrC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;YAC5B,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;SACxB,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CACvC,IAAI,CAAC,MAAM,CAAC,OAAO,EACnB,IAAI,EACJ,WAA2B,EAC3B,IAAI,CAAC,MAAM,CAAC,OAAO,EACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CACjB,CAAC;QACF,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC1D,IAAI,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,YAAY;QACX,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,WAAW,CAAC,IAAY;QACvB,OAAO,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED,GAAG,CAAc,QAAgB,EAAE,OAAwB;QAC1D,OAAO,IAAI,CAAC,OAAO,CAAI,QAAQ,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,CAAc,QAAgB,EAAE,IAAc,EAAE,OAAwB;QAC3E,OAAO,IAAI,CAAC,OAAO,CAAI,QAAQ,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,GAAG,CAAc,QAAgB,EAAE,IAAc,EAAE,OAAwB;QAC1E,OAAO,IAAI,CAAC,OAAO,CAAI,QAAQ,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,CAAc,QAAgB,EAAE,OAAwB;QAC7D,OAAO,IAAI,CAAC,OAAO,CAAI,QAAQ,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CACZ,IAAY,EACZ,UAA4B,EAAE;QAE9B,KAAK,CAAC,CAAC,SAAS,CAAI;YACnB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;YACtB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;YAC5B,IAAI;YACJ,OAAO;SACP,CAAC,CAAC;IACJ,CAAC;CACD"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type ClientHooks } from '../types.ts';
|
|
2
|
+
export declare function createHookedFetch(args: {
|
|
3
|
+
fetchImpl: typeof fetch;
|
|
4
|
+
hooks: ClientHooks;
|
|
5
|
+
}): (input: Parameters<typeof fetch>[0], init?: RequestInit) => Promise<Response>;
|
|
6
|
+
//# sourceMappingURL=wrap-fetch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrap-fetch.d.ts","sourceRoot":"","sources":["../../../../src/lib/client/internal/wrap-fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAE5D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACvC,SAAS,EAAE,OAAO,KAAK,CAAC;IACxB,KAAK,EAAE,WAAW,CAAC;CACnB,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAqDhF"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { ClientError } from "../types.js";
|
|
2
|
+
export function createHookedFetch(args) {
|
|
3
|
+
return async (input, init) => {
|
|
4
|
+
if (!args.hooks.beforeRequest) {
|
|
5
|
+
let response;
|
|
6
|
+
try {
|
|
7
|
+
response = await args.fetchImpl(input, init);
|
|
8
|
+
}
|
|
9
|
+
catch (error) {
|
|
10
|
+
if (args.hooks.onError) {
|
|
11
|
+
await args.hooks.onError(new ClientError(error instanceof Error ? error.message : 'Network error', 0, undefined, undefined));
|
|
12
|
+
}
|
|
13
|
+
throw error;
|
|
14
|
+
}
|
|
15
|
+
if (args.hooks.afterResponse)
|
|
16
|
+
response = await args.hooks.afterResponse(response);
|
|
17
|
+
return response;
|
|
18
|
+
}
|
|
19
|
+
const requestInput = input instanceof URL
|
|
20
|
+
? new Request(input.href, init)
|
|
21
|
+
: typeof input === 'string'
|
|
22
|
+
? new Request(input, init)
|
|
23
|
+
: new Request(input, init);
|
|
24
|
+
const modifiedRequest = await args.hooks.beforeRequest(requestInput);
|
|
25
|
+
const modifiedInit = {
|
|
26
|
+
...init,
|
|
27
|
+
method: modifiedRequest.method,
|
|
28
|
+
headers: Object.fromEntries(modifiedRequest.headers.entries()),
|
|
29
|
+
...(modifiedRequest.body !== requestInput.body && { body: modifiedRequest.body })
|
|
30
|
+
};
|
|
31
|
+
let response;
|
|
32
|
+
try {
|
|
33
|
+
response = await args.fetchImpl(modifiedRequest.url, modifiedInit);
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
if (args.hooks.onError) {
|
|
37
|
+
await args.hooks.onError(new ClientError(error instanceof Error ? error.message : 'Network error', 0, undefined, undefined));
|
|
38
|
+
}
|
|
39
|
+
throw error;
|
|
40
|
+
}
|
|
41
|
+
if (args.hooks.afterResponse)
|
|
42
|
+
response = await args.hooks.afterResponse(response);
|
|
43
|
+
return response;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=wrap-fetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrap-fetch.js","sourceRoot":"","sources":["../../../../src/lib/client/internal/wrap-fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAoB,MAAM,aAAa,CAAC;AAE5D,MAAM,UAAU,iBAAiB,CAAC,IAGjC;IACA,OAAO,KAAK,EAAE,KAAkC,EAAE,IAAkB,EAAE,EAAE;QACvE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YAC/B,IAAI,QAAkB,CAAC;YACvB,IAAI,CAAC;gBACJ,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC9C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;oBACxB,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CACvB,IAAI,WAAW,CACd,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EACxD,CAAC,EACD,SAAS,EACT,SAAS,CACT,CACD,CAAC;gBACH,CAAC;gBACD,MAAM,KAAK,CAAC;YACb,CAAC;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa;gBAAE,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAClF,OAAO,QAAQ,CAAC;QACjB,CAAC;QACD,MAAM,YAAY,GAAG,KAAK,YAAY,GAAG;YACxC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;YAC/B,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ;gBAC1B,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;gBAC1B,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC7B,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QACrE,MAAM,YAAY,GAAgB;YACjC,GAAG,IAAI;YACP,MAAM,EAAE,eAAe,CAAC,MAAM;YAC9B,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAC9D,GAAG,CAAC,eAAe,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE,CAAC;SACjF,CAAC;QACF,IAAI,QAAkB,CAAC;QACvB,IAAI,CAAC;YACJ,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QACpE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACxB,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CACvB,IAAI,WAAW,CACd,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EACxD,CAAC,EACD,SAAS,EACT,SAAS,CACT,CACD,CAAC;YACH,CAAC;YACD,MAAM,KAAK,CAAC;QACb,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa;YAAE,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAClF,OAAO,QAAQ,CAAC;IACjB,CAAC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ClientConfig } from './types.ts';
|
|
2
|
+
import { VibesClient } from './internal/vibes-client.ts';
|
|
3
|
+
export { createHttp2Fetch } from './internal/node/http2-fetch.node.ts';
|
|
4
|
+
export declare function createCLIClient(config?: Partial<ClientConfig>): Promise<VibesClient>;
|
|
5
|
+
//# sourceMappingURL=node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/lib/client/node.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAoBvE,wBAAsB,eAAe,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAW1F"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { getRuntimeEnv } from '@vibesdotdev/runtime';
|
|
2
|
+
import { VibesClient } from "./internal/vibes-client.js";
|
|
3
|
+
export { createHttp2Fetch } from "./internal/node/http2-fetch.node.js";
|
|
4
|
+
async function resolveNodeFetch(baseUrl) {
|
|
5
|
+
const isHttps = baseUrl.startsWith('https://');
|
|
6
|
+
const isLocal = baseUrl.includes('.local') || baseUrl.includes('localhost') || baseUrl.includes('127.0.0.1');
|
|
7
|
+
if (isHttps && isLocal) {
|
|
8
|
+
try {
|
|
9
|
+
if (!getRuntimeEnv('REJECT_UNAUTHORIZED')) {
|
|
10
|
+
globalThis.process?.['env'] && (globalThis.process.env.REJECT_UNAUTHORIZED = 'false');
|
|
11
|
+
}
|
|
12
|
+
const { createHttp2Fetch } = await import('./internal/node/http2-fetch.node.js');
|
|
13
|
+
return createHttp2Fetch(baseUrl);
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
// Fallback to regular fetch if h2 module unavailable
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return globalThis.fetch;
|
|
20
|
+
}
|
|
21
|
+
export async function createCLIClient(config) {
|
|
22
|
+
const baseUrl = config?.baseUrl || getRuntimeEnv('VIBES_API_URL') || 'http://localhost:5173';
|
|
23
|
+
const fetchImpl = config?.fetch || (await resolveNodeFetch(baseUrl));
|
|
24
|
+
const clientConfig = {
|
|
25
|
+
baseUrl,
|
|
26
|
+
auth: config?.auth || { type: 'none' },
|
|
27
|
+
fetch: fetchImpl,
|
|
28
|
+
debug: getRuntimeEnv('VIBES_DEBUG') === 'true',
|
|
29
|
+
...config
|
|
30
|
+
};
|
|
31
|
+
return new VibesClient(clientConfig);
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../../src/lib/client/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAEvE,KAAK,UAAU,gBAAgB,CAAC,OAAe;IAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,OAAO,GACZ,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC9F,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC;YACJ,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,EAAE,CAAC;gBAC3C,UAAU,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,OAAO,CAAC,CAAC;YACvF,CAAC;YACD,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,qCAAqC,CAAC,CAAC;YACjF,OAAO,gBAAgB,CAAC,OAAO,CAAuC,CAAC;QACxE,CAAC;QAAC,MAAM,CAAC;YACR,qDAAqD;QACtD,CAAC;IACF,CAAC;IACD,OAAO,UAAU,CAAC,KAAK,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAA8B;IACnE,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,aAAa,CAAC,eAAe,CAAC,IAAI,uBAAuB,CAAC;IAC7F,MAAM,SAAS,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;IACrE,MAAM,YAAY,GAAiB;QAClC,OAAO;QACP,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;QACtC,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,KAAK,MAAM;QAC9C,GAAG,MAAM;KACT,CAAC;IACF,OAAO,IAAI,WAAW,CAAC,YAAY,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vibes Client Types
|
|
3
|
+
*
|
|
4
|
+
* Configuration, errors, and type contracts for the VibesClient HTTP API client.
|
|
5
|
+
* Extracted from libraries/vibeskit (PR #447 migration) to canonicalize as a
|
|
6
|
+
* pure-isomorphic @vibesdotdev/client surface.
|
|
7
|
+
*/
|
|
8
|
+
/** Authentication configuration */
|
|
9
|
+
export interface AuthConfig {
|
|
10
|
+
/** Authentication type */
|
|
11
|
+
type: 'apiKey' | 'session' | 'bearer' | 'none';
|
|
12
|
+
/** Static credentials */
|
|
13
|
+
credentials?: string;
|
|
14
|
+
/** Dynamic token provider */
|
|
15
|
+
tokenProvider?: () => Promise<string | null>;
|
|
16
|
+
/** Session refresh handler for expired sessions */
|
|
17
|
+
refreshHandler?: () => Promise<AuthConfig | null>;
|
|
18
|
+
}
|
|
19
|
+
/** Client lifecycle hooks */
|
|
20
|
+
export interface ClientHooks {
|
|
21
|
+
/** Called before each request */
|
|
22
|
+
beforeRequest?: (request: Request) => Promise<Request> | Request;
|
|
23
|
+
/** Called after each response */
|
|
24
|
+
afterResponse?: (response: Response) => Promise<Response> | Response;
|
|
25
|
+
/** Called on request error */
|
|
26
|
+
onError?: (error: ClientError) => Promise<void> | void;
|
|
27
|
+
}
|
|
28
|
+
/** Request options */
|
|
29
|
+
export interface RequestOptions {
|
|
30
|
+
/** HTTP method */
|
|
31
|
+
method: string;
|
|
32
|
+
/** Request path (will be appended to baseUrl) */
|
|
33
|
+
path: string;
|
|
34
|
+
/** URL parameters */
|
|
35
|
+
params?: Record<string, string | number | boolean>;
|
|
36
|
+
/** Query parameters */
|
|
37
|
+
query?: Record<string, string | number | boolean | string[] | undefined>;
|
|
38
|
+
/** Request body */
|
|
39
|
+
body?: unknown;
|
|
40
|
+
/** Additional headers */
|
|
41
|
+
headers?: Record<string, string>;
|
|
42
|
+
/** Override timeout for this request */
|
|
43
|
+
timeout?: number;
|
|
44
|
+
}
|
|
45
|
+
/** Client configuration options */
|
|
46
|
+
export interface ClientConfig {
|
|
47
|
+
/** Base URL for API requests */
|
|
48
|
+
baseUrl?: string;
|
|
49
|
+
/** Authentication configuration */
|
|
50
|
+
auth?: AuthConfig;
|
|
51
|
+
/** Custom fetch implementation */
|
|
52
|
+
fetch?: typeof fetch;
|
|
53
|
+
/** Request/response hooks */
|
|
54
|
+
hooks?: ClientHooks;
|
|
55
|
+
/** Request timeout in milliseconds */
|
|
56
|
+
timeout?: number;
|
|
57
|
+
/** Enable debug logging */
|
|
58
|
+
debug?: boolean;
|
|
59
|
+
}
|
|
60
|
+
/** Client error with additional context */
|
|
61
|
+
export declare class ClientError extends Error {
|
|
62
|
+
status?: number | undefined;
|
|
63
|
+
response?: Response | undefined;
|
|
64
|
+
request?: RequestOptions | undefined;
|
|
65
|
+
constructor(message: string, status?: number | undefined, response?: Response | undefined, request?: RequestOptions | undefined);
|
|
66
|
+
}
|
|
67
|
+
/** Paginated response wrapper */
|
|
68
|
+
export interface PaginatedResponse<T> {
|
|
69
|
+
data: T[];
|
|
70
|
+
total: number;
|
|
71
|
+
page: number;
|
|
72
|
+
pageSize: number;
|
|
73
|
+
hasMore: boolean;
|
|
74
|
+
}
|
|
75
|
+
/** Standard list parameters */
|
|
76
|
+
export interface ListParams {
|
|
77
|
+
/** Page number (1-based) */
|
|
78
|
+
page?: number;
|
|
79
|
+
/** Items per page */
|
|
80
|
+
limit?: number;
|
|
81
|
+
/** Sort field */
|
|
82
|
+
sortBy?: string;
|
|
83
|
+
/** Sort direction */
|
|
84
|
+
sortOrder?: 'asc' | 'desc';
|
|
85
|
+
/** Search query */
|
|
86
|
+
search?: string;
|
|
87
|
+
/** Additional filters */
|
|
88
|
+
filters?: Record<string, unknown>;
|
|
89
|
+
}
|
|
90
|
+
/** OpenAPI path info (generic -- no openapi-types dependency) */
|
|
91
|
+
export interface PathInfo {
|
|
92
|
+
path: string;
|
|
93
|
+
method: string;
|
|
94
|
+
operationId?: string;
|
|
95
|
+
parameters?: Record<string, unknown>[];
|
|
96
|
+
requestBody?: Record<string, unknown>;
|
|
97
|
+
responses?: Record<string, unknown>;
|
|
98
|
+
tags?: string[];
|
|
99
|
+
summary?: string;
|
|
100
|
+
description?: string;
|
|
101
|
+
}
|
|
102
|
+
/** Grouped API resources */
|
|
103
|
+
export interface APIResource {
|
|
104
|
+
name: string;
|
|
105
|
+
basePath: string;
|
|
106
|
+
operations: Map<string, PathInfo>;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Migration debt: ClientUser is an auth-domain type owned by @vibesdotdev/auth.
|
|
110
|
+
* Defined here temporarily so @vibesdotdev/kit/client consumers can migrate.
|
|
111
|
+
* Target: move to packages/auth/src/shared/client-user.ts and re-export from client/core.
|
|
112
|
+
*/
|
|
113
|
+
export interface ClientUser {
|
|
114
|
+
id: string;
|
|
115
|
+
email: string;
|
|
116
|
+
displayName?: string | null;
|
|
117
|
+
avatarUrl?: string | null;
|
|
118
|
+
isSuperuser?: boolean;
|
|
119
|
+
roles?: Array<{
|
|
120
|
+
id: string;
|
|
121
|
+
name: string;
|
|
122
|
+
description: string | null;
|
|
123
|
+
isSystemRole: boolean;
|
|
124
|
+
}>;
|
|
125
|
+
permissions?: string[];
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Type helpers for schema conversion
|
|
129
|
+
*/
|
|
130
|
+
export type SchemaToType<T> = T extends {
|
|
131
|
+
type: 'string';
|
|
132
|
+
} ? string : T extends {
|
|
133
|
+
type: 'number';
|
|
134
|
+
} ? number : T extends {
|
|
135
|
+
type: 'boolean';
|
|
136
|
+
} ? boolean : T extends {
|
|
137
|
+
type: 'array';
|
|
138
|
+
items: infer I;
|
|
139
|
+
} ? Array<SchemaToType<I>> : T extends {
|
|
140
|
+
type: 'object';
|
|
141
|
+
properties: infer P;
|
|
142
|
+
} ? {
|
|
143
|
+
[K in keyof P]: SchemaToType<P[K]>;
|
|
144
|
+
} : unknown;
|
|
145
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/client/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vibes Client Types
|
|
3
|
+
*
|
|
4
|
+
* Configuration, errors, and type contracts for the VibesClient HTTP API client.
|
|
5
|
+
* Extracted from libraries/vibeskit (PR #447 migration) to canonicalize as a
|
|
6
|
+
* pure-isomorphic @vibesdotdev/client surface.
|
|
7
|
+
*/
|
|
8
|
+
/** Client error with additional context */
|
|
9
|
+
export class ClientError extends Error {
|
|
10
|
+
status;
|
|
11
|
+
response;
|
|
12
|
+
request;
|
|
13
|
+
constructor(message, status, response, request) {
|
|
14
|
+
super(message);
|
|
15
|
+
this.status = status;
|
|
16
|
+
this.response = response;
|
|
17
|
+
this.request = request;
|
|
18
|
+
this.name = 'ClientError';
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/client/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA0DH,2CAA2C;AAC3C,MAAM,OAAO,WAAY,SAAQ,KAAK;IAG7B;IACA;IACA;IAJR,YACC,OAAe,EACR,MAAe,EACf,QAAmB,EACnB,OAAwB;QAE/B,KAAK,CAAC,OAAO,CAAC,CAAC;QAJR,WAAM,GAAN,MAAM,CAAS;QACf,aAAQ,GAAR,QAAQ,CAAW;QACnB,YAAO,GAAP,OAAO,CAAiB;QAG/B,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC3B,CAAC;CACD"}
|
package/dist/plugin.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client plugin — registers the `api/client` kind with the runtime.
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```ts
|
|
6
|
+
* import { getVibesRuntime } from '@vibesdotdev/runtime';
|
|
7
|
+
* import clientPlugin from '@vibesdotdev/client/plugin';
|
|
8
|
+
*
|
|
9
|
+
* const runtime = getVibesRuntime();
|
|
10
|
+
* await runtime.registerPlugin(clientPlugin);
|
|
11
|
+
*
|
|
12
|
+
* // Query a registered API client
|
|
13
|
+
* const authClient = await runtime.query('api/client').withId('auth').resolve();
|
|
14
|
+
* await authClient.get('/api/health');
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
declare const _default: import("@vibesdotdev/runtime").RuntimePlugin;
|
|
18
|
+
export default _default;
|
|
19
|
+
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AA4EA;;;;;;;;;;;;;;;GAeG;;AACH,wBAWG"}
|