@donkeylabs/adapter-sveltekit 2.0.14 → 2.0.16

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.
@@ -0,0 +1,231 @@
1
+ /**
2
+ * Unified API client for @donkeylabs/adapter-sveltekit
3
+ *
4
+ * Auto-detects environment:
5
+ * - SSR: Direct service calls through locals (no HTTP)
6
+ * - Browser: HTTP calls to API routes
7
+ */
8
+ export interface RequestOptions {
9
+ headers?: Record<string, string>;
10
+ signal?: AbortSignal;
11
+ }
12
+ export interface ClientOptions {
13
+ /** Base URL for HTTP calls. Defaults to empty string (relative URLs). */
14
+ baseUrl?: string;
15
+ /** SvelteKit locals object for SSR direct calls. */
16
+ locals?: any;
17
+ /** Custom fetch function. In SSR, pass event.fetch to handle relative URLs. */
18
+ fetch?: typeof fetch;
19
+ }
20
+ export interface SSESubscription {
21
+ unsubscribe: () => void;
22
+ }
23
+ /**
24
+ * SSE options for connection configuration.
25
+ * Compatible with @donkeylabs/server/client SSEOptions.
26
+ */
27
+ export interface SSEOptions {
28
+ /** Called when connection is established */
29
+ onConnect?: () => void;
30
+ /** Called when connection is lost */
31
+ onDisconnect?: () => void;
32
+ /** Called on connection error */
33
+ onError?: (error: Event) => void;
34
+ /** Auto-reconnect on disconnect (default: true) */
35
+ autoReconnect?: boolean;
36
+ /** Reconnect delay in ms (default: 3000) */
37
+ reconnectDelay?: number;
38
+ }
39
+ /**
40
+ * Options for SSE connection behavior.
41
+ */
42
+ export interface SSEConnectionOptions {
43
+ /** Enable automatic reconnection on disconnect (default: true) */
44
+ autoReconnect?: boolean;
45
+ /** Delay in ms before attempting reconnect (default: 3000) */
46
+ reconnectDelay?: number;
47
+ /** Called when connection is established */
48
+ onConnect?: () => void;
49
+ /** Called when connection is lost */
50
+ onDisconnect?: () => void;
51
+ }
52
+ /**
53
+ * Type-safe SSE connection wrapper.
54
+ * Provides typed event handlers with automatic JSON parsing.
55
+ *
56
+ * @example
57
+ * ```ts
58
+ * // With auto-reconnect (default)
59
+ * const connection = api.notifications.subscribe({ userId: "123" });
60
+ *
61
+ * // Disable auto-reconnect for manual control
62
+ * const connection = api.notifications.subscribe({ userId: "123" }, {
63
+ * autoReconnect: false
64
+ * });
65
+ *
66
+ * // Custom reconnect delay
67
+ * const connection = api.notifications.subscribe({ userId: "123" }, {
68
+ * reconnectDelay: 5000 // 5 seconds
69
+ * });
70
+ *
71
+ * // Typed event handler - returns unsubscribe function
72
+ * const unsubscribe = connection.on("notification", (data) => {
73
+ * console.log(data.message); // Fully typed!
74
+ * });
75
+ *
76
+ * // Later: unsubscribe from this specific handler
77
+ * unsubscribe();
78
+ *
79
+ * // Close entire connection
80
+ * connection.close();
81
+ * ```
82
+ */
83
+ export declare class SSEConnection<TEvents extends Record<string, any> = Record<string, any>> {
84
+ private eventSource;
85
+ private handlers;
86
+ private url;
87
+ private options;
88
+ private reconnectTimeout;
89
+ private closed;
90
+ constructor(url: string, options?: SSEConnectionOptions);
91
+ private createEventSource;
92
+ private scheduleReconnect;
93
+ private dispatchEvent;
94
+ /**
95
+ * Register a typed event handler.
96
+ * @returns Unsubscribe function to remove this specific handler
97
+ */
98
+ on<K extends keyof TEvents>(event: K & string, handler: (data: TEvents[K]) => void): () => void;
99
+ /**
100
+ * Register a typed event handler that fires only once.
101
+ * @returns Unsubscribe function to remove this specific handler
102
+ */
103
+ once<K extends keyof TEvents>(event: K & string, handler: (data: TEvents[K]) => void): () => void;
104
+ /**
105
+ * Remove all handlers for an event.
106
+ */
107
+ off<K extends keyof TEvents>(event: K & string): void;
108
+ /**
109
+ * Register error handler.
110
+ * Note: With autoReconnect enabled, errors trigger automatic reconnection.
111
+ */
112
+ onError(handler: (event: Event) => void): () => void;
113
+ /**
114
+ * Register open handler (connection established)
115
+ */
116
+ onOpen(handler: (event: Event) => void): () => void;
117
+ /**
118
+ * Get connection state
119
+ */
120
+ get readyState(): number;
121
+ /**
122
+ * Check if connected
123
+ */
124
+ get connected(): boolean;
125
+ /**
126
+ * Check if reconnecting
127
+ */
128
+ get reconnecting(): boolean;
129
+ /**
130
+ * Close the SSE connection and stop reconnection attempts
131
+ */
132
+ close(): void;
133
+ }
134
+ /**
135
+ * Base class for unified API clients.
136
+ * Extend this class with your generated route methods.
137
+ */
138
+ export declare class UnifiedApiClientBase {
139
+ protected baseUrl: string;
140
+ protected locals?: any;
141
+ protected isSSR: boolean;
142
+ protected customFetch?: typeof fetch;
143
+ constructor(options?: ClientOptions);
144
+ /**
145
+ * Make a request to an API route.
146
+ * Automatically uses direct calls in SSR (when locals.handleRoute is available), HTTP otherwise.
147
+ */
148
+ protected request<TInput, TOutput>(route: string, input: TInput, options?: RequestOptions): Promise<TOutput>;
149
+ /**
150
+ * HTTP call to API endpoint (browser or SSR with event.fetch).
151
+ */
152
+ private httpCall;
153
+ /**
154
+ * Make a raw request (for non-JSON endpoints like streaming).
155
+ * Returns the raw Response object without processing.
156
+ */
157
+ protected rawRequest(route: string, init?: RequestInit): Promise<Response>;
158
+ /**
159
+ * Make a stream request (validated input, Response output).
160
+ * For streaming, binary data, or custom content-type responses.
161
+ *
162
+ * By default uses POST with JSON body. For browser compatibility
163
+ * (video src, image src, download links), use streamUrl() instead.
164
+ */
165
+ protected streamRequest<TInput>(route: string, input: TInput, options?: RequestOptions): Promise<Response>;
166
+ /**
167
+ * Get the URL for a stream endpoint (for browser src attributes).
168
+ * Returns a URL with query params that can be used in:
169
+ * - <video src={url}>
170
+ * - <img src={url}>
171
+ * - <a href={url} download>
172
+ * - window.open(url)
173
+ */
174
+ protected streamUrl<TInput>(route: string, input?: TInput): string;
175
+ /**
176
+ * Fetch a stream via GET with query params.
177
+ * Alternative to streamRequest() for cases where GET is preferred.
178
+ */
179
+ protected streamGet<TInput>(route: string, input?: TInput, options?: RequestOptions): Promise<Response>;
180
+ /**
181
+ * Connect to an SSE endpoint.
182
+ * Returns a typed SSEConnection for handling server-sent events.
183
+ */
184
+ protected sseConnect<TInput, TEvents extends Record<string, any> = Record<string, any>>(route: string, input?: TInput, options?: SSEConnectionOptions): SSEConnection<TEvents>;
185
+ /**
186
+ * Connect to a specific SSE route endpoint.
187
+ * Alias for sseConnect() - provides compatibility with @donkeylabs/server generated clients.
188
+ * @returns SSE connection with typed event handlers
189
+ */
190
+ protected connectToSSERoute<TEvents extends Record<string, any>>(route: string, input?: Record<string, any>, options?: Omit<SSEOptions, "endpoint" | "channels">): SSEConnection<TEvents>;
191
+ /**
192
+ * Make a formData request (file uploads with validated fields).
193
+ */
194
+ protected formDataRequest<TFields, TOutput>(route: string, fields: TFields, files: File[], options?: RequestOptions): Promise<TOutput>;
195
+ /**
196
+ * Make an HTML request (returns HTML string).
197
+ */
198
+ protected htmlRequest<TInput>(route: string, input?: TInput, options?: RequestOptions): Promise<string>;
199
+ /**
200
+ * SSE (Server-Sent Events) subscription.
201
+ * Only works in the browser.
202
+ */
203
+ sse: {
204
+ /**
205
+ * Subscribe to SSE channels.
206
+ * Returns a function to unsubscribe.
207
+ *
208
+ * @example
209
+ * const unsub = api.sse.subscribe(["notifications"], (event, data) => {
210
+ * console.log(event, data);
211
+ * });
212
+ * // Later: unsub();
213
+ */
214
+ subscribe: (channels: string[], callback: (event: string, data: any) => void, options?: {
215
+ reconnect?: boolean;
216
+ }) => (() => void);
217
+ };
218
+ }
219
+ /**
220
+ * Create an API client instance.
221
+ * Call with locals and fetch in SSR, without in browser.
222
+ *
223
+ * @example
224
+ * // +page.server.ts (SSR)
225
+ * const api = createApiClient({ locals, fetch });
226
+ *
227
+ * // +page.svelte (browser)
228
+ * const api = createApiClient();
229
+ */
230
+ export declare function createApiClient<T extends UnifiedApiClientBase>(ClientClass: new (options?: ClientOptions) => T, options?: ClientOptions): T;
231
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}