@absolutejs/voice 0.0.22-beta.444 → 0.0.22-beta.446
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/angular/index.js +13 -0
- package/dist/angular/voice-controller.service.d.ts +1 -0
- package/dist/angular/voice-stream.service.d.ts +1 -0
- package/dist/client/connection.d.ts +1 -0
- package/dist/client/htmxBootstrap.js +11 -0
- package/dist/client/index.js +11 -0
- package/dist/index.js +23 -2
- package/dist/react/index.js +14 -1
- package/dist/react/useVoiceController.d.ts +1 -0
- package/dist/react/useVoiceStream.d.ts +1 -0
- package/dist/reconnectContract.d.ts +1 -0
- package/dist/svelte/index.js +11 -0
- package/dist/testing/index.js +11 -0
- package/dist/types.d.ts +2 -0
- package/dist/vue/index.js +13 -0
- package/dist/vue/useVoiceController.d.ts +1 -0
- package/dist/vue/useVoiceStream.d.ts +1 -0
- package/package.json +1 -1
package/dist/angular/index.js
CHANGED
|
@@ -2519,6 +2519,7 @@ var NOOP_CONNECTION = {
|
|
|
2519
2519
|
getSessionId: () => "",
|
|
2520
2520
|
send: noop,
|
|
2521
2521
|
sendAudio: noop,
|
|
2522
|
+
simulateDisconnect: noop,
|
|
2522
2523
|
start: () => {},
|
|
2523
2524
|
subscribe: noopUnsubscribe
|
|
2524
2525
|
};
|
|
@@ -2743,6 +2744,11 @@ var createVoiceConnection = (path, options = {}) => {
|
|
|
2743
2744
|
state.isConnected = false;
|
|
2744
2745
|
listeners.clear();
|
|
2745
2746
|
};
|
|
2747
|
+
const simulateDisconnect = () => {
|
|
2748
|
+
if (state.ws?.readyState === WS_OPEN) {
|
|
2749
|
+
state.ws.close(4000, "absolutejs-voice-reconnect-proof");
|
|
2750
|
+
}
|
|
2751
|
+
};
|
|
2746
2752
|
const subscribe = (callback) => {
|
|
2747
2753
|
listeners.add(callback);
|
|
2748
2754
|
return () => {
|
|
@@ -2759,6 +2765,7 @@ var createVoiceConnection = (path, options = {}) => {
|
|
|
2759
2765
|
getSessionId: () => state.sessionId,
|
|
2760
2766
|
send,
|
|
2761
2767
|
sendAudio,
|
|
2768
|
+
simulateDisconnect,
|
|
2762
2769
|
start,
|
|
2763
2770
|
subscribe
|
|
2764
2771
|
};
|
|
@@ -3042,6 +3049,9 @@ var createVoiceStream = (path, options = {}) => {
|
|
|
3042
3049
|
sendAudio(audio) {
|
|
3043
3050
|
connection.sendAudio(audio);
|
|
3044
3051
|
},
|
|
3052
|
+
simulateDisconnect() {
|
|
3053
|
+
connection.simulateDisconnect();
|
|
3054
|
+
},
|
|
3045
3055
|
subscribe(subscriber) {
|
|
3046
3056
|
subscribers.add(subscriber);
|
|
3047
3057
|
return () => {
|
|
@@ -3101,6 +3111,7 @@ class VoiceStreamService {
|
|
|
3101
3111
|
partial: computed12(() => partialSignal()),
|
|
3102
3112
|
reconnect: computed12(() => reconnectSignal()),
|
|
3103
3113
|
sendAudio: (audio) => stream.sendAudio(audio),
|
|
3114
|
+
simulateDisconnect: () => stream.simulateDisconnect(),
|
|
3104
3115
|
sessionId: computed12(() => sessionIdSignal()),
|
|
3105
3116
|
sessionMetadata: computed12(() => sessionMetadataSignal()),
|
|
3106
3117
|
status: computed12(() => statusSignal()),
|
|
@@ -3719,6 +3730,7 @@ var createVoiceController = (path, options = {}) => {
|
|
|
3719
3730
|
return state.reconnect;
|
|
3720
3731
|
},
|
|
3721
3732
|
sendAudio: (audio) => stream.sendAudio(audio),
|
|
3733
|
+
simulateDisconnect: () => stream.simulateDisconnect(),
|
|
3722
3734
|
get sessionId() {
|
|
3723
3735
|
return state.sessionId;
|
|
3724
3736
|
},
|
|
@@ -3812,6 +3824,7 @@ class VoiceControllerService {
|
|
|
3812
3824
|
reconnect: computed13(() => reconnectSignal()),
|
|
3813
3825
|
recordingError: computed13(() => recordingErrorSignal()),
|
|
3814
3826
|
sendAudio: (audio) => controller.sendAudio(audio),
|
|
3827
|
+
simulateDisconnect: () => controller.simulateDisconnect(),
|
|
3815
3828
|
sessionId: computed13(() => sessionIdSignal()),
|
|
3816
3829
|
startRecording: () => controller.startRecording(),
|
|
3817
3830
|
status: computed13(() => statusSignal()),
|
|
@@ -18,6 +18,7 @@ export declare class VoiceControllerService {
|
|
|
18
18
|
reconnect: import("@angular/core").Signal<import("..").VoiceReconnectClientState>;
|
|
19
19
|
recordingError: import("@angular/core").Signal<string | null>;
|
|
20
20
|
sendAudio: (audio: Uint8Array | ArrayBuffer) => void;
|
|
21
|
+
simulateDisconnect: () => void;
|
|
21
22
|
sessionId: import("@angular/core").Signal<string | null>;
|
|
22
23
|
startRecording: () => Promise<void>;
|
|
23
24
|
status: import("@angular/core").Signal<import("..").VoiceSessionStatus | "idle">;
|
|
@@ -17,6 +17,7 @@ export declare class VoiceStreamService {
|
|
|
17
17
|
partial: import("@angular/core").Signal<string>;
|
|
18
18
|
reconnect: import("@angular/core").Signal<import("..").VoiceReconnectClientState>;
|
|
19
19
|
sendAudio: (audio: Uint8Array | ArrayBuffer) => void;
|
|
20
|
+
simulateDisconnect: () => void;
|
|
20
21
|
sessionId: import("@angular/core").Signal<string | null>;
|
|
21
22
|
sessionMetadata: import("@angular/core").Signal<Record<string, unknown> | null>;
|
|
22
23
|
status: import("@angular/core").Signal<import("..").VoiceSessionStatus | "idle">;
|
|
@@ -14,6 +14,7 @@ type VoiceConnectionHandle = {
|
|
|
14
14
|
getSessionId: () => string;
|
|
15
15
|
send: (message: VoiceClientMessage) => void;
|
|
16
16
|
sendAudio: (audio: Uint8Array | ArrayBuffer) => void;
|
|
17
|
+
simulateDisconnect: () => void;
|
|
17
18
|
subscribe: (callback: (message: VoiceServerMessage) => void) => () => void;
|
|
18
19
|
};
|
|
19
20
|
export declare const createVoiceConnection: (path: string, options?: VoiceConnectionOptions) => VoiceConnectionHandle;
|
|
@@ -489,6 +489,7 @@ var NOOP_CONNECTION = {
|
|
|
489
489
|
getSessionId: () => "",
|
|
490
490
|
send: noop,
|
|
491
491
|
sendAudio: noop,
|
|
492
|
+
simulateDisconnect: noop,
|
|
492
493
|
start: () => {},
|
|
493
494
|
subscribe: noopUnsubscribe
|
|
494
495
|
};
|
|
@@ -713,6 +714,11 @@ var createVoiceConnection = (path, options = {}) => {
|
|
|
713
714
|
state.isConnected = false;
|
|
714
715
|
listeners.clear();
|
|
715
716
|
};
|
|
717
|
+
const simulateDisconnect = () => {
|
|
718
|
+
if (state.ws?.readyState === WS_OPEN) {
|
|
719
|
+
state.ws.close(4000, "absolutejs-voice-reconnect-proof");
|
|
720
|
+
}
|
|
721
|
+
};
|
|
716
722
|
const subscribe = (callback) => {
|
|
717
723
|
listeners.add(callback);
|
|
718
724
|
return () => {
|
|
@@ -729,6 +735,7 @@ var createVoiceConnection = (path, options = {}) => {
|
|
|
729
735
|
getSessionId: () => state.sessionId,
|
|
730
736
|
send,
|
|
731
737
|
sendAudio,
|
|
738
|
+
simulateDisconnect,
|
|
732
739
|
start,
|
|
733
740
|
subscribe
|
|
734
741
|
};
|
|
@@ -1012,6 +1019,9 @@ var createVoiceStream = (path, options = {}) => {
|
|
|
1012
1019
|
sendAudio(audio) {
|
|
1013
1020
|
connection.sendAudio(audio);
|
|
1014
1021
|
},
|
|
1022
|
+
simulateDisconnect() {
|
|
1023
|
+
connection.simulateDisconnect();
|
|
1024
|
+
},
|
|
1015
1025
|
subscribe(subscriber) {
|
|
1016
1026
|
subscribers.add(subscriber);
|
|
1017
1027
|
return () => {
|
|
@@ -1446,6 +1456,7 @@ var createVoiceController = (path, options = {}) => {
|
|
|
1446
1456
|
return state.reconnect;
|
|
1447
1457
|
},
|
|
1448
1458
|
sendAudio: (audio) => stream.sendAudio(audio),
|
|
1459
|
+
simulateDisconnect: () => stream.simulateDisconnect(),
|
|
1449
1460
|
get sessionId() {
|
|
1450
1461
|
return state.sessionId;
|
|
1451
1462
|
},
|
package/dist/client/index.js
CHANGED
|
@@ -89,6 +89,7 @@ var NOOP_CONNECTION = {
|
|
|
89
89
|
getSessionId: () => "",
|
|
90
90
|
send: noop,
|
|
91
91
|
sendAudio: noop,
|
|
92
|
+
simulateDisconnect: noop,
|
|
92
93
|
start: () => {},
|
|
93
94
|
subscribe: noopUnsubscribe
|
|
94
95
|
};
|
|
@@ -313,6 +314,11 @@ var createVoiceConnection = (path, options = {}) => {
|
|
|
313
314
|
state.isConnected = false;
|
|
314
315
|
listeners.clear();
|
|
315
316
|
};
|
|
317
|
+
const simulateDisconnect = () => {
|
|
318
|
+
if (state.ws?.readyState === WS_OPEN) {
|
|
319
|
+
state.ws.close(4000, "absolutejs-voice-reconnect-proof");
|
|
320
|
+
}
|
|
321
|
+
};
|
|
316
322
|
const subscribe = (callback) => {
|
|
317
323
|
listeners.add(callback);
|
|
318
324
|
return () => {
|
|
@@ -329,6 +335,7 @@ var createVoiceConnection = (path, options = {}) => {
|
|
|
329
335
|
getSessionId: () => state.sessionId,
|
|
330
336
|
send,
|
|
331
337
|
sendAudio,
|
|
338
|
+
simulateDisconnect,
|
|
332
339
|
start,
|
|
333
340
|
subscribe
|
|
334
341
|
};
|
|
@@ -1796,6 +1803,9 @@ var createVoiceStream = (path, options = {}) => {
|
|
|
1796
1803
|
sendAudio(audio) {
|
|
1797
1804
|
connection.sendAudio(audio);
|
|
1798
1805
|
},
|
|
1806
|
+
simulateDisconnect() {
|
|
1807
|
+
connection.simulateDisconnect();
|
|
1808
|
+
},
|
|
1799
1809
|
subscribe(subscriber) {
|
|
1800
1810
|
subscribers.add(subscriber);
|
|
1801
1811
|
return () => {
|
|
@@ -2408,6 +2418,7 @@ var createVoiceController = (path, options = {}) => {
|
|
|
2408
2418
|
return state.reconnect;
|
|
2409
2419
|
},
|
|
2410
2420
|
sendAudio: (audio) => stream.sendAudio(audio),
|
|
2421
|
+
simulateDisconnect: () => stream.simulateDisconnect(),
|
|
2411
2422
|
get sessionId() {
|
|
2412
2423
|
return state.sessionId;
|
|
2413
2424
|
},
|
package/dist/index.js
CHANGED
|
@@ -11781,6 +11781,8 @@ var getSessionsFromStore = async (store) => {
|
|
|
11781
11781
|
};
|
|
11782
11782
|
var createVoiceReconnectProofRoutes = (options = {}) => {
|
|
11783
11783
|
const path = options.path ?? "/api/voice/reconnect-proof";
|
|
11784
|
+
const collectedSnapshots = [];
|
|
11785
|
+
const maxCollectedSnapshots = options.maxCollectedSnapshots ?? 500;
|
|
11784
11786
|
const buildReport = async () => buildVoiceReconnectProofReport({
|
|
11785
11787
|
completedSessionCount: options.getCompletedSessionCount ? await options.getCompletedSessionCount() : undefined,
|
|
11786
11788
|
maxAttempts: options.maxAttempts,
|
|
@@ -11788,7 +11790,10 @@ var createVoiceReconnectProofRoutes = (options = {}) => {
|
|
|
11788
11790
|
requireReplayProtection: options.requireReplayProtection,
|
|
11789
11791
|
requireResumeAfterReconnect: options.requireResumeAfterReconnect,
|
|
11790
11792
|
sessions: options.getSessions ? await options.getSessions() : options.store ? await getSessionsFromStore(options.store) : undefined,
|
|
11791
|
-
snapshots:
|
|
11793
|
+
snapshots: [
|
|
11794
|
+
...collectedSnapshots,
|
|
11795
|
+
...options.getSnapshots ? await options.getSnapshots() : []
|
|
11796
|
+
]
|
|
11792
11797
|
});
|
|
11793
11798
|
const respond = async () => new Response(JSON.stringify(await buildReport()), {
|
|
11794
11799
|
headers: {
|
|
@@ -11796,9 +11801,25 @@ var createVoiceReconnectProofRoutes = (options = {}) => {
|
|
|
11796
11801
|
...options.headers
|
|
11797
11802
|
}
|
|
11798
11803
|
});
|
|
11804
|
+
const collectSnapshot = (body) => {
|
|
11805
|
+
if (!isReconnectPayload(body)) {
|
|
11806
|
+
return;
|
|
11807
|
+
}
|
|
11808
|
+
collectedSnapshots.push({
|
|
11809
|
+
at: body.at,
|
|
11810
|
+
reconnect: body.reconnect,
|
|
11811
|
+
turnIds: Array.isArray(body.turnIds) ? body.turnIds.filter((turnId) => typeof turnId === "string") : undefined
|
|
11812
|
+
});
|
|
11813
|
+
if (collectedSnapshots.length > maxCollectedSnapshots) {
|
|
11814
|
+
collectedSnapshots.splice(0, collectedSnapshots.length - maxCollectedSnapshots);
|
|
11815
|
+
}
|
|
11816
|
+
};
|
|
11799
11817
|
return new Elysia9({
|
|
11800
11818
|
name: options.name ?? "absolutejs-voice-reconnect-proof"
|
|
11801
|
-
}).get(path, respond).post(path,
|
|
11819
|
+
}).get(path, respond).post(path, async ({ body }) => {
|
|
11820
|
+
collectSnapshot(body);
|
|
11821
|
+
return respond();
|
|
11822
|
+
});
|
|
11802
11823
|
};
|
|
11803
11824
|
var renderVoiceReconnectContractHTML = (report) => {
|
|
11804
11825
|
const issues = report.issues.map((issue) => `<li class="${escapeHtml12(issue.severity)}"><strong>${escapeHtml12(issue.code)}</strong>: ${escapeHtml12(issue.message)}</li>`).join("");
|
package/dist/react/index.js
CHANGED
|
@@ -10640,6 +10640,7 @@ var NOOP_CONNECTION = {
|
|
|
10640
10640
|
getSessionId: () => "",
|
|
10641
10641
|
send: noop,
|
|
10642
10642
|
sendAudio: noop,
|
|
10643
|
+
simulateDisconnect: noop,
|
|
10643
10644
|
start: () => {},
|
|
10644
10645
|
subscribe: noopUnsubscribe
|
|
10645
10646
|
};
|
|
@@ -10864,6 +10865,11 @@ var createVoiceConnection = (path, options = {}) => {
|
|
|
10864
10865
|
state.isConnected = false;
|
|
10865
10866
|
listeners.clear();
|
|
10866
10867
|
};
|
|
10868
|
+
const simulateDisconnect = () => {
|
|
10869
|
+
if (state.ws?.readyState === WS_OPEN) {
|
|
10870
|
+
state.ws.close(4000, "absolutejs-voice-reconnect-proof");
|
|
10871
|
+
}
|
|
10872
|
+
};
|
|
10867
10873
|
const subscribe = (callback) => {
|
|
10868
10874
|
listeners.add(callback);
|
|
10869
10875
|
return () => {
|
|
@@ -10880,6 +10886,7 @@ var createVoiceConnection = (path, options = {}) => {
|
|
|
10880
10886
|
getSessionId: () => state.sessionId,
|
|
10881
10887
|
send,
|
|
10882
10888
|
sendAudio,
|
|
10889
|
+
simulateDisconnect,
|
|
10883
10890
|
start,
|
|
10884
10891
|
subscribe
|
|
10885
10892
|
};
|
|
@@ -11163,6 +11170,9 @@ var createVoiceStream = (path, options = {}) => {
|
|
|
11163
11170
|
sendAudio(audio) {
|
|
11164
11171
|
connection.sendAudio(audio);
|
|
11165
11172
|
},
|
|
11173
|
+
simulateDisconnect() {
|
|
11174
|
+
connection.simulateDisconnect();
|
|
11175
|
+
},
|
|
11166
11176
|
subscribe(subscriber) {
|
|
11167
11177
|
subscribers.add(subscriber);
|
|
11168
11178
|
return () => {
|
|
@@ -11203,7 +11213,8 @@ var useVoiceStream = (path, options = {}) => {
|
|
|
11203
11213
|
callControl: (message) => stream.callControl(message),
|
|
11204
11214
|
close: () => stream.close(),
|
|
11205
11215
|
endTurn: () => stream.endTurn(),
|
|
11206
|
-
sendAudio: (audio) => stream.sendAudio(audio)
|
|
11216
|
+
sendAudio: (audio) => stream.sendAudio(audio),
|
|
11217
|
+
simulateDisconnect: () => stream.simulateDisconnect()
|
|
11207
11218
|
};
|
|
11208
11219
|
};
|
|
11209
11220
|
// src/react/useVoiceController.tsx
|
|
@@ -11813,6 +11824,7 @@ var createVoiceController = (path, options = {}) => {
|
|
|
11813
11824
|
return state.reconnect;
|
|
11814
11825
|
},
|
|
11815
11826
|
sendAudio: (audio) => stream.sendAudio(audio),
|
|
11827
|
+
simulateDisconnect: () => stream.simulateDisconnect(),
|
|
11816
11828
|
get sessionId() {
|
|
11817
11829
|
return state.sessionId;
|
|
11818
11830
|
},
|
|
@@ -11889,6 +11901,7 @@ var useVoiceController = (path, options = {}) => {
|
|
|
11889
11901
|
close: () => controller.close(),
|
|
11890
11902
|
endTurn: () => controller.endTurn(),
|
|
11891
11903
|
sendAudio: (audio) => controller.sendAudio(audio),
|
|
11904
|
+
simulateDisconnect: () => controller.simulateDisconnect(),
|
|
11892
11905
|
startRecording: () => controller.startRecording(),
|
|
11893
11906
|
stopRecording: () => controller.stopRecording(),
|
|
11894
11907
|
toggleRecording: () => controller.toggleRecording()
|
|
@@ -5,6 +5,7 @@ export declare const useVoiceController: <TResult = unknown>(path: string, optio
|
|
|
5
5
|
close: () => void;
|
|
6
6
|
endTurn: () => void;
|
|
7
7
|
sendAudio: (audio: Uint8Array | ArrayBuffer) => void;
|
|
8
|
+
simulateDisconnect: () => void;
|
|
8
9
|
startRecording: () => Promise<void>;
|
|
9
10
|
stopRecording: () => void;
|
|
10
11
|
toggleRecording: () => Promise<void>;
|
|
@@ -4,6 +4,7 @@ export declare const useVoiceStream: <TResult = unknown>(path: string, options?:
|
|
|
4
4
|
close: () => void;
|
|
5
5
|
endTurn: () => void;
|
|
6
6
|
sendAudio: (audio: Uint8Array | ArrayBuffer) => void;
|
|
7
|
+
simulateDisconnect: () => void;
|
|
7
8
|
call: import("..").VoiceCallLifecycleState | null;
|
|
8
9
|
sessionMetadata: Record<string, unknown> | null;
|
|
9
10
|
sessionId: string | null;
|
|
@@ -60,6 +60,7 @@ export type VoiceReconnectProofRoutesOptions = Omit<VoiceReconnectProofOptions,
|
|
|
60
60
|
getSessions?: () => readonly VoiceSessionRecord[] | Promise<readonly VoiceSessionRecord[]>;
|
|
61
61
|
getSnapshots?: () => readonly VoiceReconnectContractSnapshot[] | Promise<readonly VoiceReconnectContractSnapshot[]>;
|
|
62
62
|
headers?: HeadersInit;
|
|
63
|
+
maxCollectedSnapshots?: number;
|
|
63
64
|
name?: string;
|
|
64
65
|
path?: string;
|
|
65
66
|
store?: VoiceSessionStore;
|
package/dist/svelte/index.js
CHANGED
|
@@ -4760,6 +4760,7 @@ var NOOP_CONNECTION = {
|
|
|
4760
4760
|
getSessionId: () => "",
|
|
4761
4761
|
send: noop,
|
|
4762
4762
|
sendAudio: noop,
|
|
4763
|
+
simulateDisconnect: noop,
|
|
4763
4764
|
start: () => {},
|
|
4764
4765
|
subscribe: noopUnsubscribe
|
|
4765
4766
|
};
|
|
@@ -4984,6 +4985,11 @@ var createVoiceConnection = (path, options = {}) => {
|
|
|
4984
4985
|
state.isConnected = false;
|
|
4985
4986
|
listeners.clear();
|
|
4986
4987
|
};
|
|
4988
|
+
const simulateDisconnect = () => {
|
|
4989
|
+
if (state.ws?.readyState === WS_OPEN) {
|
|
4990
|
+
state.ws.close(4000, "absolutejs-voice-reconnect-proof");
|
|
4991
|
+
}
|
|
4992
|
+
};
|
|
4987
4993
|
const subscribe = (callback) => {
|
|
4988
4994
|
listeners.add(callback);
|
|
4989
4995
|
return () => {
|
|
@@ -5000,6 +5006,7 @@ var createVoiceConnection = (path, options = {}) => {
|
|
|
5000
5006
|
getSessionId: () => state.sessionId,
|
|
5001
5007
|
send,
|
|
5002
5008
|
sendAudio,
|
|
5009
|
+
simulateDisconnect,
|
|
5003
5010
|
start,
|
|
5004
5011
|
subscribe
|
|
5005
5012
|
};
|
|
@@ -5283,6 +5290,9 @@ var createVoiceStream = (path, options = {}) => {
|
|
|
5283
5290
|
sendAudio(audio) {
|
|
5284
5291
|
connection.sendAudio(audio);
|
|
5285
5292
|
},
|
|
5293
|
+
simulateDisconnect() {
|
|
5294
|
+
connection.simulateDisconnect();
|
|
5295
|
+
},
|
|
5286
5296
|
subscribe(subscriber) {
|
|
5287
5297
|
subscribers.add(subscriber);
|
|
5288
5298
|
return () => {
|
|
@@ -7199,6 +7209,7 @@ var createVoiceController = (path, options = {}) => {
|
|
|
7199
7209
|
return state.reconnect;
|
|
7200
7210
|
},
|
|
7201
7211
|
sendAudio: (audio) => stream.sendAudio(audio),
|
|
7212
|
+
simulateDisconnect: () => stream.simulateDisconnect(),
|
|
7202
7213
|
get sessionId() {
|
|
7203
7214
|
return state.sessionId;
|
|
7204
7215
|
},
|
package/dist/testing/index.js
CHANGED
|
@@ -2913,6 +2913,7 @@ var NOOP_CONNECTION = {
|
|
|
2913
2913
|
getSessionId: () => "",
|
|
2914
2914
|
send: noop,
|
|
2915
2915
|
sendAudio: noop,
|
|
2916
|
+
simulateDisconnect: noop,
|
|
2916
2917
|
start: () => {},
|
|
2917
2918
|
subscribe: noopUnsubscribe
|
|
2918
2919
|
};
|
|
@@ -3137,6 +3138,11 @@ var createVoiceConnection = (path, options = {}) => {
|
|
|
3137
3138
|
state.isConnected = false;
|
|
3138
3139
|
listeners.clear();
|
|
3139
3140
|
};
|
|
3141
|
+
const simulateDisconnect = () => {
|
|
3142
|
+
if (state.ws?.readyState === WS_OPEN) {
|
|
3143
|
+
state.ws.close(4000, "absolutejs-voice-reconnect-proof");
|
|
3144
|
+
}
|
|
3145
|
+
};
|
|
3140
3146
|
const subscribe = (callback) => {
|
|
3141
3147
|
listeners.add(callback);
|
|
3142
3148
|
return () => {
|
|
@@ -3153,6 +3159,7 @@ var createVoiceConnection = (path, options = {}) => {
|
|
|
3153
3159
|
getSessionId: () => state.sessionId,
|
|
3154
3160
|
send,
|
|
3155
3161
|
sendAudio,
|
|
3162
|
+
simulateDisconnect,
|
|
3156
3163
|
start,
|
|
3157
3164
|
subscribe
|
|
3158
3165
|
};
|
|
@@ -3436,6 +3443,9 @@ var createVoiceStream = (path, options = {}) => {
|
|
|
3436
3443
|
sendAudio(audio) {
|
|
3437
3444
|
connection.sendAudio(audio);
|
|
3438
3445
|
},
|
|
3446
|
+
simulateDisconnect() {
|
|
3447
|
+
connection.simulateDisconnect();
|
|
3448
|
+
},
|
|
3439
3449
|
subscribe(subscriber) {
|
|
3440
3450
|
subscribers.add(subscriber);
|
|
3441
3451
|
return () => {
|
|
@@ -3907,6 +3917,7 @@ var createVoiceController = (path, options = {}) => {
|
|
|
3907
3917
|
return state.reconnect;
|
|
3908
3918
|
},
|
|
3909
3919
|
sendAudio: (audio) => stream.sendAudio(audio),
|
|
3920
|
+
simulateDisconnect: () => stream.simulateDisconnect(),
|
|
3910
3921
|
get sessionId() {
|
|
3911
3922
|
return state.sessionId;
|
|
3912
3923
|
},
|
package/dist/types.d.ts
CHANGED
|
@@ -969,6 +969,7 @@ export type VoiceStream<TResult = unknown> = {
|
|
|
969
969
|
partial: string;
|
|
970
970
|
reconnect: VoiceReconnectClientState;
|
|
971
971
|
sendAudio: (audio: Uint8Array | ArrayBuffer) => void;
|
|
972
|
+
simulateDisconnect: () => void;
|
|
972
973
|
sessionId: string | null;
|
|
973
974
|
sessionMetadata: Record<string, unknown> | null;
|
|
974
975
|
scenarioId: string | null;
|
|
@@ -1041,6 +1042,7 @@ export type VoiceController<TResult = unknown> = {
|
|
|
1041
1042
|
reconnect: VoiceReconnectClientState;
|
|
1042
1043
|
recordingError: string | null;
|
|
1043
1044
|
sendAudio: (audio: Uint8Array | ArrayBuffer) => void;
|
|
1045
|
+
simulateDisconnect: () => void;
|
|
1044
1046
|
sessionId: string | null;
|
|
1045
1047
|
sessionMetadata: Record<string, unknown> | null;
|
|
1046
1048
|
scenarioId: string | null;
|
package/dist/vue/index.js
CHANGED
|
@@ -10035,6 +10035,7 @@ var NOOP_CONNECTION = {
|
|
|
10035
10035
|
getSessionId: () => "",
|
|
10036
10036
|
send: noop,
|
|
10037
10037
|
sendAudio: noop,
|
|
10038
|
+
simulateDisconnect: noop,
|
|
10038
10039
|
start: () => {},
|
|
10039
10040
|
subscribe: noopUnsubscribe
|
|
10040
10041
|
};
|
|
@@ -10259,6 +10260,11 @@ var createVoiceConnection = (path, options = {}) => {
|
|
|
10259
10260
|
state.isConnected = false;
|
|
10260
10261
|
listeners.clear();
|
|
10261
10262
|
};
|
|
10263
|
+
const simulateDisconnect = () => {
|
|
10264
|
+
if (state.ws?.readyState === WS_OPEN) {
|
|
10265
|
+
state.ws.close(4000, "absolutejs-voice-reconnect-proof");
|
|
10266
|
+
}
|
|
10267
|
+
};
|
|
10262
10268
|
const subscribe = (callback) => {
|
|
10263
10269
|
listeners.add(callback);
|
|
10264
10270
|
return () => {
|
|
@@ -10275,6 +10281,7 @@ var createVoiceConnection = (path, options = {}) => {
|
|
|
10275
10281
|
getSessionId: () => state.sessionId,
|
|
10276
10282
|
send,
|
|
10277
10283
|
sendAudio,
|
|
10284
|
+
simulateDisconnect,
|
|
10278
10285
|
start,
|
|
10279
10286
|
subscribe
|
|
10280
10287
|
};
|
|
@@ -10558,6 +10565,9 @@ var createVoiceStream = (path, options = {}) => {
|
|
|
10558
10565
|
sendAudio(audio) {
|
|
10559
10566
|
connection.sendAudio(audio);
|
|
10560
10567
|
},
|
|
10568
|
+
simulateDisconnect() {
|
|
10569
|
+
connection.simulateDisconnect();
|
|
10570
|
+
},
|
|
10561
10571
|
subscribe(subscriber) {
|
|
10562
10572
|
subscribers.add(subscriber);
|
|
10563
10573
|
return () => {
|
|
@@ -10613,6 +10623,7 @@ function useVoiceStream(path, options = {}) {
|
|
|
10613
10623
|
partial,
|
|
10614
10624
|
reconnect,
|
|
10615
10625
|
sendAudio: (audio) => stream.sendAudio(audio),
|
|
10626
|
+
simulateDisconnect: () => stream.simulateDisconnect(),
|
|
10616
10627
|
sessionId,
|
|
10617
10628
|
sessionMetadata,
|
|
10618
10629
|
status,
|
|
@@ -11226,6 +11237,7 @@ var createVoiceController = (path, options = {}) => {
|
|
|
11226
11237
|
return state.reconnect;
|
|
11227
11238
|
},
|
|
11228
11239
|
sendAudio: (audio) => stream.sendAudio(audio),
|
|
11240
|
+
simulateDisconnect: () => stream.simulateDisconnect(),
|
|
11229
11241
|
get sessionId() {
|
|
11230
11242
|
return state.sessionId;
|
|
11231
11243
|
},
|
|
@@ -11315,6 +11327,7 @@ function useVoiceController(path, options = {}) {
|
|
|
11315
11327
|
reconnect,
|
|
11316
11328
|
recordingError,
|
|
11317
11329
|
sendAudio: (audio) => controller.sendAudio(audio),
|
|
11330
|
+
simulateDisconnect: () => controller.simulateDisconnect(),
|
|
11318
11331
|
sessionId,
|
|
11319
11332
|
startRecording: () => controller.startRecording(),
|
|
11320
11333
|
status,
|
|
@@ -22,6 +22,7 @@ export declare function useVoiceController<TResult = unknown>(path: string, opti
|
|
|
22
22
|
reconnect: import("vue").ShallowRef<import("..").VoiceReconnectClientState, import("..").VoiceReconnectClientState>;
|
|
23
23
|
recordingError: import("vue").Ref<string | null, string | null>;
|
|
24
24
|
sendAudio: (audio: Uint8Array | ArrayBuffer) => void;
|
|
25
|
+
simulateDisconnect: () => void;
|
|
25
26
|
sessionId: import("vue").Ref<string | null, string | null>;
|
|
26
27
|
startRecording: () => Promise<void>;
|
|
27
28
|
status: import("vue").Ref<import("..").VoiceSessionStatus | "idle", import("..").VoiceSessionStatus | "idle">;
|
|
@@ -21,6 +21,7 @@ export declare function useVoiceStream<TResult = unknown>(path: string, options?
|
|
|
21
21
|
partial: import("vue").Ref<string, string>;
|
|
22
22
|
reconnect: import("vue").ShallowRef<import("..").VoiceReconnectClientState, import("..").VoiceReconnectClientState>;
|
|
23
23
|
sendAudio: (audio: Uint8Array | ArrayBuffer) => void;
|
|
24
|
+
simulateDisconnect: () => void;
|
|
24
25
|
sessionId: import("vue").Ref<string | null, string | null>;
|
|
25
26
|
sessionMetadata: import("vue").ShallowRef<Record<string, unknown> | null, Record<string, unknown> | null>;
|
|
26
27
|
status: import("vue").Ref<import("..").VoiceSessionStatus | "idle", import("..").VoiceSessionStatus | "idle">;
|