@bagelink/sdk 1.20.54 → 1.20.58
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/package.json +1 -1
- package/src/index.js +715 -0
- package/src/openAPITools/StreamController.js +62 -0
- package/src/openAPITools/functionGenerator.js +979 -0
- package/src/openAPITools/index.js +40 -0
- package/src/openAPITools/moduleGenerator.js +125 -0
- package/src/openAPITools/streamClient.js +276 -0
- package/src/openAPITools/streamDetector.js +204 -0
- package/src/openAPITools/typeGenerator.js +48 -0
- package/src/openAPITools/types/index.js +19 -0
- package/src/openAPITools/types/utils.js +30 -0
- package/src/openAPITools/utils.js +282 -0
- package/src/unwrap.js +30 -0
- package/src/utils.js +58 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StreamController - Simple, reliable SSE stream management
|
|
3
|
+
* Provides a type-safe API for consuming Server-Sent Events
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* StreamController - Simple, reliable event emitter for SSE streams
|
|
7
|
+
* @template TEventMap - Map of event names to their data types
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* const stream = api.messages.stream(params)
|
|
11
|
+
* .on('token', (data) => console.log(data))
|
|
12
|
+
* .on('done', (data) => console.log('Complete!'))
|
|
13
|
+
*
|
|
14
|
+
* stream.close()
|
|
15
|
+
*/
|
|
16
|
+
export class StreamController {
|
|
17
|
+
cleanup;
|
|
18
|
+
handlers = new Map();
|
|
19
|
+
_closed = false;
|
|
20
|
+
constructor(cleanup) {
|
|
21
|
+
this.cleanup = cleanup;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Register an event handler (fully typed!)
|
|
25
|
+
* @param event - Event type to listen for
|
|
26
|
+
* @param handler - Handler function (data type inferred from event)
|
|
27
|
+
* @returns this (for chaining)
|
|
28
|
+
*/
|
|
29
|
+
on(event, handler) {
|
|
30
|
+
if (!this.handlers.has(event)) {
|
|
31
|
+
this.handlers.set(event, new Set());
|
|
32
|
+
}
|
|
33
|
+
this.handlers.get(event).add(handler);
|
|
34
|
+
return this;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Emit an event to all registered handlers
|
|
38
|
+
* @internal
|
|
39
|
+
*/
|
|
40
|
+
emit(event, data) {
|
|
41
|
+
const handlers = this.handlers.get(event);
|
|
42
|
+
if (handlers) {
|
|
43
|
+
handlers.forEach((handler) => {
|
|
44
|
+
try {
|
|
45
|
+
handler(data);
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
console.error(`Error in ${event} handler:`, error);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Close the stream
|
|
55
|
+
*/
|
|
56
|
+
close() {
|
|
57
|
+
if (!this._closed) {
|
|
58
|
+
this.cleanup();
|
|
59
|
+
this._closed = true;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|