@karbonjs/api 0.3.2 → 0.3.4
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/server/proxy.d.ts.map +1 -1
- package/dist/server/proxy.js +120 -104
- package/dist/server/proxy.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/server/proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAqB,KAAK,cAAc,EAAoB,MAAM,mBAAmB,CAAA;AAE5F,MAAM,WAAW,WAAW;IAC1B,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAA;IACf,8DAA8D;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,qEAAqE;IACrE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,+DAA+D;IAC/D,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,yFAAyF;IACzF,SAAS,CAAC,EAAE,cAAc,GAAG,KAAK,CAAA;CACnC;AAED,+EAA+E;AAC/E,UAAU,YAAY;IACpB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,GAAG,EAAE,GAAG,CAAA;IACR,gBAAgB,EAAE,MAAM,MAAM,CAAA;CAC/B;AAED,KAAK,OAAO,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AASzD;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW;;;;;;
|
|
1
|
+
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/server/proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAqB,KAAK,cAAc,EAAoB,MAAM,mBAAmB,CAAA;AAE5F,MAAM,WAAW,WAAW;IAC1B,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAA;IACf,8DAA8D;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,qEAAqE;IACrE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,+DAA+D;IAC/D,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,yFAAyF;IACzF,SAAS,CAAC,EAAE,cAAc,GAAG,KAAK,CAAA;CACnC;AAED,+EAA+E;AAC/E,UAAU,YAAY;IACpB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,GAAG,EAAE,GAAG,CAAA;IACR,gBAAgB,EAAE,MAAM,MAAM,CAAA;CAC/B;AAED,KAAK,OAAO,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AASzD;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW;;;;;;EA8K9C"}
|
package/dist/server/proxy.js
CHANGED
|
@@ -57,121 +57,137 @@ export function createProxy(config) {
|
|
|
57
57
|
limiter = createRateLimiter(rateLimitConfig ?? undefined);
|
|
58
58
|
}
|
|
59
59
|
const handler = async (event) => {
|
|
60
|
-
const { request, params, url } = event;
|
|
61
|
-
const rawPath = params.path ?? '';
|
|
62
|
-
// 1. Sanitize path
|
|
63
|
-
let decodedPath;
|
|
64
60
|
try {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
return new Response('Forbidden path', { status: 403 });
|
|
72
|
-
}
|
|
73
|
-
// 2. Block forbidden prefixes
|
|
74
|
-
const firstSegment = rawPath.split('/')[0];
|
|
75
|
-
if (blockedPrefixes.includes(firstSegment)) {
|
|
76
|
-
return jsonResponse(404, 'Not found');
|
|
77
|
-
}
|
|
78
|
-
const path = `${prefix}/${rawPath}${url.search}`;
|
|
79
|
-
// 3. Client IP
|
|
80
|
-
let clientIp = '127.0.0.1';
|
|
81
|
-
try {
|
|
82
|
-
clientIp = event.getClientAddress();
|
|
83
|
-
}
|
|
84
|
-
catch { /* dev mode */ }
|
|
85
|
-
// 4. Rate limiting
|
|
86
|
-
let rl = null;
|
|
87
|
-
if (limiter) {
|
|
88
|
-
rl = limiter.check(clientIp, path);
|
|
89
|
-
if (!rl.allowed) {
|
|
90
|
-
return jsonResponse(429, 'Too many requests', {
|
|
91
|
-
'retry-after': String(rl.retryAfterSec ?? 60),
|
|
92
|
-
'x-ratelimit-limit': String(rl.limit),
|
|
93
|
-
'x-ratelimit-remaining': '0',
|
|
94
|
-
});
|
|
61
|
+
const { request, params, url } = event;
|
|
62
|
+
const rawPath = params.path ?? '';
|
|
63
|
+
// 1. Sanitize path
|
|
64
|
+
let decodedPath;
|
|
65
|
+
try {
|
|
66
|
+
decodedPath = decodeURIComponent(rawPath);
|
|
95
67
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
if (csrf && ['POST', 'PUT', 'PATCH', 'DELETE'].includes(request.method)) {
|
|
99
|
-
const origin = request.headers.get('origin');
|
|
100
|
-
const host = request.headers.get('host');
|
|
101
|
-
if (!origin) {
|
|
102
|
-
return jsonResponse(403, 'CSRF: Origin header required');
|
|
68
|
+
catch {
|
|
69
|
+
return new Response('Forbidden path', { status: 400 });
|
|
103
70
|
}
|
|
104
|
-
if (
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
71
|
+
if (decodedPath.includes('..') || rawPath.includes('%2e') || rawPath.includes('%2E') || rawPath.includes('//')) {
|
|
72
|
+
return new Response('Forbidden path', { status: 403 });
|
|
73
|
+
}
|
|
74
|
+
// 2. Block forbidden prefixes
|
|
75
|
+
const firstSegment = rawPath.split('/')[0];
|
|
76
|
+
if (blockedPrefixes.includes(firstSegment)) {
|
|
77
|
+
return jsonResponse(404, 'Not found');
|
|
78
|
+
}
|
|
79
|
+
const path = `${prefix}/${rawPath}${url.search}`;
|
|
80
|
+
// 3. Client IP
|
|
81
|
+
let clientIp = '127.0.0.1';
|
|
82
|
+
try {
|
|
83
|
+
clientIp = event.getClientAddress();
|
|
84
|
+
}
|
|
85
|
+
catch { /* dev mode */ }
|
|
86
|
+
// 4. Rate limiting
|
|
87
|
+
let rl = null;
|
|
88
|
+
if (limiter) {
|
|
89
|
+
rl = limiter.check(clientIp, path);
|
|
90
|
+
if (!rl.allowed) {
|
|
91
|
+
return jsonResponse(429, 'Too many requests', {
|
|
92
|
+
'retry-after': String(rl.retryAfterSec ?? 60),
|
|
93
|
+
'x-ratelimit-limit': String(rl.limit),
|
|
94
|
+
'x-ratelimit-remaining': '0',
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// 5. CSRF — mutating requests must come from same origin
|
|
99
|
+
if (csrf && ['POST', 'PUT', 'PATCH', 'DELETE'].includes(request.method)) {
|
|
100
|
+
const origin = request.headers.get('origin');
|
|
101
|
+
const host = request.headers.get('host');
|
|
102
|
+
if (!origin) {
|
|
103
|
+
return jsonResponse(403, 'CSRF: Origin header required');
|
|
104
|
+
}
|
|
105
|
+
if (host) {
|
|
106
|
+
try {
|
|
107
|
+
const originHost = new URL(origin).host;
|
|
108
|
+
if (originHost !== host) {
|
|
109
|
+
return jsonResponse(403, 'CSRF: Origin mismatch');
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
return jsonResponse(403, 'CSRF: Invalid origin');
|
|
109
114
|
}
|
|
110
115
|
}
|
|
111
|
-
|
|
112
|
-
|
|
116
|
+
}
|
|
117
|
+
// 6. Build headers
|
|
118
|
+
const headers = new Headers();
|
|
119
|
+
headers.set('content-type', request.headers.get('content-type') || 'application/json');
|
|
120
|
+
const auth = request.headers.get('authorization');
|
|
121
|
+
if (auth)
|
|
122
|
+
headers.set('authorization', auth);
|
|
123
|
+
const cookies = request.headers.get('cookie');
|
|
124
|
+
if (cookies)
|
|
125
|
+
headers.set('cookie', cookies);
|
|
126
|
+
headers.delete('x-forwarded-for');
|
|
127
|
+
headers.set('x-forwarded-for', clientIp);
|
|
128
|
+
// 7. Stream body with size check
|
|
129
|
+
let body = null;
|
|
130
|
+
if (request.method !== 'GET' && request.method !== 'HEAD' && request.body) {
|
|
131
|
+
const contentLength = request.headers.get('content-length');
|
|
132
|
+
if (contentLength && parseInt(contentLength) > maxBodySize) {
|
|
133
|
+
return jsonResponse(413, 'Request too large');
|
|
113
134
|
}
|
|
135
|
+
// NOTE: When no Content-Length header is present (e.g. chunked transfer encoding),
|
|
136
|
+
// the body size check above is bypassed. The backend server MUST enforce its own
|
|
137
|
+
// body size limits to prevent abuse via chunked requests.
|
|
138
|
+
body = request.body;
|
|
114
139
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
headers.set('x-forwarded-for', clientIp);
|
|
127
|
-
// 7. Stream body with size check
|
|
128
|
-
let body = null;
|
|
129
|
-
if (request.method !== 'GET' && request.method !== 'HEAD' && request.body) {
|
|
130
|
-
const contentLength = request.headers.get('content-length');
|
|
131
|
-
if (contentLength && parseInt(contentLength) > maxBodySize) {
|
|
132
|
-
return jsonResponse(413, 'Request too large');
|
|
140
|
+
// 8. Proxy to backend
|
|
141
|
+
const targetUrl = `${backend}${path}`;
|
|
142
|
+
let apiRes;
|
|
143
|
+
try {
|
|
144
|
+
apiRes = await fetch(targetUrl, {
|
|
145
|
+
method: request.method,
|
|
146
|
+
headers,
|
|
147
|
+
body,
|
|
148
|
+
// @ts-expect-error — duplex required for streaming body in Node
|
|
149
|
+
duplex: body ? 'half' : undefined,
|
|
150
|
+
});
|
|
133
151
|
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
152
|
+
catch (err) {
|
|
153
|
+
console.error(`[proxy] Backend unreachable: ${request.method} ${targetUrl}`, err);
|
|
154
|
+
return jsonResponse(502, 'Backend unreachable');
|
|
155
|
+
}
|
|
156
|
+
// Log backend errors for debugging
|
|
157
|
+
if (apiRes.status >= 500) {
|
|
158
|
+
const errBody = await apiRes.clone().text().catch(() => '');
|
|
159
|
+
console.error(`[proxy] Backend ${apiRes.status}: ${request.method} ${targetUrl}`, errBody);
|
|
160
|
+
}
|
|
161
|
+
// 9. Build response — stream back
|
|
162
|
+
const responseHeaders = new Headers();
|
|
163
|
+
responseHeaders.set('content-type', apiRes.headers.get('content-type') || 'application/json');
|
|
164
|
+
// Rate limit info (reuse the already-counted check from above — no second call)
|
|
165
|
+
if (rl) {
|
|
166
|
+
responseHeaders.set('x-ratelimit-limit', String(rl.limit));
|
|
167
|
+
responseHeaders.set('x-ratelimit-remaining', String(rl.remaining));
|
|
168
|
+
}
|
|
169
|
+
// Forward Set-Cookie
|
|
170
|
+
const setCookies = apiRes.headers.getSetCookie?.() ?? [];
|
|
171
|
+
for (const cookie of setCookies) {
|
|
172
|
+
responseHeaders.append('set-cookie', cookie);
|
|
173
|
+
}
|
|
174
|
+
if (setCookies.length === 0) {
|
|
175
|
+
const raw = apiRes.headers.get('set-cookie');
|
|
176
|
+
if (raw)
|
|
177
|
+
responseHeaders.set('set-cookie', raw);
|
|
178
|
+
}
|
|
179
|
+
return new Response(apiRes.body, {
|
|
180
|
+
status: apiRes.status,
|
|
181
|
+
headers: responseHeaders,
|
|
148
182
|
});
|
|
149
183
|
}
|
|
150
|
-
catch {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
// Rate limit info (reuse the already-counted check from above — no second call)
|
|
157
|
-
if (rl) {
|
|
158
|
-
responseHeaders.set('x-ratelimit-limit', String(rl.limit));
|
|
159
|
-
responseHeaders.set('x-ratelimit-remaining', String(rl.remaining));
|
|
160
|
-
}
|
|
161
|
-
// Forward Set-Cookie
|
|
162
|
-
const setCookies = apiRes.headers.getSetCookie?.() ?? [];
|
|
163
|
-
for (const cookie of setCookies) {
|
|
164
|
-
responseHeaders.append('set-cookie', cookie);
|
|
165
|
-
}
|
|
166
|
-
if (setCookies.length === 0) {
|
|
167
|
-
const raw = apiRes.headers.get('set-cookie');
|
|
168
|
-
if (raw)
|
|
169
|
-
responseHeaders.set('set-cookie', raw);
|
|
184
|
+
catch (err) {
|
|
185
|
+
console.error('[proxy] Unhandled error:', err);
|
|
186
|
+
return new Response(JSON.stringify({ message: 'Proxy error' }), {
|
|
187
|
+
status: 500,
|
|
188
|
+
headers: { 'content-type': 'application/json' },
|
|
189
|
+
});
|
|
170
190
|
}
|
|
171
|
-
return new Response(apiRes.body, {
|
|
172
|
-
status: apiRes.status,
|
|
173
|
-
headers: responseHeaders,
|
|
174
|
-
});
|
|
175
191
|
};
|
|
176
192
|
return {
|
|
177
193
|
GET: handler,
|
package/dist/server/proxy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/server/proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,iBAAiB,EAAyC,MAAM,mBAAmB,CAAA;AA2B5F,SAAS,YAAY,CAAC,MAAc,EAAE,OAAe,EAAE,KAA8B;IACnF,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE;QAC/D,MAAM;QACN,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,KAAK,EAAE;KAC1D,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,MAAmB;IAC7C,MAAM,EACJ,OAAO,EACP,MAAM,GAAG,MAAM,EACf,WAAW,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,EAC9B,eAAe,GAAG,CAAC,UAAU,CAAC,EAC9B,IAAI,GAAG,IAAI,EACX,SAAS,EAAE,eAAe,GAC3B,GAAG,MAAM,CAAA;IAEV,uBAAuB;IACvB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAA;QAC5B,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;QACvD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAA;IACpD,CAAC;IAED,sCAAsC;IACtC,IAAI,OAAO,GAAuB,IAAI,CAAA;IACtC,IAAI,eAAe,KAAK,KAAK,EAAE,CAAC;QAC9B,OAAO,GAAG,iBAAiB,CAAC,eAAe,IAAI,SAAS,CAAC,CAAA;IAC3D,CAAC;IAED,MAAM,OAAO,GAAY,KAAK,EAAE,KAAK,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/server/proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,iBAAiB,EAAyC,MAAM,mBAAmB,CAAA;AA2B5F,SAAS,YAAY,CAAC,MAAc,EAAE,OAAe,EAAE,KAA8B;IACnF,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE;QAC/D,MAAM;QACN,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,KAAK,EAAE;KAC1D,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,MAAmB;IAC7C,MAAM,EACJ,OAAO,EACP,MAAM,GAAG,MAAM,EACf,WAAW,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,EAC9B,eAAe,GAAG,CAAC,UAAU,CAAC,EAC9B,IAAI,GAAG,IAAI,EACX,SAAS,EAAE,eAAe,GAC3B,GAAG,MAAM,CAAA;IAEV,uBAAuB;IACvB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAA;QAC5B,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;QACvD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAA;IACpD,CAAC;IAED,sCAAsC;IACtC,IAAI,OAAO,GAAuB,IAAI,CAAA;IACtC,IAAI,eAAe,KAAK,KAAK,EAAE,CAAC;QAC9B,OAAO,GAAG,iBAAiB,CAAC,eAAe,IAAI,SAAS,CAAC,CAAA;IAC3D,CAAC;IAED,MAAM,OAAO,GAAY,KAAK,EAAE,KAAK,EAAE,EAAE;QACxC,IAAI,CAAC;YACJ,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,CAAA;YACtC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAA;YAEjC,mBAAmB;YACnB,IAAI,WAAmB,CAAA;YACvB,IAAI,CAAC;gBACH,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAA;YAC3C,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,QAAQ,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;YACxD,CAAC;YACD,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/G,OAAO,IAAI,QAAQ,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;YACxD,CAAC;YAED,8BAA8B;YAC9B,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;YAC1C,IAAI,eAAe,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3C,OAAO,YAAY,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;YACvC,CAAC;YAED,MAAM,IAAI,GAAG,GAAG,MAAM,IAAI,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE,CAAA;YAEhD,eAAe;YACf,IAAI,QAAQ,GAAG,WAAW,CAAA;YAC1B,IAAI,CAAC;gBAAC,QAAQ,GAAG,KAAK,CAAC,gBAAgB,EAAE,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;YAEpE,mBAAmB;YACnB,IAAI,EAAE,GAA0F,IAAI,CAAA;YACpG,IAAI,OAAO,EAAE,CAAC;gBACZ,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;gBAClC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;oBAChB,OAAO,YAAY,CAAC,GAAG,EAAE,mBAAmB,EAAE;wBAC5C,aAAa,EAAE,MAAM,CAAC,EAAE,CAAC,aAAa,IAAI,EAAE,CAAC;wBAC7C,mBAAmB,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC;wBACrC,uBAAuB,EAAE,GAAG;qBAC7B,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;YAED,yDAAyD;YACzD,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxE,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;gBAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;gBACxC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO,YAAY,CAAC,GAAG,EAAE,8BAA8B,CAAC,CAAA;gBAC1D,CAAC;gBACD,IAAI,IAAI,EAAE,CAAC;oBACT,IAAI,CAAC;wBACH,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAA;wBACvC,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;4BACxB,OAAO,YAAY,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAA;wBACnD,CAAC;oBACH,CAAC;oBAAC,MAAM,CAAC;wBACP,OAAO,YAAY,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAA;oBAClD,CAAC;gBACH,CAAC;YACH,CAAC;YAED,mBAAmB;YACnB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;YAC7B,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,kBAAkB,CAAC,CAAA;YAEtF,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;YACjD,IAAI,IAAI;gBAAE,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,CAAA;YAE5C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YAC7C,IAAI,OAAO;gBAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YAE3C,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAA;YACjC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAA;YAExC,iCAAiC;YACjC,IAAI,IAAI,GAAsC,IAAI,CAAA;YAClD,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBAC1E,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;gBAC3D,IAAI,aAAa,IAAI,QAAQ,CAAC,aAAa,CAAC,GAAG,WAAW,EAAE,CAAC;oBAC3D,OAAO,YAAY,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAA;gBAC/C,CAAC;gBACD,mFAAmF;gBACnF,iFAAiF;gBACjF,0DAA0D;gBAC1D,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;YACrB,CAAC;YAED,sBAAsB;YACtB,MAAM,SAAS,GAAG,GAAG,OAAO,GAAG,IAAI,EAAE,CAAA;YACrC,IAAI,MAAgB,CAAA;YACpB,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE;oBAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,OAAO;oBACP,IAAI;oBACJ,gEAAgE;oBAChE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;iBAClC,CAAC,CAAA;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,gCAAgC,OAAO,CAAC,MAAM,IAAI,SAAS,EAAE,EAAE,GAAG,CAAC,CAAA;gBACjF,OAAO,YAAY,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAA;YACjD,CAAC;YAED,mCAAmC;YACnC,IAAI,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;gBACzB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;gBAC3D,OAAO,CAAC,KAAK,CAAC,mBAAmB,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,IAAI,SAAS,EAAE,EAAE,OAAO,CAAC,CAAA;YAC5F,CAAC;YAED,kCAAkC;YAClC,MAAM,eAAe,GAAG,IAAI,OAAO,EAAE,CAAA;YACrC,eAAe,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,kBAAkB,CAAC,CAAA;YAE7F,gFAAgF;YAChF,IAAI,EAAE,EAAE,CAAC;gBACP,eAAe,CAAC,GAAG,CAAC,mBAAmB,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;gBAC1D,eAAe,CAAC,GAAG,CAAC,uBAAuB,EAAE,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;YACpE,CAAC;YAED,qBAAqB;YACrB,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,CAAA;YACxD,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;gBAChC,eAAe,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;YAC9C,CAAC;YACD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;gBAC5C,IAAI,GAAG;oBAAE,eAAe,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,CAAA;YACjD,CAAC;YAED,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE;gBAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,OAAO,EAAE,eAAe;aACzB,CAAC,CAAA;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAA;YAC9C,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE;gBAC9D,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAChD,CAAC,CAAA;QACH,CAAC;IACF,CAAC,CAAA;IAED,OAAO;QACL,GAAG,EAAE,OAAO;QACZ,IAAI,EAAE,OAAO;QACb,GAAG,EAAE,OAAO;QACZ,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,OAAO;KAChB,CAAA;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@karbonjs/api",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.4",
|
|
4
4
|
"description": "Type-safe API client for Karbon backends with SSR and client support",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"dist"
|
|
20
20
|
],
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@karbonjs/types": "0.3.
|
|
22
|
+
"@karbonjs/types": "0.3.4"
|
|
23
23
|
},
|
|
24
24
|
"publishConfig": {
|
|
25
25
|
"access": "public"
|