universal-client 0.0.9-rc.5 → 0.0.10
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/index.d.mts +67 -1
- package/dist/index.d.ts +67 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +5 -3
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.d.mts
CHANGED
|
@@ -18,7 +18,14 @@ interface WebSocketDelegate {
|
|
|
18
18
|
onError(callback: (event: Event) => void): () => void;
|
|
19
19
|
onMessage(callback: (data: unknown) => void): () => void;
|
|
20
20
|
}
|
|
21
|
+
interface SseOpenOptions {
|
|
22
|
+
method?: 'GET' | 'POST';
|
|
23
|
+
body?: unknown;
|
|
24
|
+
headers?: Record<string, string>;
|
|
25
|
+
url?: string;
|
|
26
|
+
}
|
|
21
27
|
interface ServerSentEventDelegate {
|
|
28
|
+
open(options?: SseOpenOptions): void;
|
|
22
29
|
close(): void;
|
|
23
30
|
onOpen(callback: (event: Event) => void): () => void;
|
|
24
31
|
onError(callback: (event: Event) => void): () => void;
|
|
@@ -131,6 +138,65 @@ declare function withDelegate<const Options extends DelegateOptions & {
|
|
|
131
138
|
declare function withDelegate<const Options extends DelegateOptions>(options: Options, ...features: DelegateFeature[]): Feature<unknown, {
|
|
132
139
|
delegate: DelegateFromOptions<Options>;
|
|
133
140
|
}>;
|
|
141
|
+
type WithNameOption = {
|
|
142
|
+
name?: string;
|
|
143
|
+
};
|
|
144
|
+
type HttpDelegateShortcutOptions = Omit<HttpDelegateOptions, 'type'> & {
|
|
145
|
+
impl: 'fetch' | 'axios' | 'better-fetch';
|
|
146
|
+
} & WithNameOption;
|
|
147
|
+
type FetchDelegateShortcutOptions = Omit<CreateFetchDelegateOptions, 'type' | 'impl'> & WithNameOption;
|
|
148
|
+
type AxiosDelegateShortcutOptions = Omit<CreateAxiosDelegateOptions, 'type' | 'impl'> & WithNameOption;
|
|
149
|
+
type BetterFetchDelegateShortcutOptions = Omit<CreateBetterFetchDelegateOptions, 'type' | 'impl'> & WithNameOption;
|
|
150
|
+
type SseDelegateShortcutOptions = CreateServerSentEventDelegateOptions & WithNameOption;
|
|
151
|
+
type WebSocketDelegateShortcutOptions = CreateWebSocketDelegateOptions & WithNameOption;
|
|
152
|
+
declare function withHttpDelegate<const Options extends HttpDelegateShortcutOptions & {
|
|
153
|
+
name: string;
|
|
154
|
+
}>(options: Options, ...features: DelegateFeature[]): Feature<unknown, {
|
|
155
|
+
[key in Options['name']]: HttpDelegate;
|
|
156
|
+
}>;
|
|
157
|
+
declare function withHttpDelegate(options: HttpDelegateShortcutOptions, ...features: DelegateFeature[]): Feature<unknown, {
|
|
158
|
+
delegate: HttpDelegate;
|
|
159
|
+
}>;
|
|
160
|
+
declare function withFetchDelegate<const Options extends FetchDelegateShortcutOptions & {
|
|
161
|
+
name: string;
|
|
162
|
+
}>(options: Options, ...features: DelegateFeature[]): Feature<unknown, {
|
|
163
|
+
[key in Options['name']]: HttpDelegate;
|
|
164
|
+
}>;
|
|
165
|
+
declare function withFetchDelegate(options: FetchDelegateShortcutOptions, ...features: DelegateFeature[]): Feature<unknown, {
|
|
166
|
+
delegate: HttpDelegate;
|
|
167
|
+
}>;
|
|
168
|
+
declare function withAxiosDelegate<const Options extends AxiosDelegateShortcutOptions & {
|
|
169
|
+
name: string;
|
|
170
|
+
}>(options: Options, ...features: DelegateFeature[]): Feature<unknown, {
|
|
171
|
+
[key in Options['name']]: HttpDelegate;
|
|
172
|
+
}>;
|
|
173
|
+
declare function withAxiosDelegate(options: AxiosDelegateShortcutOptions, ...features: DelegateFeature[]): Feature<unknown, {
|
|
174
|
+
delegate: HttpDelegate;
|
|
175
|
+
}>;
|
|
176
|
+
declare function withBetterFetchDelegate<const Options extends BetterFetchDelegateShortcutOptions & {
|
|
177
|
+
name: string;
|
|
178
|
+
}>(options: Options, ...features: DelegateFeature[]): Feature<unknown, {
|
|
179
|
+
[key in Options['name']]: HttpDelegate;
|
|
180
|
+
}>;
|
|
181
|
+
declare function withBetterFetchDelegate(options: BetterFetchDelegateShortcutOptions, ...features: DelegateFeature[]): Feature<unknown, {
|
|
182
|
+
delegate: HttpDelegate;
|
|
183
|
+
}>;
|
|
184
|
+
declare function withSseDelegate<const Options extends SseDelegateShortcutOptions & {
|
|
185
|
+
name: string;
|
|
186
|
+
}>(options: Options, ...features: DelegateFeature[]): Feature<unknown, {
|
|
187
|
+
[key in Options['name']]: ServerSentEventDelegate;
|
|
188
|
+
}>;
|
|
189
|
+
declare function withSseDelegate(options: SseDelegateShortcutOptions, ...features: DelegateFeature[]): Feature<unknown, {
|
|
190
|
+
delegate: ServerSentEventDelegate;
|
|
191
|
+
}>;
|
|
192
|
+
declare function withWebSocketDelegate<const Options extends WebSocketDelegateShortcutOptions & {
|
|
193
|
+
name: string;
|
|
194
|
+
}>(options: Options, ...features: DelegateFeature[]): Feature<unknown, {
|
|
195
|
+
[key in Options['name']]: WebSocketDelegate;
|
|
196
|
+
}>;
|
|
197
|
+
declare function withWebSocketDelegate(options: WebSocketDelegateShortcutOptions, ...features: DelegateFeature[]): Feature<unknown, {
|
|
198
|
+
delegate: WebSocketDelegate;
|
|
199
|
+
}>;
|
|
134
200
|
|
|
135
201
|
interface Hooks<Input> {
|
|
136
202
|
onInit?: (input: Input) => void;
|
|
@@ -255,4 +321,4 @@ declare function universalClient<A, B, C, D, E, F, G, H, I>(featureA: Feature<un
|
|
|
255
321
|
declare function universalClient<A, B, C, D, E, F, G, H, I, J>(featureA: Feature<unknown, A>, featureB: Feature<A, B>, featureC: Feature<Merge<A, B>, C>, featureD: Feature<Merge<Merge<A, B>, C>, D>, featureE: Feature<Merge<Merge<Merge<A, B>, C>, D>, E>, featureF: Feature<Merge<Merge<Merge<Merge<A, B>, C>, D>, E>, F>, featureG: Feature<Merge<Merge<Merge<Merge<Merge<A, B>, C>, D>, E>, F>, G>, featureH: Feature<Merge<Merge<Merge<Merge<Merge<Merge<A, B>, C>, D>, E>, F>, G>, H>, featureI: Feature<Merge<Merge<Merge<Merge<Merge<Merge<Merge<A, B>, C>, D>, E>, F>, G>, H>, I>, featureJ: Feature<Merge<Merge<Merge<Merge<Merge<Merge<Merge<Merge<A, B>, C>, D>, E>, F>, G>, H>, I>, J>): Merge<Merge<Merge<Merge<Merge<Merge<Merge<Merge<Merge<A, B>, C>, D>, E>, F>, G>, H>, I>, J>;
|
|
256
322
|
declare function universalClient(...withFeatures: Feature<unknown, unknown>[]): unknown;
|
|
257
323
|
|
|
258
|
-
export { type Delegate, type DelegateFeature, type Feature, type Hooks$1 as Hooks, type HooksInternal, type HttpDelegate, type HttpRequestOptions, type InterceptorConfig, type ServerSentEventDelegate, type WebSocketDelegate, universalClient, withDelegate, withEnvironments, withHooks, withInterceptor, withMethods, withOffline, withTelemetry };
|
|
324
|
+
export { type Delegate, type DelegateFeature, type Feature, type Hooks$1 as Hooks, type HooksInternal, type HttpDelegate, type HttpRequestOptions, type InterceptorConfig, type ServerSentEventDelegate, type SseOpenOptions, type WebSocketDelegate, universalClient, withAxiosDelegate, withBetterFetchDelegate, withDelegate, withEnvironments, withFetchDelegate, withHooks, withHttpDelegate, withInterceptor, withMethods, withOffline, withSseDelegate, withTelemetry, withWebSocketDelegate };
|
package/dist/index.d.ts
CHANGED
|
@@ -18,7 +18,14 @@ interface WebSocketDelegate {
|
|
|
18
18
|
onError(callback: (event: Event) => void): () => void;
|
|
19
19
|
onMessage(callback: (data: unknown) => void): () => void;
|
|
20
20
|
}
|
|
21
|
+
interface SseOpenOptions {
|
|
22
|
+
method?: 'GET' | 'POST';
|
|
23
|
+
body?: unknown;
|
|
24
|
+
headers?: Record<string, string>;
|
|
25
|
+
url?: string;
|
|
26
|
+
}
|
|
21
27
|
interface ServerSentEventDelegate {
|
|
28
|
+
open(options?: SseOpenOptions): void;
|
|
22
29
|
close(): void;
|
|
23
30
|
onOpen(callback: (event: Event) => void): () => void;
|
|
24
31
|
onError(callback: (event: Event) => void): () => void;
|
|
@@ -131,6 +138,65 @@ declare function withDelegate<const Options extends DelegateOptions & {
|
|
|
131
138
|
declare function withDelegate<const Options extends DelegateOptions>(options: Options, ...features: DelegateFeature[]): Feature<unknown, {
|
|
132
139
|
delegate: DelegateFromOptions<Options>;
|
|
133
140
|
}>;
|
|
141
|
+
type WithNameOption = {
|
|
142
|
+
name?: string;
|
|
143
|
+
};
|
|
144
|
+
type HttpDelegateShortcutOptions = Omit<HttpDelegateOptions, 'type'> & {
|
|
145
|
+
impl: 'fetch' | 'axios' | 'better-fetch';
|
|
146
|
+
} & WithNameOption;
|
|
147
|
+
type FetchDelegateShortcutOptions = Omit<CreateFetchDelegateOptions, 'type' | 'impl'> & WithNameOption;
|
|
148
|
+
type AxiosDelegateShortcutOptions = Omit<CreateAxiosDelegateOptions, 'type' | 'impl'> & WithNameOption;
|
|
149
|
+
type BetterFetchDelegateShortcutOptions = Omit<CreateBetterFetchDelegateOptions, 'type' | 'impl'> & WithNameOption;
|
|
150
|
+
type SseDelegateShortcutOptions = CreateServerSentEventDelegateOptions & WithNameOption;
|
|
151
|
+
type WebSocketDelegateShortcutOptions = CreateWebSocketDelegateOptions & WithNameOption;
|
|
152
|
+
declare function withHttpDelegate<const Options extends HttpDelegateShortcutOptions & {
|
|
153
|
+
name: string;
|
|
154
|
+
}>(options: Options, ...features: DelegateFeature[]): Feature<unknown, {
|
|
155
|
+
[key in Options['name']]: HttpDelegate;
|
|
156
|
+
}>;
|
|
157
|
+
declare function withHttpDelegate(options: HttpDelegateShortcutOptions, ...features: DelegateFeature[]): Feature<unknown, {
|
|
158
|
+
delegate: HttpDelegate;
|
|
159
|
+
}>;
|
|
160
|
+
declare function withFetchDelegate<const Options extends FetchDelegateShortcutOptions & {
|
|
161
|
+
name: string;
|
|
162
|
+
}>(options: Options, ...features: DelegateFeature[]): Feature<unknown, {
|
|
163
|
+
[key in Options['name']]: HttpDelegate;
|
|
164
|
+
}>;
|
|
165
|
+
declare function withFetchDelegate(options: FetchDelegateShortcutOptions, ...features: DelegateFeature[]): Feature<unknown, {
|
|
166
|
+
delegate: HttpDelegate;
|
|
167
|
+
}>;
|
|
168
|
+
declare function withAxiosDelegate<const Options extends AxiosDelegateShortcutOptions & {
|
|
169
|
+
name: string;
|
|
170
|
+
}>(options: Options, ...features: DelegateFeature[]): Feature<unknown, {
|
|
171
|
+
[key in Options['name']]: HttpDelegate;
|
|
172
|
+
}>;
|
|
173
|
+
declare function withAxiosDelegate(options: AxiosDelegateShortcutOptions, ...features: DelegateFeature[]): Feature<unknown, {
|
|
174
|
+
delegate: HttpDelegate;
|
|
175
|
+
}>;
|
|
176
|
+
declare function withBetterFetchDelegate<const Options extends BetterFetchDelegateShortcutOptions & {
|
|
177
|
+
name: string;
|
|
178
|
+
}>(options: Options, ...features: DelegateFeature[]): Feature<unknown, {
|
|
179
|
+
[key in Options['name']]: HttpDelegate;
|
|
180
|
+
}>;
|
|
181
|
+
declare function withBetterFetchDelegate(options: BetterFetchDelegateShortcutOptions, ...features: DelegateFeature[]): Feature<unknown, {
|
|
182
|
+
delegate: HttpDelegate;
|
|
183
|
+
}>;
|
|
184
|
+
declare function withSseDelegate<const Options extends SseDelegateShortcutOptions & {
|
|
185
|
+
name: string;
|
|
186
|
+
}>(options: Options, ...features: DelegateFeature[]): Feature<unknown, {
|
|
187
|
+
[key in Options['name']]: ServerSentEventDelegate;
|
|
188
|
+
}>;
|
|
189
|
+
declare function withSseDelegate(options: SseDelegateShortcutOptions, ...features: DelegateFeature[]): Feature<unknown, {
|
|
190
|
+
delegate: ServerSentEventDelegate;
|
|
191
|
+
}>;
|
|
192
|
+
declare function withWebSocketDelegate<const Options extends WebSocketDelegateShortcutOptions & {
|
|
193
|
+
name: string;
|
|
194
|
+
}>(options: Options, ...features: DelegateFeature[]): Feature<unknown, {
|
|
195
|
+
[key in Options['name']]: WebSocketDelegate;
|
|
196
|
+
}>;
|
|
197
|
+
declare function withWebSocketDelegate(options: WebSocketDelegateShortcutOptions, ...features: DelegateFeature[]): Feature<unknown, {
|
|
198
|
+
delegate: WebSocketDelegate;
|
|
199
|
+
}>;
|
|
134
200
|
|
|
135
201
|
interface Hooks<Input> {
|
|
136
202
|
onInit?: (input: Input) => void;
|
|
@@ -255,4 +321,4 @@ declare function universalClient<A, B, C, D, E, F, G, H, I>(featureA: Feature<un
|
|
|
255
321
|
declare function universalClient<A, B, C, D, E, F, G, H, I, J>(featureA: Feature<unknown, A>, featureB: Feature<A, B>, featureC: Feature<Merge<A, B>, C>, featureD: Feature<Merge<Merge<A, B>, C>, D>, featureE: Feature<Merge<Merge<Merge<A, B>, C>, D>, E>, featureF: Feature<Merge<Merge<Merge<Merge<A, B>, C>, D>, E>, F>, featureG: Feature<Merge<Merge<Merge<Merge<Merge<A, B>, C>, D>, E>, F>, G>, featureH: Feature<Merge<Merge<Merge<Merge<Merge<Merge<A, B>, C>, D>, E>, F>, G>, H>, featureI: Feature<Merge<Merge<Merge<Merge<Merge<Merge<Merge<A, B>, C>, D>, E>, F>, G>, H>, I>, featureJ: Feature<Merge<Merge<Merge<Merge<Merge<Merge<Merge<Merge<A, B>, C>, D>, E>, F>, G>, H>, I>, J>): Merge<Merge<Merge<Merge<Merge<Merge<Merge<Merge<Merge<A, B>, C>, D>, E>, F>, G>, H>, I>, J>;
|
|
256
322
|
declare function universalClient(...withFeatures: Feature<unknown, unknown>[]): unknown;
|
|
257
323
|
|
|
258
|
-
export { type Delegate, type DelegateFeature, type Feature, type Hooks$1 as Hooks, type HooksInternal, type HttpDelegate, type HttpRequestOptions, type InterceptorConfig, type ServerSentEventDelegate, type WebSocketDelegate, universalClient, withDelegate, withEnvironments, withHooks, withInterceptor, withMethods, withOffline, withTelemetry };
|
|
324
|
+
export { type Delegate, type DelegateFeature, type Feature, type Hooks$1 as Hooks, type HooksInternal, type HttpDelegate, type HttpRequestOptions, type InterceptorConfig, type ServerSentEventDelegate, type SseOpenOptions, type WebSocketDelegate, universalClient, withAxiosDelegate, withBetterFetchDelegate, withDelegate, withEnvironments, withFetchDelegate, withHooks, withHttpDelegate, withInterceptor, withMethods, withOffline, withSseDelegate, withTelemetry, withWebSocketDelegate };
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
'use strict';/**
|
|
2
|
-
* universal-client v0.0.
|
|
3
|
-
* (c)
|
|
2
|
+
* universal-client v0.0.10
|
|
3
|
+
* (c) 2026 Kevin Bonnoron
|
|
4
4
|
* @license MIT
|
|
5
5
|
*/
|
|
6
|
-
var H=Object.defineProperty;var h=(t,e)=>()=>(t&&(e=t(t=0)),e);var M=(t,e)=>{for(var a in e)H(t,a,{get:e[a],enumerable:true});};var k={};M(k,{createAxiosDelegate:()=>I});async function I(t){let e;try{e=await new Function("moduleName","return import(moduleName)")("axios");}catch{e=null;}if(!e)throw new Error("Axios is not installed. Please install axios to use the axios delegate.");let a=e.default,{baseURL:n,...o}=t,r=a.create({baseURL:n,...o});return {get(s,i){return r.get(s,{headers:i?.headers}).then(c=>c.data)},post(s,i,c){return r.post(s,i,{headers:c?.headers}).then(p=>p.data)},patch(s,i,c){return r.patch(s,i,{headers:c?.headers}).then(p=>p.data)},put(s,i,c){return r.put(s,i,{headers:c?.headers}).then(p=>p.data)},delete(s,i){return r.delete(s,{headers:i?.headers}).then(c=>c.data)}}}var C=h(()=>{});var T={};M(T,{createBetterFetchDelegate:()=>P});async function P(t){let e;try{e=await new Function("moduleName","return import(moduleName)")("@better-fetch/fetch");}catch{e=null;}if(!e)throw new Error("@better-fetch/fetch is not installed. Please install @better-fetch/fetch to use the better-fetch delegate.");let{createFetch:a}=e,{baseURL:n,...o}=t,r=a({baseURL:n,...o});return {get(s,i){return r(s,{headers:i?.headers}).then(c=>c.data)},post(s,i,c){return r(s,{method:"POST",body:i,headers:c?.headers}).then(p=>p.data)},patch(s,i,c){return r(s,{method:"PATCH",body:i,headers:c?.headers}).then(p=>p.data)},put(s,i,c){return r(s,{method:"PUT",body:i,headers:c?.headers}).then(p=>p.data)},delete(s,i){return r(s,{method:"DELETE",headers:i?.headers}).then(c=>c.data)}}}var F=h(()=>{});function B(t){return async e=>{if(!e.ok){let a=`HTTP ${e.status}: ${e.statusText}`;try{let n=await e.clone().json();n.error?a=n.error:n.message&&(a=n.message);}catch{}throw new Error(a)}return t==="json"?e.json():t==="text"?e.text():e}}function R(t){let e=new URLSearchParams;for(let[a,n]of Object.entries(t??{}))if(n!=null)if(n instanceof Date)e.append(a,n.toISOString());else if(Array.isArray(n))for(let o of n)e.append(`${a}[]`,o?.toString()??"");else e.append(a,n.toString());return e.size?`?${e}`:""}function y({baseURL:t,format:e="json"}){function a(n,o,r,{params:s={},headers:i={}}={}){let c={method:n,headers:{...i}};return r&&(c.body=JSON.stringify(r)),fetch(`${t}${o}${R(s)}`,c).then(B(e))}return {get(n,{params:o={},headers:r={}}={}){return a("GET",n,void 0,{params:o,headers:r})},post(n,o,{params:r={},headers:s={}}={}){return a("POST",n,o,{params:r,headers:s})},patch(n,o,{params:r={},headers:s={}}={}){return a("PATCH",n,o,{params:r,headers:s})},put(n,o,{params:r={},headers:s={}}={}){return a("PUT",n,o,{params:r,headers:s})},delete(n,{params:o={},headers:r={}}={}){return a("DELETE",n,void 0,{params:o,headers:r})}}}async function b(t){if(t.impl==="axios"){let{createAxiosDelegate:e}=await Promise.resolve().then(()=>(C(),k));return e(t)}if(t.impl==="better-fetch"){let{createBetterFetchDelegate:e}=await Promise.resolve().then(()=>(F(),T));return e(t)}return y(t)}async function S({baseURL:t}){if(typeof EventSource>"u")throw new Error("EventSource is not available. This delegate only works in browser environments.");let e=new EventSource(t),a=new Set,n=new Set,o=new Set;return e.onmessage=r=>{for(let s of n)s(r.data);},e.addEventListener("open",r=>{for(let s of a)s(r);}),e.addEventListener("message",r=>{for(let s of n)s(r.data);}),e.addEventListener("error",r=>{for(let s of o)s(r);}),{close(){e.close();},onOpen(r){return a.add(r),()=>a.delete(r)},onError(r){return o.add(r),()=>o.delete(r)},onMessage(r){return n.add(r),()=>n.delete(r)},subscribe(r,s){let i=c=>s(c.data);return e.addEventListener(r,i),()=>e.removeEventListener(r,i)}}}function O({baseURL:t,protocols:e,reconnectInterval:a=5e3,maxReconnectAttempts:n=10}){let o=null,r=null,s=0,i=new Set,c=new Set,p=new Set,m=new Set;function f(){r!==null||s>=n||(s++,r=window.setTimeout(()=>{r=null,d.connect();},a));}let d={connect:()=>{o&&o.close(),o=new WebSocket(t,e),o.onopen=u=>{s=0;for(let g of i)g(u);},o.onclose=u=>{for(let g of p)g(u);f();},o.onerror=u=>{for(let g of m)g(u);},o.onmessage=u=>{let g;try{g=JSON.parse(u.data);}catch{g=u.data;}for(let l of c)l(g);};},close(){o&&(o.close(),o=null),r!==null&&(window.clearTimeout(r),r=null);},send(u){o&&o.readyState===WebSocket.OPEN?o.send(JSON.stringify(u)):console.warn("WebSocket is not connected. Message not sent.");},onOpen(u){return i.add(u),()=>i.delete(u)},onClose(u){return p.add(u),()=>p.delete(u)},onError(u){return m.add(u),()=>m.delete(u)},onMessage(u){return c.add(u),()=>c.delete(u)}};return d.connect(),d}function w(t){return typeof t=="object"&&t!==null&&"get"in t&&"post"in t&&"patch"in t&&"put"in t&&"delete"in t}function E(t){return typeof t=="object"&&t!==null&&"connect"in t&&"send"in t&&"close"in t}var W=t=>typeof t=="object"&&t!==null&&"type"in t;function x(t){if(W(t)){if(t.type==="http")return L(t);if(t.type==="websocket")return O(t);if(t.type==="server-sent-event")return $(t);throw new Error("Unsupported delegate type")}return t}function L(t){let e=null,a=()=>(e||(e=b(t)),e);return {async get(n,o){return (await a()).get(n,o)},async post(n,o,r){return (await a()).post(n,o,r)},async patch(n,o,r){return (await a()).patch(n,o,r)},async put(n,o,r){return (await a()).put(n,o,r)},async delete(n,o){return (await a()).delete(n,o)}}}function $(t){let e=null,a=()=>(e||(e=S(t)),e);return {close(){e&&e.then(n=>n.close()).catch(console.error);},onOpen(n){let o=null;return a().then(r=>{o=r.onOpen(n);}).catch(r=>console.error("[SSE] Failed to attach onOpen handler:",r)),()=>{o&&o();}},onError(n){let o=null;return a().then(r=>{o=r.onError(n);}).catch(r=>console.error("[SSE] Failed to attach onError handler:",r)),()=>{o&&o();}},onMessage(n){let o=null;return a().then(r=>{o=r.onMessage(n);}).catch(r=>console.error("[SSE] Failed to attach onMessage handler:",r)),()=>{o&&o();}},subscribe(n,o){let r=null;return a().then(s=>{r=s.subscribe(n,o);}).catch(s=>console.error(`[SSE] Failed to subscribe to event "${n}":`,s)),()=>{r&&r();}}}}function v(t,e){let a=n=>{let o=t[n];return async(r,s,i)=>{let c=n==="get"||n==="delete",p=c?void 0:s,f={method:n,url:r,headers:(c?s:i)?.headers??{},body:p};try{if(e.before){let g=await e.before(f);g&&typeof g=="object"&&(f={...f,...g});}let d=f.headers?{headers:f.headers}:void 0,u=c?await o(f.url,d):await o(f.url,f.body,d);if(e.after){let g=await e.after({method:n,url:f.url,response:u});g&&typeof g=="object"&&(u={...u,...g});}return u}catch(d){throw e.error&&await e.error(n,f.url,d,f.body),d}}};return {get:a("get"),post:a("post"),patch:a("patch"),put:a("put"),delete:a("delete")}}function A(t,e){return {...t,connect:()=>{e.beforeConnect&&Promise.resolve(e.beforeConnect()).catch(console.error),t.connect(),e.afterConnect&&Promise.resolve(e.afterConnect()).catch(console.error);},send:a=>{e.beforeSend&&Promise.resolve(e.beforeSend(a)).catch(console.error),t.send(a),e.afterSend&&Promise.resolve(e.afterSend(a)).catch(console.error);},close:()=>{e.beforeClose&&Promise.resolve(e.beforeClose()).catch(console.error),t.close(),e.afterClose&&Promise.resolve(e.afterClose()).catch(console.error);}}}function we(t,...e){return a=>{let{delegate:n,...o}=e.reduce((s,i)=>{let c=i(s);return Object.assign({},s,c)},{...a,delegate:x(t)});return {[t.name??"delegate"]:n,...o}}}function De(t){return ()=>({...t})}function he(t){return e=>({...t(e),...e})}function q(t){let e=Object.keys(t.environments),a=t.default||e[0],n=a;function o(){return n}function r(i){if(t.environments[i])n=i,console.info(`[ENVIRONMENTS] Switched to environment: ${i} (${t.environments[i]})`);else {let c=t.fallback||a;console.warn(`[ENVIRONMENTS] Environment "${i}" not found, falling back to "${String(c)}"`),n=c;}}function s(){return t.environments[n]||t.environments[Object.keys(t.environments)[0]]}return {getCurrentEnvironment:o,setEnvironment:r,getBaseURL:s}}function G(t,e){let a=n=>{let o=e.getBaseURL();if(n.startsWith("http"))return n;let r=o.replace(/\/$/,""),s=n.startsWith("/")?n:`/${n}`,i=`${r}${s}`;return console.info(`[ENVIRONMENTS] Building URL: ${r} + ${s} = ${i}`),i};return v(t,{before:n=>({url:a(n.url)})})}function N(t,e){return A(t,{beforeConnect:()=>{console.info(`[ENVIRONMENTS] WebSocket connecting to: ${e.getBaseURL()}`);}})}function U(t,e){return w(t)?G(t,e):E(t)?N(t,e):t}function ke(t){return e=>{let{name:a}=t,n=q(t);return {...e,[a]:U(e[a],n),environments:n}}}function Fe(t){return ({delegate:e,...a})=>{let{name:n,...o}=t;return w(e)?{...a,delegate:v(e,o)}:{...a,delegate:e}}}function j(){return typeof navigator<"u"&&navigator.onLine!==void 0?navigator.onLine:true}function J(t){let e=new Map,a=t.cacheTTL??3e5;function n(s,i,c){let p=c?JSON.stringify(c):"";return `${s}:${i}:${p}`}function o(s){let i=e.get(s);return i?Date.now()-i.timestamp>i.ttl?(e.delete(s),null):i.data:null}function r(s,i){e.set(s,{data:i,timestamp:Date.now(),ttl:a});}return {isOnline:j,clearCache:()=>e.clear(),getCacheSize:()=>e.size,getFromCache:o,setInCache:r,generateCacheKey:n}}function K(t,e,a){let n=a.strategy??"cache-first",o=r=>{let s=t[r];return async(i,c,p)=>{let m=r==="get"||r==="delete",f=m?void 0:c,d=m?c:p,u=e.generateCacheKey(String(r),i,f);if(n==="cache-first"){let g=e.getFromCache(u);if(g)return console.info(`[OFFLINE] Cache hit for ${r} ${i}`),g;if(e.isOnline())try{let l=m?await s(i,d):await s(i,f,d);return e.setInCache(u,l),l}catch(l){throw console.error(`[OFFLINE] Network error for ${r} ${i}:`,l),l}throw new Error(`[OFFLINE] No cache available and offline for ${r} ${i}`)}if(n==="network-first"){if(e.isOnline())try{let l=m?await s(i,d):await s(i,f,d);return e.setInCache(u,l),l}catch(l){let D=e.getFromCache(u);if(D)return console.warn(`[OFFLINE] Network failed, using cache for ${r} ${i}`),D;throw l}let g=e.getFromCache(u);if(g)return g;throw new Error(`[OFFLINE] Offline and no cache for ${r} ${i}`)}if(n==="network-only"){if(!e.isOnline())throw new Error(`[OFFLINE] Network unavailable for ${r} ${i}`);return m?await s(i,d):await s(i,f,d)}throw new Error(`[OFFLINE] Unknown strategy: ${n}`)}};return {get:o("get"),post:o("post"),patch:o("patch"),put:o("put"),delete:o("delete")}}function _(t,e,a){return w(t)?K(t,e,a):t}function Oe(t={}){return ({delegate:e,...a})=>{let n=J(t);return {...a,delegate:_(e,n,t),offline:n}}}function z({enableMetrics:t=false,enableTracing:e=false,enableLogging:a=false,onEvent:n=()=>{},onMetrics:o=()=>{}}){let r=[],s={requests:{total:0,success:0,errors:0},latency:{avg:0,min:Number.MAX_SAFE_INTEGER,max:Number.MIN_SAFE_INTEGER}};function i(u){r.push(u),m(u),a&&d(u),n(u);}function c(){return e?Math.random().toString(36).substring(2,15):void 0}function p(){return {requests:t?s.requests:{total:0,success:0,errors:0},latency:t?s.latency:{avg:0,min:0,max:0}}}function m(u){if(t){switch(u.type){case "request":s.requests.total++;break;case "response":s.requests.success++,u.duration&&f(u.duration);break;case "error":s.requests.errors++,u.duration&&f(u.duration);break}o(s);}}function f(u){let g=r.filter(l=>l.duration!==void 0).map(l=>l.duration).filter(l=>l>0);g.length>0&&(s.latency.avg=g.reduce((l,D)=>l+D,0)/g.length,s.latency.min=Math.min(...g),s.latency.max=Math.max(...g));}function d(u){let g=u.type==="error"?"error":"info",l=`[TELEMETRY] ${u.operation} ${u.duration?`(${u.duration}ms)`:""}`;u.type==="error"&&u.error?console[g](l,u.error):console[g](l);}return {recordEvent:i,generateTraceId:c,getMetrics:p}}function V(t){let e=new Map;return {before:a=>{let n=t.generateTraceId(),o=`${a.method.toUpperCase()} ${a.url}`,r=Date.now();e.set(o,{time:r,traceId:n}),t.recordEvent({timestamp:r,type:"request",operation:o,traceId:n});},after:a=>{let n=`${a.method.toUpperCase()} ${a.url}`,o=e.get(n);if(o){let r=Date.now()-o.time;t.recordEvent({timestamp:Date.now(),type:"response",operation:n,duration:r,status:200,traceId:o.traceId}),e.delete(n);}return a.response},error:(a,n,o)=>{let r=`${a.toUpperCase()} ${n}`,s=e.get(r);if(s){let i=Date.now()-s.time;t.recordEvent({timestamp:Date.now(),type:"error",operation:r,duration:i,error:o,traceId:s.traceId}),e.delete(r);}}}}function X(t,e){let a=n=>{let o=e.generateTraceId(),r=Date.now();return e.recordEvent({timestamp:r,type:"request",operation:n,traceId:o}),{success:()=>{let s=Date.now()-r;e.recordEvent({timestamp:Date.now(),type:"response",operation:n,duration:s,status:200,traceId:o});},error:s=>{let i=Date.now()-r;e.recordEvent({timestamp:Date.now(),type:"error",operation:n,duration:i,error:s,traceId:o});}}};return {...t,connect:()=>{let n=a("connect");try{t.connect(),n.success();}catch(o){throw n.error(o),o}},send:n=>{let o=a("send");try{t.send(n),o.success();}catch(r){throw o.error(r),r}},close:()=>{let n=a("close");try{t.close(),n.success();}catch(o){throw n.error(o),o}},onMessage:n=>{let o=a("onMessage");try{let r=t.onMessage(n);return o.success(),r}catch(r){throw o.error(r),r}},onError:n=>t.onError(o=>{a("onError").error(new Error("WebSocket error")),n(o);})}}function Y(t,e){return w(t)?v(t,V(e)):E(t)?X(t,e):t}function He(t={}){return ({delegate:e,...a})=>{let n=z(t);return {...a,delegate:Y(e,n),telemetry:n}}}function Ke(...t){let e=t.reduce((o,r)=>Object.assign(o,r(o)),{}),{onInit:a,...n}=e;return typeof a=="function"&&a(n),n}exports.universalClient=Ke;exports.withDelegate=we;exports.withEnvironments=ke;exports.withHooks=De;exports.withInterceptor=Fe;exports.withMethods=he;exports.withOffline=Oe;exports.withTelemetry=He;//# sourceMappingURL=index.js.map
|
|
6
|
+
var q=Object.defineProperty;var b=(t,e)=>()=>(t&&(e=t(t=0)),e);var x=(t,e)=>{for(var s in e)q(t,s,{get:e[s],enumerable:true});};var A={};x(A,{createAxiosDelegate:()=>U});async function U(t){let e;try{e=await new Function("moduleName","return import(moduleName)")("axios");}catch{e=null;}if(!e)throw new Error("Axios is not installed. Please install axios to use the axios delegate.");let s=e.default,{baseURL:n,...r}=t,o=s.create({baseURL:n,...r});return {get(a,u){return o.get(a,{headers:u?.headers}).then(l=>l.data)},post(a,u,l){return o.post(a,u,{headers:l?.headers}).then(m=>m.data)},patch(a,u,l){return o.patch(a,u,{headers:l?.headers}).then(m=>m.data)},put(a,u,l){return o.put(a,u,{headers:l?.headers}).then(m=>m.data)},delete(a,u){return o.delete(a,{headers:u?.headers}).then(l=>l.data)}}}var H=b(()=>{});var B={};x(B,{createBetterFetchDelegate:()=>j});async function j(t){let e;try{e=await new Function("moduleName","return import(moduleName)")("@better-fetch/fetch");}catch{e=null;}if(!e)throw new Error("@better-fetch/fetch is not installed. Please install @better-fetch/fetch to use the better-fetch delegate.");let{createFetch:s}=e,{baseURL:n,...r}=t,o=s({baseURL:n,...r});return {get(a,u){return o(a,{headers:u?.headers}).then(l=>l.data)},post(a,u,l){return o(a,{method:"POST",body:u,headers:l?.headers}).then(m=>m.data)},patch(a,u,l){return o(a,{method:"PATCH",body:u,headers:l?.headers}).then(m=>m.data)},put(a,u,l){return o(a,{method:"PUT",body:u,headers:l?.headers}).then(m=>m.data)},delete(a,u){return o(a,{method:"DELETE",headers:u?.headers}).then(l=>l.data)}}}var R=b(()=>{});function N(t){return async e=>{if(!e.ok){let s=`HTTP ${e.status}: ${e.statusText}`;try{let n=await e.clone().json();n.error?s=n.error:n.message&&(s=n.message);}catch{}throw new Error(s)}return t==="json"?e.json():t==="text"?e.text():e}}function G(t){let e=new URLSearchParams;for(let[s,n]of Object.entries(t??{}))if(n!=null)if(n instanceof Date)e.append(s,n.toISOString());else if(Array.isArray(n))for(let r of n)e.append(`${s}[]`,r?.toString()??"");else e.append(s,n.toString());return e.size?`?${e}`:""}function T({baseURL:t,format:e="json"}){function s(n,r,o,{params:a={},headers:u={}}={}){let l={method:n,headers:{...u}};return o&&(l.body=JSON.stringify(o)),fetch(`${t}${r}${G(a)}`,l).then(N(e))}return {get(n,{params:r={},headers:o={}}={}){return s("GET",n,void 0,{params:r,headers:o})},post(n,r,{params:o={},headers:a={}}={}){return s("POST",n,r,{params:o,headers:a})},patch(n,r,{params:o={},headers:a={}}={}){return s("PATCH",n,r,{params:o,headers:a})},put(n,r,{params:o={},headers:a={}}={}){return s("PUT",n,r,{params:o,headers:a})},delete(n,{params:r={},headers:o={}}={}){return s("DELETE",n,void 0,{params:r,headers:o})}}}async function I(t){if(t.impl==="axios"){let{createAxiosDelegate:e}=await Promise.resolve().then(()=>(H(),A));return e(t)}if(t.impl==="better-fetch"){let{createBetterFetchDelegate:e}=await Promise.resolve().then(()=>(R(),B));return e(t)}return T(t)}async function P({baseURL:t}){let e=new Set,s=new Set,n=new Set,r=new Map,o=null,a=null;function u(){o&&(o.close(),o=null,e.clear(),s.clear(),n.clear(),r.clear()),a&&(a.abort(),a=null);}function l(g,f){let d=f.join(`
|
|
7
|
+
`);if(g===""||g==="message")for(let i of s)i(d);if(g!==""&&g!=="message"){let i=r.get(g);if(i)for(let c of i)c(d);}}async function m(g){let f=g.getReader(),d=new TextDecoder,i="",c="",p=[];try{for(;;){let{done:h,value:D}=await f.read();if(h){p.length>0&&l(c,p);break}i+=d.decode(D,{stream:!0});let M=i.split(`
|
|
8
|
+
`);i=M.pop()??"";for(let S of M){let w=S.endsWith("\r")?S.slice(0,-1):S;if(w===""){p.length>0&&(l(c,p),c="",p=[]);continue}if(w.startsWith(":"))continue;let y=w.indexOf(":"),C,F;switch(y===-1?(C=w,F=""):(C=w.slice(0,y),F=w[y+1]===" "?w.slice(y+2):w.slice(y+1)),C){case "data":p.push(F);break;case "event":c=F;break}}}}catch(h){if(h instanceof DOMException&&h.name==="AbortError")return;let D=new Event("error");for(let M of n)M(D);}}return {open(g){u();let f=g?.url??t,d=g?.method??"GET";if(d==="GET"){if(typeof EventSource>"u")throw new Error("EventSource is not available. This delegate only works in browser environments.");o=new EventSource(f),o.addEventListener("open",i=>{for(let c of e)c(i);}),o.addEventListener("error",i=>{for(let c of n)c(i);}),o.addEventListener("message",i=>{for(let c of s)c(i.data);});for(let[i,c]of r)for(let p of c){let h=D=>p(D.data);o.addEventListener(i,h);}}else {a=new AbortController;let i={method:d,headers:{Accept:"text/event-stream","Content-Type":"application/json",...g?.headers},signal:a.signal};g?.body!==void 0&&(i.body=JSON.stringify(g.body)),fetch(f,i).then(c=>{if(!c.ok){let h=new Event("error");for(let D of n)D(h);return}if(!c.body){let h=new Event("error");for(let D of n)D(h);return}let p=new Event("open");for(let h of e)h(p);m(c.body);}).catch(c=>{if(c instanceof DOMException&&c.name==="AbortError")return;let p=new Event("error");for(let h of n)h(p);});}},close(){u();},onOpen(g){return e.add(g),()=>e.delete(g)},onError(g){return n.add(g),()=>n.delete(g)},onMessage(g){return s.add(g),()=>s.delete(g)},subscribe(g,f){let d=r.get(g);if(d||(d=new Set,r.set(g,d)),d.add(f),o){let i=c=>f(c.data);return o.addEventListener(g,i),()=>{d.delete(f),o&&o.removeEventListener(g,i);}}return ()=>{d.delete(f);}}}}function W({baseURL:t,protocols:e,reconnectInterval:s=5e3,maxReconnectAttempts:n=10}){let r=null,o=null,a=0,u=new Set,l=new Set,m=new Set,g=new Set;function f(){o!==null||a>=n||(a++,o=window.setTimeout(()=>{o=null,d.connect();},s));}let d={connect:()=>{r&&r.close(),r=new WebSocket(t,e),r.onopen=i=>{a=0;for(let c of u)c(i);},r.onclose=i=>{for(let c of m)c(i);f();},r.onerror=i=>{for(let c of g)c(i);},r.onmessage=i=>{let c;try{c=JSON.parse(i.data);}catch{c=i.data;}for(let p of l)p(c);};},close(){r&&(r.close(),r=null),o!==null&&(window.clearTimeout(o),o=null);},send(i){r&&r.readyState===WebSocket.OPEN?r.send(JSON.stringify(i)):console.warn("WebSocket is not connected. Message not sent.");},onOpen(i){return u.add(i),()=>u.delete(i)},onClose(i){return m.add(i),()=>m.delete(i)},onError(i){return g.add(i),()=>g.delete(i)},onMessage(i){return l.add(i),()=>l.delete(i)}};return d.connect(),d}function v(t){return typeof t=="object"&&t!==null&&"get"in t&&"post"in t&&"patch"in t&&"put"in t&&"delete"in t}function O(t){return typeof t=="object"&&t!==null&&"connect"in t&&"send"in t&&"close"in t}var J=t=>typeof t=="object"&&t!==null&&"type"in t;function L(t){if(J(t)){if(t.type==="http")return K(t);if(t.type==="websocket")return W(t);if(t.type==="server-sent-event")return _(t);throw new Error("Unsupported delegate type")}return t}function K(t){let e=null,s=()=>(e||(e=I(t)),e);return {async get(n,r){return (await s()).get(n,r)},async post(n,r,o){return (await s()).post(n,r,o)},async patch(n,r,o){return (await s()).patch(n,r,o)},async put(n,r,o){return (await s()).put(n,r,o)},async delete(n,r){return (await s()).delete(n,r)}}}function _(t){let e=null,s=()=>(e||(e=P(t)),e);return {open(n){s().then(r=>r.open(n)).catch(r=>console.error("[SSE] Failed to open connection:",r));},close(){e&&e.then(n=>n.close()).catch(console.error);},onOpen(n){let r=null;return s().then(o=>{r=o.onOpen(n);}).catch(o=>console.error("[SSE] Failed to attach onOpen handler:",o)),()=>{r&&r();}},onError(n){let r=null;return s().then(o=>{r=o.onError(n);}).catch(o=>console.error("[SSE] Failed to attach onError handler:",o)),()=>{r&&r();}},onMessage(n){let r=null;return s().then(o=>{r=o.onMessage(n);}).catch(o=>console.error("[SSE] Failed to attach onMessage handler:",o)),()=>{r&&r();}},subscribe(n,r){let o=null;return s().then(a=>{o=a.subscribe(n,r);}).catch(a=>console.error(`[SSE] Failed to subscribe to event "${n}":`,a)),()=>{o&&o();}}}}function k(t,e){let s=n=>{let r=t[n];return async(o,a,u)=>{let l=n==="get"||n==="delete",m=l?void 0:a,f={method:n,url:o,headers:(l?a:u)?.headers??{},body:m};try{if(e.before){let c=await e.before(f);c&&typeof c=="object"&&(f={...f,...c});}let d=f.headers?{headers:f.headers}:void 0,i=l?await r(f.url,d):await r(f.url,f.body,d);if(e.after){let c=await e.after({method:n,url:f.url,response:i});c&&typeof c=="object"&&(i={...i,...c});}return i}catch(d){throw e.error&&await e.error(n,f.url,d,f.body),d}}};return {get:s("get"),post:s("post"),patch:s("patch"),put:s("put"),delete:s("delete")}}function $(t,e){return {...t,connect:()=>{e.beforeConnect&&Promise.resolve(e.beforeConnect()).catch(console.error),t.connect(),e.afterConnect&&Promise.resolve(e.afterConnect()).catch(console.error);},send:s=>{e.beforeSend&&Promise.resolve(e.beforeSend(s)).catch(console.error),t.send(s),e.afterSend&&Promise.resolve(e.afterSend(s)).catch(console.error);},close:()=>{e.beforeClose&&Promise.resolve(e.beforeClose()).catch(console.error),t.close(),e.afterClose&&Promise.resolve(e.afterClose()).catch(console.error);}}}function E(t,...e){return s=>{let{delegate:n,...r}=e.reduce((a,u)=>{let l=u(a);return Object.assign({},a,l)},{...s,delegate:L(t)});return {[t.name??"delegate"]:n,...r}}}function Fe(t,...e){return E(t,...e)}function Oe(t,...e){return E({...t,type:"http"},...e)}function Se(t,...e){return E({...t,type:"http"},...e)}function Ce(t,...e){return E({...t,type:"http",impl:"axios"},...e)}function be(t,...e){return E({...t,type:"http",impl:"better-fetch"},...e)}function xe(t,...e){return E({...t,type:"server-sent-event"},...e)}function Te(t,...e){return E({...t,type:"websocket"},...e)}function He(t){return ()=>({...t})}function Re(t){return e=>({...t(e),...e})}function z(t){let e=Object.keys(t.environments),s=t.default||e[0],n=s;function r(){return n}function o(u){if(t.environments[u])n=u,console.info(`[ENVIRONMENTS] Switched to environment: ${u} (${t.environments[u]})`);else {let l=t.fallback||s;console.warn(`[ENVIRONMENTS] Environment "${u}" not found, falling back to "${String(l)}"`),n=l;}}function a(){return t.environments[n]||t.environments[Object.keys(t.environments)[0]]}return {getCurrentEnvironment:r,setEnvironment:o,getBaseURL:a}}function V(t,e){let s=n=>{let r=e.getBaseURL();if(n.startsWith("http"))return n;let o=r.replace(/\/$/,""),a=n.startsWith("/")?n:`/${n}`,u=`${o}${a}`;return console.info(`[ENVIRONMENTS] Building URL: ${o} + ${a} = ${u}`),u};return k(t,{before:n=>({url:s(n.url)})})}function X(t,e){return $(t,{beforeConnect:()=>{console.info(`[ENVIRONMENTS] WebSocket connecting to: ${e.getBaseURL()}`);}})}function Y(t,e){return v(t)?V(t,e):O(t)?X(t,e):t}function We(t){return e=>{let{name:s}=t,n=z(t);return {...e,[s]:Y(e[s],n),environments:n}}}function qe(t){return ({delegate:e,...s})=>{let{name:n,...r}=t;return v(e)?{...s,delegate:k(e,r)}:{...s,delegate:e}}}function Q(){return typeof navigator<"u"&&navigator.onLine!==void 0?navigator.onLine:true}function Z(t){let e=new Map,s=t.cacheTTL??3e5;function n(a,u,l){let m=l?JSON.stringify(l):"";return `${a}:${u}:${m}`}function r(a){let u=e.get(a);return u?Date.now()-u.timestamp>u.ttl?(e.delete(a),null):u.data:null}function o(a,u){e.set(a,{data:u,timestamp:Date.now(),ttl:s});}return {isOnline:Q,clearCache:()=>e.clear(),getCacheSize:()=>e.size,getFromCache:r,setInCache:o,generateCacheKey:n}}function ee(t,e,s){let n=s.strategy??"cache-first",r=o=>{let a=t[o];return async(u,l,m)=>{let g=o==="get"||o==="delete",f=g?void 0:l,d=g?l:m,i=e.generateCacheKey(String(o),u,f);if(n==="cache-first"){let c=e.getFromCache(i);if(c)return console.info(`[OFFLINE] Cache hit for ${o} ${u}`),c;if(e.isOnline())try{let p=g?await a(u,d):await a(u,f,d);return e.setInCache(i,p),p}catch(p){throw console.error(`[OFFLINE] Network error for ${o} ${u}:`,p),p}throw new Error(`[OFFLINE] No cache available and offline for ${o} ${u}`)}if(n==="network-first"){if(e.isOnline())try{let p=g?await a(u,d):await a(u,f,d);return e.setInCache(i,p),p}catch(p){let h=e.getFromCache(i);if(h)return console.warn(`[OFFLINE] Network failed, using cache for ${o} ${u}`),h;throw p}let c=e.getFromCache(i);if(c)return c;throw new Error(`[OFFLINE] Offline and no cache for ${o} ${u}`)}if(n==="network-only"){if(!e.isOnline())throw new Error(`[OFFLINE] Network unavailable for ${o} ${u}`);return g?await a(u,d):await a(u,f,d)}throw new Error(`[OFFLINE] Unknown strategy: ${n}`)}};return {get:r("get"),post:r("post"),patch:r("patch"),put:r("put"),delete:r("delete")}}function te(t,e,s){return v(t)?ee(t,e,s):t}function Ue(t={}){return ({delegate:e,...s})=>{let n=Z(t);return {...s,delegate:te(e,n,t),offline:n}}}function ne({enableMetrics:t=false,enableTracing:e=false,enableLogging:s=false,onEvent:n=()=>{},onMetrics:r=()=>{}}){let o=[],a={requests:{total:0,success:0,errors:0},latency:{avg:0,min:Number.MAX_SAFE_INTEGER,max:Number.MIN_SAFE_INTEGER}};function u(i){o.push(i),g(i),s&&d(i),n(i);}function l(){return e?Math.random().toString(36).substring(2,15):void 0}function m(){return {requests:t?a.requests:{total:0,success:0,errors:0},latency:t?a.latency:{avg:0,min:0,max:0}}}function g(i){if(t){switch(i.type){case "request":a.requests.total++;break;case "response":a.requests.success++,i.duration&&f(i.duration);break;case "error":a.requests.errors++,i.duration&&f(i.duration);break}r(a);}}function f(i){let c=o.filter(p=>p.duration!==void 0).map(p=>p.duration).filter(p=>p>0);c.length>0&&(a.latency.avg=c.reduce((p,h)=>p+h,0)/c.length,a.latency.min=Math.min(...c),a.latency.max=Math.max(...c));}function d(i){let c=i.type==="error"?"error":"info",p=`[TELEMETRY] ${i.operation} ${i.duration?`(${i.duration}ms)`:""}`;i.type==="error"&&i.error?console[c](p,i.error):console[c](p);}return {recordEvent:u,generateTraceId:l,getMetrics:m}}function re(t){let e=new Map;return {before:s=>{let n=t.generateTraceId(),r=`${s.method.toUpperCase()} ${s.url}`,o=Date.now();e.set(r,{time:o,traceId:n}),t.recordEvent({timestamp:o,type:"request",operation:r,traceId:n});},after:s=>{let n=`${s.method.toUpperCase()} ${s.url}`,r=e.get(n);if(r){let o=Date.now()-r.time;t.recordEvent({timestamp:Date.now(),type:"response",operation:n,duration:o,status:200,traceId:r.traceId}),e.delete(n);}return s.response},error:(s,n,r)=>{let o=`${s.toUpperCase()} ${n}`,a=e.get(o);if(a){let u=Date.now()-a.time;t.recordEvent({timestamp:Date.now(),type:"error",operation:o,duration:u,error:r,traceId:a.traceId}),e.delete(o);}}}}function oe(t,e){let s=n=>{let r=e.generateTraceId(),o=Date.now();return e.recordEvent({timestamp:o,type:"request",operation:n,traceId:r}),{success:()=>{let a=Date.now()-o;e.recordEvent({timestamp:Date.now(),type:"response",operation:n,duration:a,status:200,traceId:r});},error:a=>{let u=Date.now()-o;e.recordEvent({timestamp:Date.now(),type:"error",operation:n,duration:u,error:a,traceId:r});}}};return {...t,connect:()=>{let n=s("connect");try{t.connect(),n.success();}catch(r){throw n.error(r),r}},send:n=>{let r=s("send");try{t.send(n),r.success();}catch(o){throw r.error(o),o}},close:()=>{let n=s("close");try{t.close(),n.success();}catch(r){throw n.error(r),r}},onMessage:n=>{let r=s("onMessage");try{let o=t.onMessage(n);return r.success(),o}catch(o){throw r.error(o),o}},onError:n=>t.onError(r=>{s("onError").error(new Error("WebSocket error")),n(r);})}}function se(t,e){return v(t)?k(t,re(e)):O(t)?oe(t,e):t}function Ke(t={}){return ({delegate:e,...s})=>{let n=ne(t);return {...s,delegate:se(e,n),telemetry:n}}}function at(...t){let e=t.reduce((r,o)=>Object.assign(r,o(r)),{}),{onInit:s,...n}=e;return typeof s=="function"&&s(n),n}exports.universalClient=at;exports.withAxiosDelegate=Ce;exports.withBetterFetchDelegate=be;exports.withDelegate=Fe;exports.withEnvironments=We;exports.withFetchDelegate=Se;exports.withHooks=He;exports.withHttpDelegate=Oe;exports.withInterceptor=qe;exports.withMethods=Re;exports.withOffline=Ue;exports.withSseDelegate=xe;exports.withTelemetry=Ke;exports.withWebSocketDelegate=Te;//# sourceMappingURL=index.js.map
|
|
7
9
|
//# sourceMappingURL=index.js.map
|