@gradio/client 0.8.1 → 0.9.0

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 CHANGED
@@ -1,5 +1,21 @@
1
1
  # @gradio/client
2
2
 
3
+ ## 0.9.0
4
+
5
+ ### Features
6
+
7
+ - [#6398](https://github.com/gradio-app/gradio/pull/6398) [`67ddd40`](https://github.com/gradio-app/gradio/commit/67ddd40b4b70d3a37cb1637c33620f8d197dbee0) - Lite v4. Thanks [@whitphx](https://github.com/whitphx)!
8
+
9
+ ### Fixes
10
+
11
+ - [#6556](https://github.com/gradio-app/gradio/pull/6556) [`d76bcaa`](https://github.com/gradio-app/gradio/commit/d76bcaaaf0734aaf49a680f94ea9d4d22a602e70) - Fix api event drops. Thanks [@aliabid94](https://github.com/aliabid94)!
12
+
13
+ ## 0.8.2
14
+
15
+ ### Features
16
+
17
+ - [#6511](https://github.com/gradio-app/gradio/pull/6511) [`71f1a1f99`](https://github.com/gradio-app/gradio/commit/71f1a1f9931489d465c2c1302a5c8d768a3cd23a) - Mark `FileData.orig_name` optional on the frontend aligning the type definition on the Python side. Thanks [@whitphx](https://github.com/whitphx)!
18
+
3
19
  ## 0.8.1
4
20
 
5
21
  ### Fixes
package/dist/client.d.ts CHANGED
@@ -34,7 +34,7 @@ interface Client {
34
34
  }) => Promise<client_return>;
35
35
  handle_blob: (endpoint: string, data: unknown[], api_info: ApiInfo<JsApiData>, token?: `hf_${string}`) => Promise<unknown[]>;
36
36
  }
37
- export declare function api_factory(fetch_implementation: typeof fetch, WebSocket_factory: (url: URL) => WebSocket): Client;
37
+ export declare function api_factory(fetch_implementation: typeof fetch, EventSource_factory: (url: URL) => EventSource): Client;
38
38
  export declare const post_data: (url: string, body: unknown, token?: `hf_${string}`) => Promise<[PostResponse, number]>, upload_files: (root: string, files: File[], token?: `hf_${string}`, upload_id?: string) => Promise<UploadResponse>, client: (app_reference: string, options: {
39
39
  hf_token?: `hf_${string}`;
40
40
  status_callback?: SpaceStatusCallback;
@@ -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
@@ -326,7 +326,7 @@ async function duplicate(app_reference, options) {
326
326
  throw new Error(e);
327
327
  }
328
328
  }
329
- function api_factory(fetch_implementation, WebSocket_factory) {
329
+ function api_factory(fetch_implementation, EventSource_factory) {
330
330
  return { post_data: post_data2, upload_files: upload_files2, client: client2, handle_blob: handle_blob2 };
331
331
  async function post_data2(url, body, token) {
332
332
  const headers = { "Content-Type": "application/json" };
@@ -384,13 +384,16 @@ function api_factory(fetch_implementation, WebSocket_factory) {
384
384
  };
385
385
  const transform_files = normalise_files ?? true;
386
386
  if ((typeof window === "undefined" || !("WebSocket" in window)) && !global.Websocket) {
387
- const ws = await import("./wrapper-98f94c21.js");
387
+ const ws = await import("./wrapper-6f348d45.js");
388
388
  NodeBlob = (await import("node:buffer")).Blob;
389
389
  global.WebSocket = ws.WebSocket;
390
390
  }
391
391
  const { ws_protocol, http_protocol, host, space_id } = await process_endpoint(app_reference, hf_token);
392
392
  const session_hash = Math.random().toString(36).substring(2);
393
393
  const last_status = {};
394
+ let stream_open = false;
395
+ let event_stream = null;
396
+ const event_callbacks = {};
394
397
  let config;
395
398
  let api_map = {};
396
399
  let jwt = false;
@@ -523,7 +526,7 @@ function api_factory(fetch_implementation, WebSocket_factory) {
523
526
  }
524
527
  let websocket;
525
528
  let eventSource;
526
- let protocol = config.protocol ?? "sse";
529
+ let protocol = config.protocol ?? "ws";
527
530
  const _endpoint = typeof endpoint === "number" ? "/predict" : endpoint;
528
531
  let payload;
529
532
  let event_id = null;
@@ -620,7 +623,7 @@ function api_factory(fetch_implementation, WebSocket_factory) {
620
623
  if (jwt) {
621
624
  url.searchParams.set("__sign", jwt);
622
625
  }
623
- websocket = WebSocket_factory(url);
626
+ websocket = new WebSocket(url);
624
627
  websocket.onclose = (evt) => {
625
628
  if (!evt.wasClean) {
626
629
  fire_event({
@@ -711,7 +714,7 @@ function api_factory(fetch_implementation, WebSocket_factory) {
711
714
  () => websocket.send(JSON.stringify({ hash: session_hash }))
712
715
  );
713
716
  }
714
- } else {
717
+ } else if (protocol == "sse") {
715
718
  fire_event({
716
719
  type: "status",
717
720
  stage: "pending",
@@ -731,7 +734,7 @@ function api_factory(fetch_implementation, WebSocket_factory) {
731
734
  true
732
735
  )}/queue/join?${url_params ? url_params + "&" : ""}${params}`
733
736
  );
734
- eventSource = new EventSource(url);
737
+ eventSource = EventSource_factory(url);
735
738
  eventSource.onmessage = async function(event) {
736
739
  const _data = JSON.parse(event.data);
737
740
  const { type, status, data: data2 } = handle_message(
@@ -824,6 +827,113 @@ function api_factory(fetch_implementation, WebSocket_factory) {
824
827
  }
825
828
  }
826
829
  };
830
+ } else if (protocol == "sse_v1") {
831
+ fire_event({
832
+ type: "status",
833
+ stage: "pending",
834
+ queue: true,
835
+ endpoint: _endpoint,
836
+ fn_index,
837
+ time: /* @__PURE__ */ new Date()
838
+ });
839
+ post_data2(
840
+ `${http_protocol}//${resolve_root(
841
+ host,
842
+ config.path,
843
+ true
844
+ )}/queue/join?${url_params}`,
845
+ {
846
+ ...payload,
847
+ session_hash
848
+ },
849
+ hf_token
850
+ ).then(([response, status]) => {
851
+ if (status !== 200) {
852
+ fire_event({
853
+ type: "status",
854
+ stage: "error",
855
+ message: BROKEN_CONNECTION_MSG,
856
+ queue: true,
857
+ endpoint: _endpoint,
858
+ fn_index,
859
+ time: /* @__PURE__ */ new Date()
860
+ });
861
+ } else {
862
+ event_id = response.event_id;
863
+ if (!stream_open) {
864
+ open_stream();
865
+ }
866
+ let callback = async function(_data) {
867
+ const { type, status: status2, data: data2 } = handle_message(
868
+ _data,
869
+ last_status[fn_index]
870
+ );
871
+ if (type === "update" && status2 && !complete) {
872
+ fire_event({
873
+ type: "status",
874
+ endpoint: _endpoint,
875
+ fn_index,
876
+ time: /* @__PURE__ */ new Date(),
877
+ ...status2
878
+ });
879
+ } else if (type === "complete") {
880
+ complete = status2;
881
+ } else if (type === "log") {
882
+ fire_event({
883
+ type: "log",
884
+ log: data2.log,
885
+ level: data2.level,
886
+ endpoint: _endpoint,
887
+ fn_index
888
+ });
889
+ } else if (type === "generating") {
890
+ fire_event({
891
+ type: "status",
892
+ time: /* @__PURE__ */ new Date(),
893
+ ...status2,
894
+ stage: status2 == null ? void 0 : status2.stage,
895
+ queue: true,
896
+ endpoint: _endpoint,
897
+ fn_index
898
+ });
899
+ }
900
+ if (data2) {
901
+ fire_event({
902
+ type: "data",
903
+ time: /* @__PURE__ */ new Date(),
904
+ data: transform_files ? transform_output(
905
+ data2.data,
906
+ api_info,
907
+ config.root,
908
+ config.root_url
909
+ ) : data2.data,
910
+ endpoint: _endpoint,
911
+ fn_index
912
+ });
913
+ if (complete) {
914
+ fire_event({
915
+ type: "status",
916
+ time: /* @__PURE__ */ new Date(),
917
+ ...complete,
918
+ stage: status2 == null ? void 0 : status2.stage,
919
+ queue: true,
920
+ endpoint: _endpoint,
921
+ fn_index
922
+ });
923
+ }
924
+ }
925
+ if (status2.stage === "complete" || status2.stage === "error") {
926
+ if (event_callbacks[event_id]) {
927
+ delete event_callbacks[event_id];
928
+ if (Object.keys(event_callbacks).length === 0) {
929
+ close_stream();
930
+ }
931
+ }
932
+ }
933
+ };
934
+ event_callbacks[event_id] = callback;
935
+ }
936
+ });
827
937
  }
828
938
  });
829
939
  function fire_event(event) {
@@ -905,6 +1015,28 @@ function api_factory(fetch_implementation, WebSocket_factory) {
905
1015
  destroy
906
1016
  };
907
1017
  }
1018
+ function open_stream() {
1019
+ stream_open = true;
1020
+ let params = new URLSearchParams({
1021
+ session_hash
1022
+ }).toString();
1023
+ let url = new URL(
1024
+ `${http_protocol}//${resolve_root(
1025
+ host,
1026
+ config.path,
1027
+ true
1028
+ )}/queue/data?${params}`
1029
+ );
1030
+ event_stream = new EventSource(url);
1031
+ event_stream.onmessage = async function(event) {
1032
+ let _data = JSON.parse(event.data);
1033
+ await event_callbacks[_data.event_id](_data);
1034
+ };
1035
+ }
1036
+ function close_stream() {
1037
+ stream_open = false;
1038
+ event_stream == null ? void 0 : event_stream.close();
1039
+ }
908
1040
  async function component_server(component_id, fn_name, data) {
909
1041
  var _a;
910
1042
  const headers = { "Content-Type": "application/json" };
@@ -1016,7 +1148,7 @@ function api_factory(fetch_implementation, WebSocket_factory) {
1016
1148
  }
1017
1149
  const { post_data, upload_files, client, handle_blob } = api_factory(
1018
1150
  fetch,
1019
- (...args) => new WebSocket(...args)
1151
+ (...args) => new EventSource(...args)
1020
1152
  );
1021
1153
  function transform_output(data, api_info, root_url, remote_url) {
1022
1154
  return data.map((d, i) => {
package/dist/types.d.ts CHANGED
@@ -20,7 +20,7 @@ export interface Config {
20
20
  show_api: boolean;
21
21
  stylesheets: string[];
22
22
  path: string;
23
- protocol?: "sse" | "ws";
23
+ protocol?: "sse_v1" | "sse" | "ws";
24
24
  }
25
25
  export interface Payload {
26
26
  data: unknown[];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM;IACtB,aAAa,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,GAAG,EAAE,CAAC;IAClB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,YAAY,EAAE,GAAG,EAAE,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,GAAG,CAAC;IACZ,IAAI,EAAE,QAAQ,GAAG,WAAW,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,OAAO;IACvB,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,YAAY;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CACjB;AACD,MAAM,WAAW,cAAc;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,MAAM;IACtB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,SAAS,GAAG,OAAO,GAAG,UAAU,GAAG,YAAY,CAAC;IACvD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE;QACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;KACpB,EAAE,CAAC;IACJ,IAAI,CAAC,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,UAAU;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IACjC,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;IAClE,MAAM,EACH,UAAU,GACV,SAAS,GACT,kBAAkB,GAClB,UAAU,GACV,WAAW,CAAC;IACf,WAAW,EAAE,SAAS,GAAG,OAAO,GAAG,UAAU,GAAG,YAAY,CAAC;IAC7D,OAAO,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,gBAAgB;IAChC,MAAM,EAAE,aAAa,GAAG,QAAQ,CAAC;IACjC,MAAM,EACH,aAAa,GACb,cAAc,GACd,aAAa,GACb,eAAe,GACf,QAAQ,CAAC;IACZ,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,EAAE,OAAO,CAAC;CAC7B;AACD,MAAM,MAAM,WAAW,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;AAE/D,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;AAC3D,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,EAAE,WAAW,KAAK,IAAI,CAAC;AAE3D,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAElD,MAAM,WAAW,QAAQ;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,UAAU,CAAC;CAChB;AAED,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,SAAS,IAAI;KACvC,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;CACvE,CAAC,CAAC,CAAC,CAAC;AACL,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,SAAS,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AAC3E,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,SAAS,IAAI;KAC7C,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE;CAC7B,CAAC;AACF,MAAM,WAAW,QAAQ;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB"}
package/dist/upload.d.ts CHANGED
@@ -9,7 +9,7 @@ export declare function prepare_files(files: File[], is_stream?: boolean): Promi
9
9
  export declare class FileData {
10
10
  path: string;
11
11
  url?: string;
12
- orig_name: string;
12
+ orig_name?: string;
13
13
  size?: number;
14
14
  blob?: File;
15
15
  is_stream?: boolean;
@@ -18,7 +18,7 @@ export declare class FileData {
18
18
  constructor({ path, url, orig_name, size, blob, is_stream, mime_type, alt_text }: {
19
19
  path: string;
20
20
  url?: string;
21
- orig_name: string;
21
+ orig_name?: string;
22
22
  size?: number;
23
23
  blob?: File;
24
24
  is_stream?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../src/upload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,wBAAgB,cAAc,CAC7B,IAAI,EAAE,QAAQ,GAAG,IAAI,EACrB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAAG,IAAI,GACtB,QAAQ,GAAG,IAAI,CAAC;AAEnB,wBAAgB,cAAc,CAC7B,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,EACvB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAAG,IAAI,GACtB,QAAQ,EAAE,GAAG,IAAI,CAAC;AAErB,wBAAgB,cAAc,CAC7B,IAAI,EAAE,QAAQ,EAAE,GAAG,QAAQ,GAAG,IAAI,EAClC,UAAU,EAAE,MAAM,EAAE,gBAAgB;AACpC,SAAS,EAAE,MAAM,GAAG,IAAI,GACtB,QAAQ,EAAE,GAAG,QAAQ,GAAG,IAAI,CAAC;AAqDhC,wBAAgB,yBAAyB,CACxC,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAAG,IAAI,GACtB,MAAM,CAUR;AAED,wBAAsB,MAAM,CAC3B,SAAS,EAAE,QAAQ,EAAE,EACrB,IAAI,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,GAAE,OAAO,YAA2B,GAC3C,OAAO,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,CAwBrC;AAED,wBAAsB,aAAa,CAClC,KAAK,EAAE,IAAI,EAAE,EACb,SAAS,CAAC,EAAE,OAAO,GACjB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAYrB;AAED,qBAAa,QAAQ;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;gBAEN,EACX,IAAI,EACJ,GAAG,EACH,SAAS,EACT,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,SAAS,EACT,QAAQ,EACR,EAAE;QACF,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,IAAI,CAAC;QACZ,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;KAClB;CAUD"}
1
+ {"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../src/upload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,wBAAgB,cAAc,CAC7B,IAAI,EAAE,QAAQ,GAAG,IAAI,EACrB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAAG,IAAI,GACtB,QAAQ,GAAG,IAAI,CAAC;AAEnB,wBAAgB,cAAc,CAC7B,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,EACvB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAAG,IAAI,GACtB,QAAQ,EAAE,GAAG,IAAI,CAAC;AAErB,wBAAgB,cAAc,CAC7B,IAAI,EAAE,QAAQ,EAAE,GAAG,QAAQ,GAAG,IAAI,EAClC,UAAU,EAAE,MAAM,EAAE,gBAAgB;AACpC,SAAS,EAAE,MAAM,GAAG,IAAI,GACtB,QAAQ,EAAE,GAAG,QAAQ,GAAG,IAAI,CAAC;AAqDhC,wBAAgB,yBAAyB,CACxC,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAAG,IAAI,GACtB,MAAM,CAUR;AAED,wBAAsB,MAAM,CAC3B,SAAS,EAAE,QAAQ,EAAE,EACrB,IAAI,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,GAAE,OAAO,YAA2B,GAC3C,OAAO,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,CAwBrC;AAED,wBAAsB,aAAa,CAClC,KAAK,EAAE,IAAI,EAAE,EACb,SAAS,CAAC,EAAE,OAAO,GACjB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAYrB;AAED,qBAAa,QAAQ;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;gBAEN,EACX,IAAI,EACJ,GAAG,EACH,SAAS,EACT,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,SAAS,EACT,QAAQ,EACR,EAAE;QACF,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,IAAI,CAAC;QACZ,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;KAClB;CAUD"}
@@ -18,7 +18,10 @@ function getAugmentedNamespace(n) {
18
18
  if (typeof f == "function") {
19
19
  var a = function a2() {
20
20
  if (this instanceof a2) {
21
- return Reflect.construct(f, arguments, this.constructor);
21
+ var args = [null];
22
+ args.push.apply(args, arguments);
23
+ var Ctor = Function.bind.apply(f, args);
24
+ return new Ctor();
22
25
  }
23
26
  return f.apply(this, arguments);
24
27
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gradio/client",
3
- "version": "0.8.1",
3
+ "version": "0.9.0",
4
4
  "description": "Gradio API client",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/src/client.ts CHANGED
@@ -178,7 +178,7 @@ interface Client {
178
178
 
179
179
  export function api_factory(
180
180
  fetch_implementation: typeof fetch,
181
- WebSocket_factory: (url: URL) => WebSocket
181
+ EventSource_factory: (url: URL) => EventSource
182
182
  ): Client {
183
183
  return { post_data, upload_files, client, handle_blob };
184
184
 
@@ -278,6 +278,9 @@ export function api_factory(
278
278
 
279
279
  const session_hash = Math.random().toString(36).substring(2);
280
280
  const last_status: Record<string, Status["stage"]> = {};
281
+ let stream_open = false;
282
+ let event_stream: EventSource | null = null;
283
+ const event_callbacks: Record<string, () => Promise<void>> = {};
281
284
  let config: Config;
282
285
  let api_map: Record<string, number> = {};
283
286
 
@@ -437,7 +440,7 @@ export function api_factory(
437
440
 
438
441
  let websocket: WebSocket;
439
442
  let eventSource: EventSource;
440
- let protocol = config.protocol ?? "sse";
443
+ let protocol = config.protocol ?? "ws";
441
444
 
442
445
  const _endpoint = typeof endpoint === "number" ? "/predict" : endpoint;
443
446
  let payload: Payload;
@@ -546,7 +549,7 @@ export function api_factory(
546
549
  url.searchParams.set("__sign", jwt);
547
550
  }
548
551
 
549
- websocket = WebSocket_factory(url);
552
+ websocket = new WebSocket(url);
550
553
 
551
554
  websocket.onclose = (evt) => {
552
555
  if (!evt.wasClean) {
@@ -646,7 +649,7 @@ export function api_factory(
646
649
  websocket.send(JSON.stringify({ hash: session_hash }))
647
650
  );
648
651
  }
649
- } else {
652
+ } else if (protocol == "sse") {
650
653
  fire_event({
651
654
  type: "status",
652
655
  stage: "pending",
@@ -667,7 +670,7 @@ export function api_factory(
667
670
  )}/queue/join?${url_params ? url_params + "&" : ""}${params}`
668
671
  );
669
672
 
670
- eventSource = new EventSource(url);
673
+ eventSource = EventSource_factory(url);
671
674
 
672
675
  eventSource.onmessage = async function (event) {
673
676
  const _data = JSON.parse(event.data);
@@ -766,6 +769,121 @@ export function api_factory(
766
769
  }
767
770
  }
768
771
  };
772
+ } else if (protocol == "sse_v1") {
773
+ fire_event({
774
+ type: "status",
775
+ stage: "pending",
776
+ queue: true,
777
+ endpoint: _endpoint,
778
+ fn_index,
779
+ time: new Date()
780
+ });
781
+
782
+ post_data(
783
+ `${http_protocol}//${resolve_root(
784
+ host,
785
+ config.path,
786
+ true
787
+ )}/queue/join?${url_params}`,
788
+ {
789
+ ...payload,
790
+ session_hash
791
+ },
792
+ hf_token
793
+ ).then(([response, status]) => {
794
+ if (status !== 200) {
795
+ fire_event({
796
+ type: "status",
797
+ stage: "error",
798
+ message: BROKEN_CONNECTION_MSG,
799
+ queue: true,
800
+ endpoint: _endpoint,
801
+ fn_index,
802
+ time: new Date()
803
+ });
804
+ } else {
805
+ event_id = response.event_id as string;
806
+ if (!stream_open) {
807
+ open_stream();
808
+ }
809
+
810
+ let callback = async function (_data: object): void {
811
+ const { type, status, data } = handle_message(
812
+ _data,
813
+ last_status[fn_index]
814
+ );
815
+
816
+ if (type === "update" && status && !complete) {
817
+ // call 'status' listeners
818
+ fire_event({
819
+ type: "status",
820
+ endpoint: _endpoint,
821
+ fn_index,
822
+ time: new Date(),
823
+ ...status
824
+ });
825
+ } else if (type === "complete") {
826
+ complete = status;
827
+ } else if (type === "log") {
828
+ fire_event({
829
+ type: "log",
830
+ log: data.log,
831
+ level: data.level,
832
+ endpoint: _endpoint,
833
+ fn_index
834
+ });
835
+ } else if (type === "generating") {
836
+ fire_event({
837
+ type: "status",
838
+ time: new Date(),
839
+ ...status,
840
+ stage: status?.stage!,
841
+ queue: true,
842
+ endpoint: _endpoint,
843
+ fn_index
844
+ });
845
+ }
846
+ if (data) {
847
+ fire_event({
848
+ type: "data",
849
+ time: new Date(),
850
+ data: transform_files
851
+ ? transform_output(
852
+ data.data,
853
+ api_info,
854
+ config.root,
855
+ config.root_url
856
+ )
857
+ : data.data,
858
+ endpoint: _endpoint,
859
+ fn_index
860
+ });
861
+
862
+ if (complete) {
863
+ fire_event({
864
+ type: "status",
865
+ time: new Date(),
866
+ ...complete,
867
+ stage: status?.stage!,
868
+ queue: true,
869
+ endpoint: _endpoint,
870
+ fn_index
871
+ });
872
+ }
873
+ }
874
+
875
+ if (status.stage === "complete" || status.stage === "error") {
876
+ if (event_callbacks[event_id]) {
877
+ delete event_callbacks[event_id];
878
+ if (Object.keys(event_callbacks).length === 0) {
879
+ close_stream();
880
+ }
881
+ }
882
+ }
883
+ };
884
+ event_callbacks[event_id] = callback;
885
+ }
886
+ });
769
887
  }
770
888
  });
771
889
 
@@ -864,6 +982,30 @@ export function api_factory(
864
982
  };
865
983
  }
866
984
 
985
+ function open_stream(): void {
986
+ stream_open = true;
987
+ let params = new URLSearchParams({
988
+ session_hash: session_hash
989
+ }).toString();
990
+ let url = new URL(
991
+ `${http_protocol}//${resolve_root(
992
+ host,
993
+ config.path,
994
+ true
995
+ )}/queue/data?${params}`
996
+ );
997
+ event_stream = new EventSource(url);
998
+ event_stream.onmessage = async function (event) {
999
+ let _data = JSON.parse(event.data);
1000
+ await event_callbacks[_data.event_id](_data);
1001
+ };
1002
+ }
1003
+
1004
+ function close_stream(): void {
1005
+ stream_open = false;
1006
+ event_stream?.close();
1007
+ }
1008
+
867
1009
  async function component_server(
868
1010
  component_id: number,
869
1011
  fn_name: string,
@@ -1007,7 +1149,7 @@ export function api_factory(
1007
1149
 
1008
1150
  export const { post_data, upload_files, client, handle_blob } = api_factory(
1009
1151
  fetch,
1010
- (...args) => new WebSocket(...args)
1152
+ (...args) => new EventSource(...args)
1011
1153
  );
1012
1154
 
1013
1155
  function transform_output(
package/src/types.ts CHANGED
@@ -20,7 +20,7 @@ export interface Config {
20
20
  show_api: boolean;
21
21
  stylesheets: string[];
22
22
  path: string;
23
- protocol?: "sse" | "ws";
23
+ protocol?: "sse_v1" | "sse" | "ws";
24
24
  }
25
25
 
26
26
  export interface Payload {
package/src/upload.ts CHANGED
@@ -136,7 +136,7 @@ export async function prepare_files(
136
136
  export class FileData {
137
137
  path: string;
138
138
  url?: string;
139
- orig_name: string;
139
+ orig_name?: string;
140
140
  size?: number;
141
141
  blob?: File;
142
142
  is_stream?: boolean;
@@ -155,7 +155,7 @@ export class FileData {
155
155
  }: {
156
156
  path: string;
157
157
  url?: string;
158
- orig_name: string;
158
+ orig_name?: string;
159
159
  size?: number;
160
160
  blob?: File;
161
161
  is_stream?: boolean;