@gradio/client 0.9.4 → 0.10.1
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/CHANGELOG.md +13 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/index.js +23 -6
- package/package.json +1 -1
- package/src/client.ts +24 -10
package/CHANGELOG.md
CHANGED
@@ -1,5 +1,18 @@
|
|
1
1
|
# @gradio/client
|
2
2
|
|
3
|
+
## 0.10.1
|
4
|
+
|
5
|
+
### Fixes
|
6
|
+
|
7
|
+
- [#7055](https://github.com/gradio-app/gradio/pull/7055) [`3c3cf86`](https://github.com/gradio-app/gradio/commit/3c3cf8618a8cad1ef66a7f96664923d2c9f5e0e2) - Fix UI freeze on rapid generators. Thanks [@aliabid94](https://github.com/aliabid94)!
|
8
|
+
|
9
|
+
## 0.10.0
|
10
|
+
|
11
|
+
### Features
|
12
|
+
|
13
|
+
- [#6931](https://github.com/gradio-app/gradio/pull/6931) [`6c863af`](https://github.com/gradio-app/gradio/commit/6c863af92fa9ceb5c638857eb22cc5ddb718d549) - Fix functional tests. Thanks [@aliabid94](https://github.com/aliabid94)!
|
14
|
+
- [#6820](https://github.com/gradio-app/gradio/pull/6820) [`649cd4d`](https://github.com/gradio-app/gradio/commit/649cd4d68041d11fcbe31f8efa455345ac49fc74) - Use `EventSource_factory` in `open_stream()` for Wasm. Thanks [@whitphx](https://github.com/whitphx)!
|
15
|
+
|
3
16
|
## 0.9.4
|
4
17
|
|
5
18
|
### Fixes
|
package/dist/client.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
@@ -403,6 +403,7 @@ function api_factory(fetch_implementation, EventSource_factory) {
|
|
403
403
|
let pending_stream_messages = {};
|
404
404
|
let event_stream = null;
|
405
405
|
const event_callbacks = {};
|
406
|
+
const unclosed_events = /* @__PURE__ */ new Set();
|
406
407
|
let config;
|
407
408
|
let api_map = {};
|
408
409
|
let jwt = false;
|
@@ -892,7 +893,7 @@ function api_factory(fetch_implementation, EventSource_factory) {
|
|
892
893
|
fire_event({
|
893
894
|
type: "status",
|
894
895
|
stage: "error",
|
895
|
-
message: "An Unexpected Error Occurred!",
|
896
|
+
message: (status2 == null ? void 0 : status2.message) || "An Unexpected Error Occurred!",
|
896
897
|
queue: true,
|
897
898
|
endpoint: _endpoint,
|
898
899
|
fn_index,
|
@@ -946,9 +947,6 @@ function api_factory(fetch_implementation, EventSource_factory) {
|
|
946
947
|
if ((status2 == null ? void 0 : status2.stage) === "complete" || (status2 == null ? void 0 : status2.stage) === "error") {
|
947
948
|
if (event_callbacks[event_id]) {
|
948
949
|
delete event_callbacks[event_id];
|
949
|
-
if (Object.keys(event_callbacks).length === 0) {
|
950
|
-
close_stream();
|
951
|
-
}
|
952
950
|
}
|
953
951
|
}
|
954
952
|
} catch (e) {
|
@@ -972,6 +970,7 @@ function api_factory(fetch_implementation, EventSource_factory) {
|
|
972
970
|
delete pending_stream_messages[event_id];
|
973
971
|
}
|
974
972
|
event_callbacks[event_id] = callback;
|
973
|
+
unclosed_events.add(event_id);
|
975
974
|
if (!stream_open) {
|
976
975
|
open_stream();
|
977
976
|
}
|
@@ -1058,7 +1057,7 @@ function api_factory(fetch_implementation, EventSource_factory) {
|
|
1058
1057
|
session_hash
|
1059
1058
|
}).toString();
|
1060
1059
|
let url = new URL(`${config.root}/queue/data?${params}`);
|
1061
|
-
event_stream =
|
1060
|
+
event_stream = EventSource_factory(url);
|
1062
1061
|
event_stream.onmessage = async function(event) {
|
1063
1062
|
let _data = JSON.parse(event.data);
|
1064
1063
|
const event_id = _data.event_id;
|
@@ -1069,7 +1068,14 @@ function api_factory(fetch_implementation, EventSource_factory) {
|
|
1069
1068
|
)
|
1070
1069
|
);
|
1071
1070
|
} else if (event_callbacks[event_id]) {
|
1072
|
-
|
1071
|
+
if (_data.msg === "process_completed") {
|
1072
|
+
unclosed_events.delete(event_id);
|
1073
|
+
if (unclosed_events.size === 0) {
|
1074
|
+
close_stream();
|
1075
|
+
}
|
1076
|
+
}
|
1077
|
+
let fn2 = event_callbacks[event_id];
|
1078
|
+
window.setTimeout(fn2, 0, _data);
|
1073
1079
|
} else {
|
1074
1080
|
if (!pending_stream_messages[event_id]) {
|
1075
1081
|
pending_stream_messages[event_id] = [];
|
@@ -1077,6 +1083,17 @@ function api_factory(fetch_implementation, EventSource_factory) {
|
|
1077
1083
|
pending_stream_messages[event_id].push(_data);
|
1078
1084
|
}
|
1079
1085
|
};
|
1086
|
+
event_stream.onerror = async function(event) {
|
1087
|
+
await Promise.all(
|
1088
|
+
Object.keys(event_callbacks).map(
|
1089
|
+
(event_id) => event_callbacks[event_id]({
|
1090
|
+
msg: "unexpected_error",
|
1091
|
+
message: BROKEN_CONNECTION_MSG
|
1092
|
+
})
|
1093
|
+
)
|
1094
|
+
);
|
1095
|
+
close_stream();
|
1096
|
+
};
|
1080
1097
|
}
|
1081
1098
|
function close_stream() {
|
1082
1099
|
stream_open = false;
|
package/package.json
CHANGED
package/src/client.ts
CHANGED
@@ -290,6 +290,7 @@ export function api_factory(
|
|
290
290
|
let pending_stream_messages: Record<string, any[]> = {}; // Event messages may be received by the SSE stream before the initial data POST request is complete. To resolve this race condition, we store the messages in a dictionary and process them when the POST request is complete.
|
291
291
|
let event_stream: EventSource | null = null;
|
292
292
|
const event_callbacks: Record<string, () => Promise<void>> = {};
|
293
|
+
const unclosed_events: Set<string> = new Set();
|
293
294
|
let config: Config;
|
294
295
|
let api_map: Record<string, number> = {};
|
295
296
|
|
@@ -820,10 +821,6 @@ export function api_factory(
|
|
820
821
|
last_status[fn_index]
|
821
822
|
);
|
822
823
|
|
823
|
-
// TODO: Find out how to print this information
|
824
|
-
// only during testing
|
825
|
-
// console.info("data", type, status, data);
|
826
|
-
|
827
824
|
if (type == "heartbeat") {
|
828
825
|
return;
|
829
826
|
}
|
@@ -844,7 +841,8 @@ export function api_factory(
|
|
844
841
|
fire_event({
|
845
842
|
type: "status",
|
846
843
|
stage: "error",
|
847
|
-
message:
|
844
|
+
message:
|
845
|
+
status?.message || "An Unexpected Error Occurred!",
|
848
846
|
queue: true,
|
849
847
|
endpoint: _endpoint,
|
850
848
|
fn_index,
|
@@ -905,9 +903,6 @@ export function api_factory(
|
|
905
903
|
) {
|
906
904
|
if (event_callbacks[event_id]) {
|
907
905
|
delete event_callbacks[event_id];
|
908
|
-
if (Object.keys(event_callbacks).length === 0) {
|
909
|
-
close_stream();
|
910
|
-
}
|
911
906
|
}
|
912
907
|
}
|
913
908
|
} catch (e) {
|
@@ -931,6 +926,7 @@ export function api_factory(
|
|
931
926
|
delete pending_stream_messages[event_id];
|
932
927
|
}
|
933
928
|
event_callbacks[event_id] = callback;
|
929
|
+
unclosed_events.add(event_id);
|
934
930
|
if (!stream_open) {
|
935
931
|
open_stream();
|
936
932
|
}
|
@@ -1034,7 +1030,7 @@ export function api_factory(
|
|
1034
1030
|
session_hash: session_hash
|
1035
1031
|
}).toString();
|
1036
1032
|
let url = new URL(`${config.root}/queue/data?${params}`);
|
1037
|
-
event_stream =
|
1033
|
+
event_stream = EventSource_factory(url);
|
1038
1034
|
event_stream.onmessage = async function (event) {
|
1039
1035
|
let _data = JSON.parse(event.data);
|
1040
1036
|
const event_id = _data.event_id;
|
@@ -1045,7 +1041,14 @@ export function api_factory(
|
|
1045
1041
|
)
|
1046
1042
|
);
|
1047
1043
|
} else if (event_callbacks[event_id]) {
|
1048
|
-
|
1044
|
+
if (_data.msg === "process_completed") {
|
1045
|
+
unclosed_events.delete(event_id);
|
1046
|
+
if (unclosed_events.size === 0) {
|
1047
|
+
close_stream();
|
1048
|
+
}
|
1049
|
+
}
|
1050
|
+
let fn = event_callbacks[event_id];
|
1051
|
+
window.setTimeout(fn, 0, _data); // need to do this to put the event on the end of the event loop, so the browser can refresh between callbacks and not freeze in case of quick generations. See https://github.com/gradio-app/gradio/pull/7055
|
1049
1052
|
} else {
|
1050
1053
|
if (!pending_stream_messages[event_id]) {
|
1051
1054
|
pending_stream_messages[event_id] = [];
|
@@ -1053,6 +1056,17 @@ export function api_factory(
|
|
1053
1056
|
pending_stream_messages[event_id].push(_data);
|
1054
1057
|
}
|
1055
1058
|
};
|
1059
|
+
event_stream.onerror = async function (event) {
|
1060
|
+
await Promise.all(
|
1061
|
+
Object.keys(event_callbacks).map((event_id) =>
|
1062
|
+
event_callbacks[event_id]({
|
1063
|
+
msg: "unexpected_error",
|
1064
|
+
message: BROKEN_CONNECTION_MSG
|
1065
|
+
})
|
1066
|
+
)
|
1067
|
+
);
|
1068
|
+
close_stream();
|
1069
|
+
};
|
1056
1070
|
}
|
1057
1071
|
|
1058
1072
|
function close_stream(): void {
|