@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 @@
|
|
|
1
|
+
{"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../../../../src/lib/client/internal/endpoint.ts"],"names":[],"mappings":"AAYA,MAAM,OAAO,QAAQ;IAEX;IACA;IAFT,YACS,MAAuB,EACvB,IAAY;QADZ,WAAM,GAAN,MAAM,CAAiB;QACvB,SAAI,GAAJ,IAAI,CAAQ;IAClB,CAAC;IAEJ,QAAQ,CAAC,OAAe;QACvB,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;QACpE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,SAAS,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,CAA0D,OAAU;QAC1E,MAAM,KAAK,GAAG,EAA8B,CAAC;QAC7C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAmB,EAAE,CAAC;YAC1D,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAkB,CAAC;QACvD,CAAC;QACD,OAAO,KAAU,CAAC;IACnB,CAAC;IAED,GAAG,CAAc,IAAI,GAAG,EAAE,EAAE,OAA4B;QACvD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IAC3F,CAAC;IAED,IAAI,CAAc,IAAI,GAAG,EAAE,EAAE,IAAc,EAAE,OAA4B;QACxE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IAClG,CAAC;IAED,GAAG,CAAc,IAAI,GAAG,EAAE,EAAE,IAAc,EAAE,OAA4B;QACvE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IACjG,CAAC;IAED,KAAK,CAAc,IAAI,GAAG,EAAE,EAAE,IAAc,EAAE,OAA4B;QACzE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IACnG,CAAC;IAED,MAAM,CAAc,IAAI,GAAG,EAAE,EAAE,OAA4B;QAC1D,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IAC9F,CAAC;CACD"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { RequestBuilder } from './request-builder.ts';
|
|
2
|
+
export interface OpenAPISpec {
|
|
3
|
+
paths?: Record<string, Record<string, unknown>>;
|
|
4
|
+
[key: string]: unknown;
|
|
5
|
+
}
|
|
6
|
+
export declare class APIGenerator {
|
|
7
|
+
private requestBuilder;
|
|
8
|
+
constructor(requestBuilder: RequestBuilder);
|
|
9
|
+
generateAPIs(spec: OpenAPISpec): Record<string, Record<string, (...args: unknown[]) => Promise<unknown>>>;
|
|
10
|
+
private groupPathsByResource;
|
|
11
|
+
private extractResourceName;
|
|
12
|
+
private extractBasePath;
|
|
13
|
+
private getOperationName;
|
|
14
|
+
private createResourceAPI;
|
|
15
|
+
private createOperation;
|
|
16
|
+
private buildRequestOptions;
|
|
17
|
+
private addConvenienceMethods;
|
|
18
|
+
private toCamelCase;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../../src/lib/client/internal/generator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,WAAW,WAAW;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAChD,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB;AAED,qBAAa,YAAY;IACZ,OAAO,CAAC,cAAc;gBAAd,cAAc,EAAE,cAAc;IAElD,YAAY,CACX,IAAI,EAAE,WAAW,GACf,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAS3E,OAAO,CAAC,oBAAoB;IA0C5B,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,gBAAgB;IAwBxB,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,mBAAmB;IAiC3B,OAAO,CAAC,qBAAqB;IAyB7B,OAAO,CAAC,WAAW;CAKnB"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
export class APIGenerator {
|
|
2
|
+
requestBuilder;
|
|
3
|
+
constructor(requestBuilder) {
|
|
4
|
+
this.requestBuilder = requestBuilder;
|
|
5
|
+
}
|
|
6
|
+
generateAPIs(spec) {
|
|
7
|
+
const resources = this.groupPathsByResource(spec);
|
|
8
|
+
const apis = {};
|
|
9
|
+
for (const resource of resources.values()) {
|
|
10
|
+
apis[resource.name] = this.createResourceAPI(resource);
|
|
11
|
+
}
|
|
12
|
+
return apis;
|
|
13
|
+
}
|
|
14
|
+
groupPathsByResource(spec) {
|
|
15
|
+
const resources = new Map();
|
|
16
|
+
for (const [path, pathItem] of Object.entries(spec.paths || {})) {
|
|
17
|
+
if (!pathItem || typeof pathItem !== 'object')
|
|
18
|
+
continue;
|
|
19
|
+
const resourceName = this.extractResourceName(path);
|
|
20
|
+
if (!resourceName)
|
|
21
|
+
continue;
|
|
22
|
+
let resource = resources.get(resourceName);
|
|
23
|
+
if (!resource) {
|
|
24
|
+
resource = {
|
|
25
|
+
name: resourceName,
|
|
26
|
+
basePath: this.extractBasePath(path, resourceName),
|
|
27
|
+
operations: new Map()
|
|
28
|
+
};
|
|
29
|
+
resources.set(resourceName, resource);
|
|
30
|
+
}
|
|
31
|
+
const methods = ['get', 'post', 'put', 'patch', 'delete'];
|
|
32
|
+
for (const method of methods) {
|
|
33
|
+
const operation = pathItem[method];
|
|
34
|
+
if (operation && typeof operation === 'object' && 'responses' in operation) {
|
|
35
|
+
const op = operation;
|
|
36
|
+
const pi = pathItem;
|
|
37
|
+
const opParams = (op.parameters || []);
|
|
38
|
+
const piParams = (pi.parameters || []);
|
|
39
|
+
const pathInfo = {
|
|
40
|
+
path,
|
|
41
|
+
method: method.toUpperCase(),
|
|
42
|
+
operationId: op.operationId,
|
|
43
|
+
parameters: [...piParams, ...opParams],
|
|
44
|
+
requestBody: op.requestBody,
|
|
45
|
+
responses: op.responses,
|
|
46
|
+
tags: op.tags,
|
|
47
|
+
summary: op.summary,
|
|
48
|
+
description: op.description
|
|
49
|
+
};
|
|
50
|
+
const operationName = this.getOperationName(pathInfo);
|
|
51
|
+
resource.operations.set(operationName, pathInfo);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return resources;
|
|
56
|
+
}
|
|
57
|
+
extractResourceName(path) {
|
|
58
|
+
const segments = path.split('/').filter(Boolean);
|
|
59
|
+
if (segments[0] !== 'api' || segments.length < 2)
|
|
60
|
+
return null;
|
|
61
|
+
return this.toCamelCase(segments[1]);
|
|
62
|
+
}
|
|
63
|
+
extractBasePath(path, resourceName) {
|
|
64
|
+
const match = path.match(/^(\/api\/[^/]+)/);
|
|
65
|
+
return match ? match[1] : `/api/${resourceName}`;
|
|
66
|
+
}
|
|
67
|
+
getOperationName(pathInfo) {
|
|
68
|
+
const pathParts = pathInfo.path.split('/').filter(Boolean);
|
|
69
|
+
const method = pathInfo.method.toLowerCase();
|
|
70
|
+
const hasPathParam = pathInfo.path.includes('{');
|
|
71
|
+
const resourceName = pathParts[1];
|
|
72
|
+
if (method === 'get' && !hasPathParam) {
|
|
73
|
+
return pathInfo.operationId?.toLowerCase().includes('list') ? 'list' : 'list';
|
|
74
|
+
}
|
|
75
|
+
if (method === 'get' && hasPathParam)
|
|
76
|
+
return 'get';
|
|
77
|
+
if (method === 'post' && !hasPathParam)
|
|
78
|
+
return 'create';
|
|
79
|
+
if ((method === 'put' || method === 'patch') && hasPathParam)
|
|
80
|
+
return 'update';
|
|
81
|
+
if (method === 'delete' && hasPathParam)
|
|
82
|
+
return 'delete';
|
|
83
|
+
if (pathInfo.operationId) {
|
|
84
|
+
let opName = pathInfo.operationId;
|
|
85
|
+
if (resourceName && opName.toLowerCase().startsWith(resourceName.slice(0, -1))) {
|
|
86
|
+
opName = opName.slice(resourceName.length - 1);
|
|
87
|
+
}
|
|
88
|
+
return this.toCamelCase(opName);
|
|
89
|
+
}
|
|
90
|
+
const lastPart = pathParts[pathParts.length - 1];
|
|
91
|
+
if (!lastPart.startsWith('{'))
|
|
92
|
+
return this.toCamelCase(lastPart);
|
|
93
|
+
return method;
|
|
94
|
+
}
|
|
95
|
+
createResourceAPI(resource) {
|
|
96
|
+
const api = {};
|
|
97
|
+
for (const [name, pathInfo] of resource.operations) {
|
|
98
|
+
api[name] = this.createOperation(pathInfo);
|
|
99
|
+
}
|
|
100
|
+
this.addConvenienceMethods(api, resource);
|
|
101
|
+
return api;
|
|
102
|
+
}
|
|
103
|
+
createOperation(pathInfo) {
|
|
104
|
+
return (...args) => {
|
|
105
|
+
const options = this.buildRequestOptions(pathInfo, args);
|
|
106
|
+
return this.requestBuilder.request(options);
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
buildRequestOptions(pathInfo, args) {
|
|
110
|
+
const options = { method: pathInfo.method, path: pathInfo.path };
|
|
111
|
+
const params = {};
|
|
112
|
+
const query = {};
|
|
113
|
+
let body;
|
|
114
|
+
let argIndex = 0;
|
|
115
|
+
if (pathInfo.parameters) {
|
|
116
|
+
for (const param of pathInfo.parameters) {
|
|
117
|
+
if (param.in === 'path' && argIndex < args.length) {
|
|
118
|
+
params[param.name] = args[argIndex++];
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
if (argIndex < args.length) {
|
|
123
|
+
const nextArg = args[argIndex];
|
|
124
|
+
if (typeof nextArg === 'object' && nextArg !== null) {
|
|
125
|
+
if (pathInfo.method === 'GET' || pathInfo.method === 'DELETE') {
|
|
126
|
+
Object.assign(query, nextArg);
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
body = nextArg;
|
|
130
|
+
argIndex++;
|
|
131
|
+
if (argIndex < args.length && typeof args[argIndex] === 'object') {
|
|
132
|
+
Object.assign(query, args[argIndex]);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
if (Object.keys(params).length > 0)
|
|
138
|
+
options.params = params;
|
|
139
|
+
if (Object.keys(query).length > 0)
|
|
140
|
+
options.query = query;
|
|
141
|
+
if (body !== undefined)
|
|
142
|
+
options.body = body;
|
|
143
|
+
return options;
|
|
144
|
+
}
|
|
145
|
+
addConvenienceMethods(api, _resource) {
|
|
146
|
+
if (api.list && !api.search) {
|
|
147
|
+
api.search = ((query, params) => {
|
|
148
|
+
return api.list({ ...params, search: query });
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
if (api.get && api.create && !api.getOrCreate) {
|
|
152
|
+
api.getOrCreate = (async (id, data) => {
|
|
153
|
+
try {
|
|
154
|
+
return await api.get(id);
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
const status = error.status;
|
|
158
|
+
if (status === 404) {
|
|
159
|
+
const record = data;
|
|
160
|
+
return await api.create(Object.assign({}, record, { id }));
|
|
161
|
+
}
|
|
162
|
+
throw error;
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
toCamelCase(str) {
|
|
168
|
+
return str
|
|
169
|
+
.replace(/[-_](.)/g, (_, char) => char.toUpperCase())
|
|
170
|
+
.replace(/^(.)/, (_, char) => char.toLowerCase());
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../src/lib/client/internal/generator.ts"],"names":[],"mappings":"AAQA,MAAM,OAAO,YAAY;IACJ;IAApB,YAAoB,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;IAAG,CAAC;IAEtD,YAAY,CACX,IAAiB;QAEjB,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,IAAI,GAA6E,EAAE,CAAC;QAC1F,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAEO,oBAAoB,CAAC,IAAiB;QAC7C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAuB,CAAC;QACjD,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;YACjE,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;gBAAE,SAAS;YACxD,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;YACpD,IAAI,CAAC,YAAY;gBAAE,SAAS;YAC5B,IAAI,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC3C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACf,QAAQ,GAAG;oBACV,IAAI,EAAE,YAAY;oBAClB,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC;oBAClD,UAAU,EAAE,IAAI,GAAG,EAAE;iBACrB,CAAC;gBACF,SAAS,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YACvC,CAAC;YACD,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAU,CAAC;YACnE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC9B,MAAM,SAAS,GAAI,QAAoC,CAAC,MAAM,CAAC,CAAC;gBAChE,IAAI,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,WAAW,IAAI,SAAS,EAAE,CAAC;oBAC5E,MAAM,EAAE,GAAG,SAAoC,CAAC;oBAChD,MAAM,EAAE,GAAG,QAAmC,CAAC;oBAC/C,MAAM,QAAQ,GAAG,CAAC,EAAE,CAAC,UAAU,IAAI,EAAE,CAA8B,CAAC;oBACpE,MAAM,QAAQ,GAAG,CAAC,EAAE,CAAC,UAAU,IAAI,EAAE,CAA8B,CAAC;oBACpE,MAAM,QAAQ,GAAa;wBAC1B,IAAI;wBACJ,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE;wBAC5B,WAAW,EAAE,EAAE,CAAC,WAAiC;wBACjD,UAAU,EAAE,CAAC,GAAG,QAAQ,EAAE,GAAG,QAAQ,CAAC;wBACtC,WAAW,EAAE,EAAE,CAAC,WAAkD;wBAClE,SAAS,EAAE,EAAE,CAAC,SAAoC;wBAClD,IAAI,EAAE,EAAE,CAAC,IAA4B;wBACrC,OAAO,EAAE,EAAE,CAAC,OAA6B;wBACzC,WAAW,EAAE,EAAE,CAAC,WAAiC;qBACjD,CAAC;oBACF,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;oBACtD,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;gBAClD,CAAC;YACF,CAAC;QACF,CAAC;QACD,OAAO,SAAS,CAAC;IAClB,CAAC;IAEO,mBAAmB,CAAC,IAAY;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAC9D,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IAEO,eAAe,CAAC,IAAY,EAAE,YAAoB;QACzD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC5C,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,YAAY,EAAE,CAAC;IAClD,CAAC;IAEO,gBAAgB,CAAC,QAAkB;QAC1C,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAC7C,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,MAAM,KAAK,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;YACvC,OAAO,QAAQ,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAC/E,CAAC;QACD,IAAI,MAAM,KAAK,KAAK,IAAI,YAAY;YAAE,OAAO,KAAK,CAAC;QACnD,IAAI,MAAM,KAAK,MAAM,IAAI,CAAC,YAAY;YAAE,OAAO,QAAQ,CAAC;QACxD,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,OAAO,CAAC,IAAI,YAAY;YAAE,OAAO,QAAQ,CAAC;QAC9E,IAAI,MAAM,KAAK,QAAQ,IAAI,YAAY;YAAE,OAAO,QAAQ,CAAC;QACzD,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;YAC1B,IAAI,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC;YAClC,IAAI,YAAY,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChF,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAChD,CAAC;YACD,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC;QACD,MAAM,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACjE,OAAO,MAAM,CAAC;IACf,CAAC;IAEO,iBAAiB,CACxB,QAAqB;QAErB,MAAM,GAAG,GAA6D,EAAE,CAAC;QACzE,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;YACpD,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC1C,OAAO,GAAG,CAAC;IACZ,CAAC;IAEO,eAAe,CAAC,QAAkB;QACzC,OAAO,CAAC,GAAG,IAAe,EAAE,EAAE;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACzD,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC,CAAC;IACH,CAAC;IAEO,mBAAmB,CAAC,QAAkB,EAAE,IAAe;QAC9D,MAAM,OAAO,GAAmB,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;QACjF,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,MAAM,KAAK,GAA4B,EAAE,CAAC;QAC1C,IAAI,IAAa,CAAC;QAClB,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;YACzB,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACzC,IAAK,KAAiC,CAAC,EAAE,KAAK,MAAM,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChF,MAAM,CAAE,KAAiC,CAAC,IAAc,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC9E,CAAC;YACF,CAAC;QACF,CAAC;QACD,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC/B,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrD,IAAI,QAAQ,CAAC,MAAM,KAAK,KAAK,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;oBAC/D,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAC/B,CAAC;qBAAM,CAAC;oBACP,IAAI,GAAG,OAAO,CAAC;oBACf,QAAQ,EAAE,CAAC;oBACX,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,QAAQ,EAAE,CAAC;wBAClE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;oBACtC,CAAC;gBACF,CAAC;YACF,CAAC;QACF,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,MAAM,GAAG,MAAmD,CAAC;QACzG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,KAAK,GAAG,KAAyE,CAAC;QAC7H,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QAC5C,OAAO,OAAO,CAAC;IAChB,CAAC;IAEO,qBAAqB,CAC5B,GAA6D,EAC7D,SAAsB;QAEtB,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YAC7B,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAa,EAAE,MAAgC,EAAE,EAAE;gBACjE,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YAC/C,CAAC,CAA6C,CAAC;QAChD,CAAC;QACD,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YAC/C,GAAG,CAAC,WAAW,GAAG,CAAC,KAAK,EAAE,EAAU,EAAE,IAAa,EAAE,EAAE;gBACtD,IAAI,CAAC;oBACJ,OAAO,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC1B,CAAC;gBAAC,OAAO,KAAc,EAAE,CAAC;oBACzB,MAAM,MAAM,GAAI,KAAiC,CAAC,MAAM,CAAC;oBACzD,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;wBACpB,MAAM,MAAM,GAAG,IAA+B,CAAC;wBAC/C,OAAO,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;oBAC5D,CAAC;oBACD,MAAM,KAAK,CAAC;gBACb,CAAC;YACF,CAAC,CAA6C,CAAC;QAChD,CAAC;IACF,CAAC;IAEO,WAAW,CAAC,GAAW;QAC9B,OAAO,GAAG;aACR,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;aACpD,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACpD,CAAC;CACD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/client/internal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/client/internal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http2-fetch.node.d.ts","sourceRoot":"","sources":["../../../../../src/lib/client/internal/node/http2-fetch.node.ts"],"names":[],"mappings":"AAGA,wBAAgB,gBAAgB,CAC/B,OAAO,EAAE,MAAM,GACb,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAoI/E"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { getRuntimeEnv } from '@vibesdotdev/runtime';
|
|
2
|
+
import { connect as http2Connect } from 'node:http2';
|
|
3
|
+
export function createHttp2Fetch(baseUrl) {
|
|
4
|
+
const sessions = new Map();
|
|
5
|
+
const rejectUnauthorized = getRuntimeEnv('REJECT_UNAUTHORIZED') !== 'false';
|
|
6
|
+
return (input, init) => {
|
|
7
|
+
const url = typeof input === 'string'
|
|
8
|
+
? new URL(input, baseUrl)
|
|
9
|
+
: input instanceof URL
|
|
10
|
+
? input
|
|
11
|
+
: new URL(input.url, baseUrl);
|
|
12
|
+
const method = init?.method?.toUpperCase() || 'GET';
|
|
13
|
+
const headers = new Headers(init?.headers);
|
|
14
|
+
const sessionKey = `${url.protocol}//${url.host}`;
|
|
15
|
+
let session = sessions.get(sessionKey);
|
|
16
|
+
if (!session || session.destroyed || session.closed) {
|
|
17
|
+
try {
|
|
18
|
+
session = http2Connect(url.origin, { rejectUnauthorized });
|
|
19
|
+
sessions.set(sessionKey, session);
|
|
20
|
+
session.on('close', () => sessions.delete(sessionKey));
|
|
21
|
+
session.on('error', (error) => {
|
|
22
|
+
if (sessions.has(sessionKey)) {
|
|
23
|
+
console.warn('[http2] Session error:', error.message);
|
|
24
|
+
}
|
|
25
|
+
sessions.delete(sessionKey);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return fetch(url.toString(), init);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return new Promise((resolve, reject) => {
|
|
33
|
+
try {
|
|
34
|
+
const http2Headers = {
|
|
35
|
+
':method': method,
|
|
36
|
+
':path': `${url.pathname}${url.search}`,
|
|
37
|
+
':scheme': url.protocol.replace(':', ''),
|
|
38
|
+
':authority': url.host
|
|
39
|
+
};
|
|
40
|
+
headers.forEach((value, key) => {
|
|
41
|
+
http2Headers[key.toLowerCase()] = value;
|
|
42
|
+
});
|
|
43
|
+
const req = session.request(http2Headers);
|
|
44
|
+
let settled = false;
|
|
45
|
+
const abort = () => {
|
|
46
|
+
if (settled)
|
|
47
|
+
return;
|
|
48
|
+
settled = true;
|
|
49
|
+
try {
|
|
50
|
+
req.close();
|
|
51
|
+
req.destroy();
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
// ignore
|
|
55
|
+
}
|
|
56
|
+
const error = new Error('Request aborted');
|
|
57
|
+
error.name = 'AbortError';
|
|
58
|
+
reject(error);
|
|
59
|
+
};
|
|
60
|
+
const signal = init?.signal;
|
|
61
|
+
if (signal) {
|
|
62
|
+
if (signal.aborted) {
|
|
63
|
+
abort();
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
signal.addEventListener('abort', abort, { once: true });
|
|
67
|
+
}
|
|
68
|
+
const cleanupAbort = () => {
|
|
69
|
+
if (!signal)
|
|
70
|
+
return;
|
|
71
|
+
signal.removeEventListener('abort', abort);
|
|
72
|
+
};
|
|
73
|
+
if (init?.body) {
|
|
74
|
+
if (typeof init.body === 'string') {
|
|
75
|
+
req.write(init.body);
|
|
76
|
+
}
|
|
77
|
+
else if (init.body instanceof Buffer) {
|
|
78
|
+
req.write(init.body);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
req.end();
|
|
82
|
+
const chunks = [];
|
|
83
|
+
const responseHeaders = new Headers();
|
|
84
|
+
let statusCode = 200;
|
|
85
|
+
req.on('response', (headers) => {
|
|
86
|
+
const statusValue = headers[':status'];
|
|
87
|
+
statusCode =
|
|
88
|
+
parseInt(Array.isArray(statusValue) ? statusValue[0] : String(statusValue ?? 200)) ||
|
|
89
|
+
200;
|
|
90
|
+
for (const [key, value] of Object.entries(headers)) {
|
|
91
|
+
if (key.startsWith(':') || value === undefined)
|
|
92
|
+
continue;
|
|
93
|
+
if (Array.isArray(value))
|
|
94
|
+
value.forEach((v) => responseHeaders.append(key, v));
|
|
95
|
+
else
|
|
96
|
+
responseHeaders.set(key, String(value));
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
req.on('data', (chunk) => {
|
|
100
|
+
if (typeof chunk === 'string') {
|
|
101
|
+
chunks.push(Buffer.from(chunk));
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(new Uint8Array(chunk)));
|
|
105
|
+
});
|
|
106
|
+
req.on('end', () => {
|
|
107
|
+
if (settled)
|
|
108
|
+
return;
|
|
109
|
+
settled = true;
|
|
110
|
+
cleanupAbort();
|
|
111
|
+
const body = Buffer.concat(chunks);
|
|
112
|
+
resolve(new Response(body, {
|
|
113
|
+
status: statusCode,
|
|
114
|
+
headers: responseHeaders
|
|
115
|
+
}));
|
|
116
|
+
});
|
|
117
|
+
req.on('error', (error) => {
|
|
118
|
+
if (settled)
|
|
119
|
+
return;
|
|
120
|
+
settled = true;
|
|
121
|
+
cleanupAbort();
|
|
122
|
+
reject(error);
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
reject(error);
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=http2-fetch.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http2-fetch.node.js","sourceRoot":"","sources":["../../../../../src/lib/client/internal/node/http2-fetch.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type AuthConfig, type RequestOptions } from '../types.ts';
|
|
2
|
+
export declare class RequestBuilder {
|
|
3
|
+
private baseUrl;
|
|
4
|
+
private auth;
|
|
5
|
+
private fetchImpl;
|
|
6
|
+
private timeout;
|
|
7
|
+
private debug;
|
|
8
|
+
constructor(baseUrl: string, auth: AuthConfig, fetchImpl: typeof fetch, timeout?: number, debug?: boolean);
|
|
9
|
+
request<T = unknown>(options: RequestOptions): Promise<T>;
|
|
10
|
+
private buildUrl;
|
|
11
|
+
private buildHeaders;
|
|
12
|
+
private createAbortSignal;
|
|
13
|
+
private createError;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=request-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-builder.d.ts","sourceRoot":"","sources":["../../../../src/lib/client/internal/request-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAEhF,qBAAa,cAAc;IAEzB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,KAAK;gBAJL,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,OAAO,KAAK,EACvB,OAAO,GAAE,MAAc,EACvB,KAAK,GAAE,OAAe;IAGzB,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;IAqD/D,OAAO,CAAC,QAAQ;YAkBF,YAAY;IAsB1B,OAAO,CAAC,iBAAiB;YAMX,WAAW;CAoCzB"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { ClientError } from "../types.js";
|
|
2
|
+
export class RequestBuilder {
|
|
3
|
+
baseUrl;
|
|
4
|
+
auth;
|
|
5
|
+
fetchImpl;
|
|
6
|
+
timeout;
|
|
7
|
+
debug;
|
|
8
|
+
constructor(baseUrl, auth, fetchImpl, timeout = 30000, debug = false) {
|
|
9
|
+
this.baseUrl = baseUrl;
|
|
10
|
+
this.auth = auth;
|
|
11
|
+
this.fetchImpl = fetchImpl;
|
|
12
|
+
this.timeout = timeout;
|
|
13
|
+
this.debug = debug;
|
|
14
|
+
}
|
|
15
|
+
async request(options) {
|
|
16
|
+
const url = this.buildUrl(options);
|
|
17
|
+
const headers = await this.buildHeaders(options);
|
|
18
|
+
const init = {
|
|
19
|
+
method: options.method,
|
|
20
|
+
headers,
|
|
21
|
+
signal: this.createAbortSignal(options.timeout || this.timeout)
|
|
22
|
+
};
|
|
23
|
+
if (options.body !== undefined) {
|
|
24
|
+
if (headers.get('Content-Type')?.includes('application/json'))
|
|
25
|
+
init.body = JSON.stringify(options.body);
|
|
26
|
+
else
|
|
27
|
+
init.body = options.body;
|
|
28
|
+
}
|
|
29
|
+
const shouldLog = this.debug || url.pathname.includes('/auth/');
|
|
30
|
+
if (shouldLog) {
|
|
31
|
+
console.info('[Client] Request:', {
|
|
32
|
+
url: url.toString(),
|
|
33
|
+
method: options.method,
|
|
34
|
+
headers: Object.fromEntries(headers.entries()),
|
|
35
|
+
body: options.body
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
try {
|
|
39
|
+
const response = await this.fetchImpl(url.toString(), init);
|
|
40
|
+
if (shouldLog) {
|
|
41
|
+
console.info('[Client] Response:', {
|
|
42
|
+
status: response.status,
|
|
43
|
+
statusText: response.statusText,
|
|
44
|
+
headers: Object.fromEntries(response.headers.entries())
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
if (!response.ok)
|
|
48
|
+
throw await this.createError(response, options);
|
|
49
|
+
if (response.status === 204 || response.headers.get('Content-Length') === '0')
|
|
50
|
+
return undefined;
|
|
51
|
+
const contentType = response.headers.get('Content-Type');
|
|
52
|
+
if (contentType?.includes('application/json'))
|
|
53
|
+
return (await response.json());
|
|
54
|
+
return (await response.text());
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
if (this.debug) {
|
|
58
|
+
console.error('[Client] Request failed:', {
|
|
59
|
+
url: url.toString(),
|
|
60
|
+
method: options.method,
|
|
61
|
+
error: error instanceof Error ? error.message : String(error),
|
|
62
|
+
errorName: error instanceof Error ? error.name : undefined
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
if (error instanceof Error && error.name === 'AbortError') {
|
|
66
|
+
throw new ClientError('Request timeout', 408, undefined, options);
|
|
67
|
+
}
|
|
68
|
+
throw error;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
buildUrl(options) {
|
|
72
|
+
let path = options.path;
|
|
73
|
+
if (options.params) {
|
|
74
|
+
for (const [key, value] of Object.entries(options.params)) {
|
|
75
|
+
path = path.replace(`{${key}}`, encodeURIComponent(String(value)));
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
const url = new URL(path, this.baseUrl);
|
|
79
|
+
if (options.query) {
|
|
80
|
+
for (const [key, value] of Object.entries(options.query)) {
|
|
81
|
+
if (value === undefined)
|
|
82
|
+
continue;
|
|
83
|
+
if (Array.isArray(value))
|
|
84
|
+
value.forEach((v) => url.searchParams.append(key, String(v)));
|
|
85
|
+
else
|
|
86
|
+
url.searchParams.set(key, String(value));
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return url;
|
|
90
|
+
}
|
|
91
|
+
async buildHeaders(options) {
|
|
92
|
+
const headers = new Headers(options.headers);
|
|
93
|
+
if (!headers.has('Content-Type') && options.body !== undefined)
|
|
94
|
+
headers.set('Content-Type', 'application/json');
|
|
95
|
+
if (!headers.has('Accept'))
|
|
96
|
+
headers.set('Accept', 'application/json');
|
|
97
|
+
if (this.auth.type !== 'none') {
|
|
98
|
+
const token = this.auth.credentials || (await this.auth.tokenProvider?.());
|
|
99
|
+
if (token) {
|
|
100
|
+
switch (this.auth.type) {
|
|
101
|
+
case 'apiKey':
|
|
102
|
+
case 'bearer':
|
|
103
|
+
headers.set('Authorization', `Bearer ${token}`);
|
|
104
|
+
break;
|
|
105
|
+
case 'session':
|
|
106
|
+
headers.set('Cookie', `session=${token}`);
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return headers;
|
|
112
|
+
}
|
|
113
|
+
createAbortSignal(timeout) {
|
|
114
|
+
const controller = new AbortController();
|
|
115
|
+
setTimeout(() => controller.abort(), timeout);
|
|
116
|
+
return controller.signal;
|
|
117
|
+
}
|
|
118
|
+
async createError(response, request) {
|
|
119
|
+
let message = `${response.status} ${response.statusText}`;
|
|
120
|
+
try {
|
|
121
|
+
const contentType = response.headers.get('Content-Type');
|
|
122
|
+
if (contentType?.includes('application/json')) {
|
|
123
|
+
const error = await response.json();
|
|
124
|
+
const validationErrors = error.issues ??
|
|
125
|
+
error.errors;
|
|
126
|
+
if (Array.isArray(validationErrors) && validationErrors.length > 0) {
|
|
127
|
+
const fieldErrors = validationErrors
|
|
128
|
+
.map((issue) => {
|
|
129
|
+
const rec = issue;
|
|
130
|
+
const path = Array.isArray(rec.path) && rec.path.length > 0
|
|
131
|
+
? rec.path.map(String).join('.')
|
|
132
|
+
: 'unknown';
|
|
133
|
+
return ` - ${path}: ${typeof rec.message === 'string' ? rec.message : 'Invalid'}`;
|
|
134
|
+
})
|
|
135
|
+
.join('\n');
|
|
136
|
+
message = `Validation failed:\n${fieldErrors}`;
|
|
137
|
+
}
|
|
138
|
+
else if (typeof error.message === 'string') {
|
|
139
|
+
message = error.message;
|
|
140
|
+
}
|
|
141
|
+
else if (error.error !== undefined) {
|
|
142
|
+
const e = error.error;
|
|
143
|
+
message = typeof e === 'string' ? e : JSON.stringify(e);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
const text = await response.text();
|
|
148
|
+
if (text)
|
|
149
|
+
message = text;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
catch {
|
|
153
|
+
// ignore parsing errors
|
|
154
|
+
}
|
|
155
|
+
return new ClientError(message, response.status, response, request);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=request-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-builder.js","sourceRoot":"","sources":["../../../../src/lib/client/internal/request-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type AuthConfig } from '../types.ts';
|
|
2
|
+
export interface SSEEvent<T = unknown> {
|
|
3
|
+
event?: string;
|
|
4
|
+
data: T;
|
|
5
|
+
id?: string;
|
|
6
|
+
retry?: number;
|
|
7
|
+
}
|
|
8
|
+
export type SSEStreamOptions = {
|
|
9
|
+
method?: string;
|
|
10
|
+
params?: Record<string, string | number | boolean>;
|
|
11
|
+
query?: Record<string, string | number | boolean | string[] | undefined>;
|
|
12
|
+
body?: unknown;
|
|
13
|
+
headers?: Record<string, string>;
|
|
14
|
+
timeout?: number;
|
|
15
|
+
};
|
|
16
|
+
export declare function streamSSE<T = unknown>(args: {
|
|
17
|
+
baseUrl: string;
|
|
18
|
+
auth: AuthConfig;
|
|
19
|
+
fetchImpl: typeof fetch;
|
|
20
|
+
path: string;
|
|
21
|
+
options?: SSEStreamOptions;
|
|
22
|
+
}): AsyncIterableIterator<SSEEvent<T>>;
|
|
23
|
+
//# sourceMappingURL=sse-stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sse-stream.d.ts","sourceRoot":"","sources":["../../../../src/lib/client/internal/sse-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAoC,MAAM,aAAa,CAAC;AAEhF,MAAM,WAAW,QAAQ,CAAC,CAAC,GAAG,OAAO;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,CAAC,CAAC;IACR,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IACzE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAuB,SAAS,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,EAAE,OAAO,KAAK,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC3B,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAyGrC"}
|