@gradio/client 0.10.1 → 0.12.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,17 @@
1
1
  # @gradio/client
2
2
 
3
+ ## 0.12.0
4
+
5
+ ### Features
6
+
7
+ - [#7183](https://github.com/gradio-app/gradio/pull/7183) [`49d9c48`](https://github.com/gradio-app/gradio/commit/49d9c48537aa706bf72628e3640389470138bdc6) - [WIP] Refactor file normalization to be in the backend and remove it from the frontend of each component. Thanks [@abidlabs](https://github.com/abidlabs)!
8
+
9
+ ## 0.11.0
10
+
11
+ ### Features
12
+
13
+ - [#7102](https://github.com/gradio-app/gradio/pull/7102) [`68a54a7`](https://github.com/gradio-app/gradio/commit/68a54a7a310d8d7072fdae930bf1cfdf12c45a7f) - Improve chatbot streaming performance with diffs. Thanks [@aliabid94](https://github.com/aliabid94)!/n Note that this PR changes the API format for generator functions, which would be a breaking change for any clients reading the EventStream directly
14
+
3
15
  ## 0.10.1
4
16
 
5
17
  ### Fixes
package/dist/client.d.ts CHANGED
@@ -30,7 +30,6 @@ interface Client {
30
30
  client: (app_reference: string, options: {
31
31
  hf_token?: `hf_${string}`;
32
32
  status_callback?: SpaceStatusCallback;
33
- normalise_files?: boolean;
34
33
  }) => Promise<client_return>;
35
34
  handle_blob: (endpoint: string, data: unknown[], api_info: ApiInfo<JsApiData>, token?: `hf_${string}`) => Promise<unknown[]>;
36
35
  }
@@ -38,7 +37,6 @@ export declare function api_factory(fetch_implementation: typeof fetch, EventSou
38
37
  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
38
  hf_token?: `hf_${string}`;
40
39
  status_callback?: SpaceStatusCallback;
41
- normalise_files?: boolean;
42
40
  }) => Promise<client_return>, handle_blob: (endpoint: string, data: unknown[], api_info: ApiInfo<JsApiData>, token?: `hf_${string}`) => Promise<unknown[]>;
43
41
  interface ApiData {
44
42
  label: string;
@@ -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.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  export { client, post_data, upload_files, duplicate, api_factory } from "./client.js";
2
2
  export type { SpaceStatus } from "./types.js";
3
- export { normalise_file, FileData, upload, get_fetchable_url_or_file, prepare_files } from "./upload.js";
3
+ export { FileData, upload, get_fetchable_url_or_file, prepare_files } from "./upload.js";
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,MAAM,EACN,SAAS,EACT,YAAY,EACZ,SAAS,EACT,WAAW,EACX,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EACN,cAAc,EACd,QAAQ,EACR,MAAM,EACN,yBAAyB,EACzB,aAAa,EACb,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,MAAM,EACN,SAAS,EACT,YAAY,EACZ,SAAS,EACT,WAAW,EACX,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EACN,QAAQ,EACR,MAAM,EACN,yBAAyB,EACzB,aAAa,EACb,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -170,37 +170,51 @@ const hardware_types = [
170
170
  "a10g-large",
171
171
  "a100-large"
172
172
  ];
173
- function normalise_file(file, server_url, proxy_url) {
174
- if (file == null) {
175
- return null;
173
+ function apply_edit(target, path, action, value) {
174
+ if (path.length === 0) {
175
+ if (action === "replace") {
176
+ return value;
177
+ } else if (action === "append") {
178
+ return target + value;
179
+ }
180
+ throw new Error(`Unsupported action: ${action}`);
181
+ }
182
+ let current = target;
183
+ for (let i = 0; i < path.length - 1; i++) {
184
+ current = current[path[i]];
176
185
  }
177
- if (Array.isArray(file)) {
178
- const normalized_file = [];
179
- for (const x of file) {
180
- if (x == null) {
181
- normalized_file.push(null);
186
+ const last_path = path[path.length - 1];
187
+ switch (action) {
188
+ case "replace":
189
+ current[last_path] = value;
190
+ break;
191
+ case "append":
192
+ current[last_path] += value;
193
+ break;
194
+ case "add":
195
+ if (Array.isArray(current)) {
196
+ current.splice(Number(last_path), 0, value);
182
197
  } else {
183
- normalized_file.push(normalise_file(x, server_url, proxy_url));
198
+ current[last_path] = value;
184
199
  }
185
- }
186
- return normalized_file;
187
- }
188
- if (file.is_stream) {
189
- if (proxy_url == null) {
190
- return new FileData({
191
- ...file,
192
- url: server_url + "/stream/" + file.path
193
- });
194
- }
195
- return new FileData({
196
- ...file,
197
- url: "/proxy=" + proxy_url + "stream/" + file.path
198
- });
200
+ break;
201
+ case "delete":
202
+ if (Array.isArray(current)) {
203
+ current.splice(Number(last_path), 1);
204
+ } else {
205
+ delete current[last_path];
206
+ }
207
+ break;
208
+ default:
209
+ throw new Error(`Unknown action: ${action}`);
199
210
  }
200
- return new FileData({
201
- ...file,
202
- url: get_fetchable_url_or_file(file.path, server_url, proxy_url)
211
+ return target;
212
+ }
213
+ function apply_diff(obj, diff) {
214
+ diff.forEach(([action, path, value]) => {
215
+ obj = apply_edit(obj, path, action, value);
203
216
  });
217
+ return obj;
204
218
  }
205
219
  function is_url(str) {
206
220
  try {
@@ -231,8 +245,12 @@ async function upload(file_data, root, upload_id, upload_fn = upload_files) {
231
245
  } else {
232
246
  if (response.files) {
233
247
  return response.files.map((f, i) => {
234
- const file = new FileData({ ...file_data[i], path: f });
235
- return normalise_file(file, root, null);
248
+ const file = new FileData({
249
+ ...file_data[i],
250
+ path: f,
251
+ url: root + "/file=" + f
252
+ });
253
+ return file;
236
254
  });
237
255
  }
238
256
  return [];
@@ -381,16 +399,15 @@ function api_factory(fetch_implementation, EventSource_factory) {
381
399
  }
382
400
  return { files: uploadResponses };
383
401
  }
384
- async function client2(app_reference, options = { normalise_files: true }) {
402
+ async function client2(app_reference, options = {}) {
385
403
  return new Promise(async (res) => {
386
- const { status_callback, hf_token, normalise_files } = options;
404
+ const { status_callback, hf_token } = options;
387
405
  const return_obj = {
388
406
  predict,
389
407
  submit,
390
408
  view_api,
391
409
  component_server
392
410
  };
393
- const transform_files = normalise_files ?? true;
394
411
  if ((typeof window === "undefined" || !("WebSocket" in window)) && !global.Websocket) {
395
412
  const ws = await import("./wrapper-6f348d45.js");
396
413
  NodeBlob = (await import("node:buffer")).Blob;
@@ -401,6 +418,7 @@ function api_factory(fetch_implementation, EventSource_factory) {
401
418
  const last_status = {};
402
419
  let stream_open = false;
403
420
  let pending_stream_messages = {};
421
+ let pending_diff_streams = {};
404
422
  let event_stream = null;
405
423
  const event_callbacks = {};
406
424
  const unclosed_events = /* @__PURE__ */ new Set();
@@ -571,12 +589,7 @@ function api_factory(fetch_implementation, EventSource_factory) {
571
589
  },
572
590
  hf_token
573
591
  ).then(([output, status_code]) => {
574
- const data2 = transform_files ? transform_output(
575
- output.data,
576
- api_info,
577
- config.root,
578
- config.root_url
579
- ) : output.data;
592
+ const data2 = output.data;
580
593
  if (status_code == 200) {
581
594
  fire_event({
582
595
  type: "data",
@@ -696,12 +709,7 @@ function api_factory(fetch_implementation, EventSource_factory) {
696
709
  fire_event({
697
710
  type: "data",
698
711
  time: /* @__PURE__ */ new Date(),
699
- data: transform_files ? transform_output(
700
- data2.data,
701
- api_info,
702
- config.root,
703
- config.root_url
704
- ) : data2.data,
712
+ data: data2.data,
705
713
  endpoint: _endpoint,
706
714
  fn_index
707
715
  });
@@ -807,12 +815,7 @@ function api_factory(fetch_implementation, EventSource_factory) {
807
815
  fire_event({
808
816
  type: "data",
809
817
  time: /* @__PURE__ */ new Date(),
810
- data: transform_files ? transform_output(
811
- data2.data,
812
- api_info,
813
- config.root,
814
- config.root_url
815
- ) : data2.data,
818
+ data: data2.data,
816
819
  endpoint: _endpoint,
817
820
  fn_index
818
821
  });
@@ -830,7 +833,7 @@ function api_factory(fetch_implementation, EventSource_factory) {
830
833
  }
831
834
  }
832
835
  };
833
- } else if (protocol == "sse_v1") {
836
+ } else if (protocol == "sse_v1" || protocol == "sse_v2") {
834
837
  fire_event({
835
838
  type: "status",
836
839
  stage: "pending",
@@ -918,17 +921,15 @@ function api_factory(fetch_implementation, EventSource_factory) {
918
921
  endpoint: _endpoint,
919
922
  fn_index
920
923
  });
924
+ if (data2 && protocol === "sse_v2") {
925
+ apply_diff_stream(event_id, data2);
926
+ }
921
927
  }
922
928
  if (data2) {
923
929
  fire_event({
924
930
  type: "data",
925
931
  time: /* @__PURE__ */ new Date(),
926
- data: transform_files ? transform_output(
927
- data2.data,
928
- api_info,
929
- config.root,
930
- config.root_url
931
- ) : data2.data,
932
+ data: data2.data,
932
933
  endpoint: _endpoint,
933
934
  fn_index
934
935
  });
@@ -948,6 +949,9 @@ function api_factory(fetch_implementation, EventSource_factory) {
948
949
  if (event_callbacks[event_id]) {
949
950
  delete event_callbacks[event_id];
950
951
  }
952
+ if (event_id in pending_diff_streams) {
953
+ delete pending_diff_streams[event_id];
954
+ }
951
955
  }
952
956
  } catch (e) {
953
957
  console.error("Unexpected client exception", e);
@@ -979,6 +983,24 @@ function api_factory(fetch_implementation, EventSource_factory) {
979
983
  }
980
984
  }
981
985
  );
986
+ function apply_diff_stream(event_id2, data2) {
987
+ let is_first_generation = !pending_diff_streams[event_id2];
988
+ if (is_first_generation) {
989
+ pending_diff_streams[event_id2] = [];
990
+ data2.data.forEach((value, i) => {
991
+ pending_diff_streams[event_id2][i] = value;
992
+ });
993
+ } else {
994
+ data2.data.forEach((value, i) => {
995
+ let new_data = apply_diff(
996
+ pending_diff_streams[event_id2][i],
997
+ value
998
+ );
999
+ pending_diff_streams[event_id2][i] = new_data;
1000
+ data2.data[i] = new_data;
1001
+ });
1002
+ }
1003
+ }
982
1004
  function fire_event(event) {
983
1005
  const narrowed_listener_map = listener_map;
984
1006
  const listeners = narrowed_listener_map[event.type] || [];
@@ -1208,21 +1230,6 @@ const { post_data, upload_files, client, handle_blob } = api_factory(
1208
1230
  fetch,
1209
1231
  (...args) => new EventSource(...args)
1210
1232
  );
1211
- function transform_output(data, api_info, root_url, remote_url) {
1212
- return data.map((d, i) => {
1213
- var _a, _b, _c, _d;
1214
- if (((_b = (_a = api_info == null ? void 0 : api_info.returns) == null ? void 0 : _a[i]) == null ? void 0 : _b.component) === "File") {
1215
- return normalise_file(d, root_url, remote_url);
1216
- } else if (((_d = (_c = api_info == null ? void 0 : api_info.returns) == null ? void 0 : _c[i]) == null ? void 0 : _d.component) === "Gallery") {
1217
- return d.map((img) => {
1218
- return Array.isArray(img) ? [normalise_file(img[0], root_url, remote_url), img[1]] : [normalise_file(img, root_url, remote_url), null];
1219
- });
1220
- } else if (typeof d === "object" && d.path) {
1221
- return normalise_file(d, root_url, remote_url);
1222
- }
1223
- return d;
1224
- });
1225
- }
1226
1233
  function get_type(type, component, serializer, signature_type) {
1227
1234
  switch (type.type) {
1228
1235
  case "string":
@@ -1584,7 +1591,6 @@ export {
1584
1591
  client,
1585
1592
  duplicate,
1586
1593
  get_fetchable_url_or_file,
1587
- normalise_file,
1588
1594
  post_data,
1589
1595
  prepare_files,
1590
1596
  upload,
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_v1" | "sse" | "ws";
23
+ protocol?: "sse_v2" | "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":"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"}
package/dist/upload.d.ts CHANGED
@@ -1,8 +1,4 @@
1
1
  import { upload_files } from "./client";
2
- export declare function normalise_file(file: FileData | null, server_url: string, proxy_url: string | null): FileData | null;
3
- export declare function normalise_file(file: FileData[] | null, server_url: string, proxy_url: string | null): FileData[] | null;
4
- export declare function normalise_file(file: FileData[] | FileData | null, server_url: string, // root: string,
5
- proxy_url: string | null): FileData[] | FileData | null;
6
2
  export declare function get_fetchable_url_or_file(path: string | null, server_url: string, proxy_url: string | null): string;
7
3
  export declare function upload(file_data: FileData[], root: string, upload_id?: string, upload_fn?: typeof upload_files): Promise<(FileData | null)[] | null>;
8
4
  export declare function prepare_files(files: File[], is_stream?: boolean): Promise<FileData[]>;
@@ -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,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"}
1
+ {"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../src/upload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAWxC,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,CA2BrC;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"}
package/dist/utils.d.ts CHANGED
@@ -29,4 +29,5 @@ export declare function get_space_hardware(space_id: string, token: `hf_${string
29
29
  export declare function set_space_hardware(space_id: string, new_hardware: (typeof hardware_types)[number], token: `hf_${string}`): Promise<(typeof hardware_types)[number]>;
30
30
  export declare function set_space_timeout(space_id: string, timeout: number, token: `hf_${string}`): Promise<number>;
31
31
  export declare const hardware_types: readonly ["cpu-basic", "cpu-upgrade", "t4-small", "t4-medium", "a10g-small", "a10g-large", "a100-large"];
32
+ export declare function apply_diff(obj: any, diff: [string, (number | string)[], any][]): any;
32
33
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC3B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,OAAO,GACtB,MAAM,CAKR;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG;IACrD,WAAW,EAAE,IAAI,GAAG,KAAK,CAAC;IAC1B,aAAa,EAAE,OAAO,GAAG,QAAQ,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;CACb,CAgCA;AAED,eAAO,MAAM,aAAa,QAAqB,CAAC;AAChD,eAAO,MAAM,eAAe,QAAwB,CAAC;AACrD,wBAAsB,gBAAgB,CACrC,aAAa,EAAE,MAAM,EACrB,KAAK,CAAC,EAAE,MAAM,MAAM,EAAE,GACpB,OAAO,CAAC;IACV,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,IAAI,GAAG,KAAK,CAAC;IAC1B,aAAa,EAAE,OAAO,GAAG,QAAQ,CAAC;CAClC,CAAC,CA4CD;AAED,wBAAgB,gBAAgB,CAC/B,GAAG,EAAE,MAAM,CAAC,cAAc,CAAC,GACzB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQxB;AAID,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAe5E;AAED,wBAAsB,kBAAkB,CACvC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,MAAM,EAAE,GACnB,OAAO,CAAC,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAqB1C;AAED,wBAAsB,kBAAkB,CACvC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,EAC7C,KAAK,EAAE,MAAM,MAAM,EAAE,GACnB,OAAO,CAAC,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAuB1C;AAED,wBAAsB,iBAAiB,CACtC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,MAAM,EAAE,GACnB,OAAO,CAAC,MAAM,CAAC,CAuBjB;AAED,eAAO,MAAM,cAAc,0GAQjB,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC3B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,OAAO,GACtB,MAAM,CAKR;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG;IACrD,WAAW,EAAE,IAAI,GAAG,KAAK,CAAC;IAC1B,aAAa,EAAE,OAAO,GAAG,QAAQ,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;CACb,CAgCA;AAED,eAAO,MAAM,aAAa,QAAqB,CAAC;AAChD,eAAO,MAAM,eAAe,QAAwB,CAAC;AACrD,wBAAsB,gBAAgB,CACrC,aAAa,EAAE,MAAM,EACrB,KAAK,CAAC,EAAE,MAAM,MAAM,EAAE,GACpB,OAAO,CAAC;IACV,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,IAAI,GAAG,KAAK,CAAC;IAC1B,aAAa,EAAE,OAAO,GAAG,QAAQ,CAAC;CAClC,CAAC,CA4CD;AAED,wBAAgB,gBAAgB,CAC/B,GAAG,EAAE,MAAM,CAAC,cAAc,CAAC,GACzB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQxB;AAID,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAe5E;AAED,wBAAsB,kBAAkB,CACvC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,MAAM,EAAE,GACnB,OAAO,CAAC,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAqB1C;AAED,wBAAsB,kBAAkB,CACvC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,EAC7C,KAAK,EAAE,MAAM,MAAM,EAAE,GACnB,OAAO,CAAC,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAuB1C;AAED,wBAAsB,iBAAiB,CACtC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,MAAM,EAAE,GACnB,OAAO,CAAC,MAAM,CAAC,CAuBjB;AAED,eAAO,MAAM,cAAc,0GAQjB,CAAC;AAkDX,wBAAgB,UAAU,CACzB,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,GACxC,GAAG,CAML"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gradio/client",
3
- "version": "0.10.1",
3
+ "version": "0.12.0",
4
4
  "description": "Gradio API client",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/src/client.ts CHANGED
@@ -11,7 +11,8 @@ import {
11
11
  set_space_hardware,
12
12
  set_space_timeout,
13
13
  hardware_types,
14
- resolve_root
14
+ resolve_root,
15
+ apply_diff
15
16
  } from "./utils.js";
16
17
 
17
18
  import type {
@@ -27,7 +28,7 @@ import type {
27
28
  SpaceStatusCallback
28
29
  } from "./types.js";
29
30
 
30
- import { FileData, normalise_file } from "./upload";
31
+ import { FileData } from "./upload";
31
32
 
32
33
  import type { Config } from "./types.js";
33
34
 
@@ -165,7 +166,6 @@ interface Client {
165
166
  options: {
166
167
  hf_token?: `hf_${string}`;
167
168
  status_callback?: SpaceStatusCallback;
168
- normalise_files?: boolean;
169
169
  }
170
170
  ) => Promise<client_return>;
171
171
  handle_blob: (
@@ -258,11 +258,10 @@ export function api_factory(
258
258
  options: {
259
259
  hf_token?: `hf_${string}`;
260
260
  status_callback?: SpaceStatusCallback;
261
- normalise_files?: boolean;
262
- } = { normalise_files: true }
261
+ } = {}
263
262
  ): Promise<client_return> {
264
263
  return new Promise(async (res) => {
265
- const { status_callback, hf_token, normalise_files } = options;
264
+ const { status_callback, hf_token } = options;
266
265
  const return_obj = {
267
266
  predict,
268
267
  submit,
@@ -270,7 +269,6 @@ export function api_factory(
270
269
  component_server
271
270
  };
272
271
 
273
- const transform_files = normalise_files ?? true;
274
272
  if (
275
273
  (typeof window === "undefined" || !("WebSocket" in window)) &&
276
274
  !global.Websocket
@@ -288,6 +286,7 @@ export function api_factory(
288
286
  const last_status: Record<string, Status["stage"]> = {};
289
287
  let stream_open = false;
290
288
  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.
289
+ let pending_diff_streams: Record<string, any[][]> = {};
291
290
  let event_stream: EventSource | null = null;
292
291
  const event_callbacks: Record<string, () => Promise<void>> = {};
293
292
  const unclosed_events: Set<string> = new Set();
@@ -491,14 +490,7 @@ export function api_factory(
491
490
  hf_token
492
491
  )
493
492
  .then(([output, status_code]) => {
494
- const data = transform_files
495
- ? transform_output(
496
- output.data,
497
- api_info,
498
- config.root,
499
- config.root_url
500
- )
501
- : output.data;
493
+ const data = output.data;
502
494
  if (status_code == 200) {
503
495
  fire_event({
504
496
  type: "data",
@@ -626,14 +618,7 @@ export function api_factory(
626
618
  fire_event({
627
619
  type: "data",
628
620
  time: new Date(),
629
- data: transform_files
630
- ? transform_output(
631
- data.data,
632
- api_info,
633
- config.root,
634
- config.root_url
635
- )
636
- : data.data,
621
+ data: data.data,
637
622
  endpoint: _endpoint,
638
623
  fn_index
639
624
  });
@@ -748,14 +733,7 @@ export function api_factory(
748
733
  fire_event({
749
734
  type: "data",
750
735
  time: new Date(),
751
- data: transform_files
752
- ? transform_output(
753
- data.data,
754
- api_info,
755
- config.root,
756
- config.root_url
757
- )
758
- : data.data,
736
+ data: data.data,
759
737
  endpoint: _endpoint,
760
738
  fn_index
761
739
  });
@@ -774,7 +752,8 @@ export function api_factory(
774
752
  }
775
753
  }
776
754
  };
777
- } else if (protocol == "sse_v1") {
755
+ } else if (protocol == "sse_v1" || protocol == "sse_v2") {
756
+ // latest API format. v2 introduces sending diffs for intermediate outputs in generative functions, which makes payloads lighter.
778
757
  fire_event({
779
758
  type: "status",
780
759
  stage: "pending",
@@ -867,19 +846,15 @@ export function api_factory(
867
846
  endpoint: _endpoint,
868
847
  fn_index
869
848
  });
849
+ if (data && protocol === "sse_v2") {
850
+ apply_diff_stream(event_id!, data);
851
+ }
870
852
  }
871
853
  if (data) {
872
854
  fire_event({
873
855
  type: "data",
874
856
  time: new Date(),
875
- data: transform_files
876
- ? transform_output(
877
- data.data,
878
- api_info,
879
- config.root,
880
- config.root_url
881
- )
882
- : data.data,
857
+ data: data.data,
883
858
  endpoint: _endpoint,
884
859
  fn_index
885
860
  });
@@ -904,6 +879,9 @@ export function api_factory(
904
879
  if (event_callbacks[event_id]) {
905
880
  delete event_callbacks[event_id];
906
881
  }
882
+ if (event_id in pending_diff_streams) {
883
+ delete pending_diff_streams[event_id];
884
+ }
907
885
  }
908
886
  } catch (e) {
909
887
  console.error("Unexpected client exception", e);
@@ -936,6 +914,25 @@ export function api_factory(
936
914
  }
937
915
  );
938
916
 
917
+ function apply_diff_stream(event_id: string, data: any): void {
918
+ let is_first_generation = !pending_diff_streams[event_id];
919
+ if (is_first_generation) {
920
+ pending_diff_streams[event_id] = [];
921
+ data.data.forEach((value: any, i: number) => {
922
+ pending_diff_streams[event_id][i] = value;
923
+ });
924
+ } else {
925
+ data.data.forEach((value: any, i: number) => {
926
+ let new_data = apply_diff(
927
+ pending_diff_streams[event_id][i],
928
+ value
929
+ );
930
+ pending_diff_streams[event_id][i] = new_data;
931
+ data.data[i] = new_data;
932
+ });
933
+ }
934
+ }
935
+
939
936
  function fire_event<K extends EventType>(event: Event<K>): void {
940
937
  const narrowed_listener_map: ListenerMap<K> = listener_map;
941
938
  const listeners = narrowed_listener_map[event.type] || [];
@@ -1216,28 +1213,6 @@ export const { post_data, upload_files, client, handle_blob } = api_factory(
1216
1213
  (...args) => new EventSource(...args)
1217
1214
  );
1218
1215
 
1219
- function transform_output(
1220
- data: any[],
1221
- api_info: any,
1222
- root_url: string,
1223
- remote_url?: string
1224
- ): unknown[] {
1225
- return data.map((d, i) => {
1226
- if (api_info?.returns?.[i]?.component === "File") {
1227
- return normalise_file(d, root_url, remote_url);
1228
- } else if (api_info?.returns?.[i]?.component === "Gallery") {
1229
- return d.map((img) => {
1230
- return Array.isArray(img)
1231
- ? [normalise_file(img[0], root_url, remote_url), img[1]]
1232
- : [normalise_file(img, root_url, remote_url), null];
1233
- });
1234
- } else if (typeof d === "object" && d.path) {
1235
- return normalise_file(d, root_url, remote_url);
1236
- }
1237
- return d;
1238
- });
1239
- }
1240
-
1241
1216
  interface ApiData {
1242
1217
  label: string;
1243
1218
  type: {
package/src/index.ts CHANGED
@@ -7,7 +7,6 @@ export {
7
7
  } from "./client.js";
8
8
  export type { SpaceStatus } from "./types.js";
9
9
  export {
10
- normalise_file,
11
10
  FileData,
12
11
  upload,
13
12
  get_fetchable_url_or_file,
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_v1" | "sse" | "ws";
23
+ protocol?: "sse_v2" | "sse_v1" | "sse" | "ws";
24
24
  }
25
25
 
26
26
  export interface Payload {
package/src/upload.ts CHANGED
@@ -1,65 +1,5 @@
1
1
  import { upload_files } from "./client";
2
2
 
3
- export function normalise_file(
4
- file: FileData | null,
5
- server_url: string,
6
- proxy_url: string | null
7
- ): FileData | null;
8
-
9
- export function normalise_file(
10
- file: FileData[] | null,
11
- server_url: string,
12
- proxy_url: string | null
13
- ): FileData[] | null;
14
-
15
- export function normalise_file(
16
- file: FileData[] | FileData | null,
17
- server_url: string, // root: string,
18
- proxy_url: string | null // root_url: string | null
19
- ): FileData[] | FileData | null;
20
-
21
- export function normalise_file(
22
- file: FileData[] | FileData | null,
23
- server_url: string, // root: string,
24
- proxy_url: string | null // root_url: string | null
25
- ): FileData[] | FileData | null {
26
- if (file == null) {
27
- return null;
28
- }
29
-
30
- if (Array.isArray(file)) {
31
- const normalized_file: (FileData | null)[] = [];
32
-
33
- for (const x of file) {
34
- if (x == null) {
35
- normalized_file.push(null);
36
- } else {
37
- normalized_file.push(normalise_file(x, server_url, proxy_url));
38
- }
39
- }
40
-
41
- return normalized_file as FileData[];
42
- }
43
-
44
- if (file.is_stream) {
45
- if (proxy_url == null) {
46
- return new FileData({
47
- ...file,
48
- url: server_url + "/stream/" + file.path
49
- });
50
- }
51
- return new FileData({
52
- ...file,
53
- url: "/proxy=" + proxy_url + "stream/" + file.path
54
- });
55
- }
56
-
57
- return new FileData({
58
- ...file,
59
- url: get_fetchable_url_or_file(file.path, server_url, proxy_url)
60
- });
61
- }
62
-
63
3
  function is_url(str: string): boolean {
64
4
  try {
65
5
  const url = new URL(str);
@@ -103,9 +43,12 @@ export async function upload(
103
43
  } else {
104
44
  if (response.files) {
105
45
  return response.files.map((f, i) => {
106
- const file = new FileData({ ...file_data[i], path: f });
107
-
108
- return normalise_file(file, root, null);
46
+ const file = new FileData({
47
+ ...file_data[i],
48
+ path: f,
49
+ url: root + "/file=" + f
50
+ });
51
+ return file;
109
52
  });
110
53
  }
111
54
 
package/src/utils.ts CHANGED
@@ -239,3 +239,62 @@ export const hardware_types = [
239
239
  "a10g-large",
240
240
  "a100-large"
241
241
  ] as const;
242
+
243
+ function apply_edit(
244
+ target: any,
245
+ path: (number | string)[],
246
+ action: string,
247
+ value: any
248
+ ): any {
249
+ if (path.length === 0) {
250
+ if (action === "replace") {
251
+ return value;
252
+ } else if (action === "append") {
253
+ return target + value;
254
+ }
255
+ throw new Error(`Unsupported action: ${action}`);
256
+ }
257
+
258
+ let current = target;
259
+ for (let i = 0; i < path.length - 1; i++) {
260
+ current = current[path[i]];
261
+ }
262
+
263
+ const last_path = path[path.length - 1];
264
+ switch (action) {
265
+ case "replace":
266
+ current[last_path] = value;
267
+ break;
268
+ case "append":
269
+ current[last_path] += value;
270
+ break;
271
+ case "add":
272
+ if (Array.isArray(current)) {
273
+ current.splice(Number(last_path), 0, value);
274
+ } else {
275
+ current[last_path] = value;
276
+ }
277
+ break;
278
+ case "delete":
279
+ if (Array.isArray(current)) {
280
+ current.splice(Number(last_path), 1);
281
+ } else {
282
+ delete current[last_path];
283
+ }
284
+ break;
285
+ default:
286
+ throw new Error(`Unknown action: ${action}`);
287
+ }
288
+ return target;
289
+ }
290
+
291
+ export function apply_diff(
292
+ obj: any,
293
+ diff: [string, (number | string)[], any][]
294
+ ): any {
295
+ diff.forEach(([action, path, value]) => {
296
+ obj = apply_edit(obj, path, action, value);
297
+ });
298
+
299
+ return obj;
300
+ }