@gradio/client 0.15.1 → 0.16.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,15 @@
1
1
  # @gradio/client
2
2
 
3
+ ## 0.16.0
4
+
5
+ ### Features
6
+
7
+ - [#7845](https://github.com/gradio-app/gradio/pull/7845) [`dbb7373`](https://github.com/gradio-app/gradio/commit/dbb7373dde69d4ed2741942b5a1898f8620cec24) - ensure `ImageEditor` events work as expected. Thanks @pngwn!
8
+
9
+ ### Fixes
10
+
11
+ - [#7974](https://github.com/gradio-app/gradio/pull/7974) [`79e0aa8`](https://github.com/gradio-app/gradio/commit/79e0aa81c94e755faa6e85d76ac5d5a666313e6a) - Fix heartbeat in the js client to be Lite compatible. Thanks @whitphx!
12
+
3
13
  ## 0.15.1
4
14
 
5
15
  ### Fixes
@@ -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
@@ -216,6 +216,16 @@ function apply_diff(obj, diff) {
216
216
  });
217
217
  return obj;
218
218
  }
219
+ function post_message(message, origin) {
220
+ return new Promise((res, _rej) => {
221
+ const channel = new MessageChannel();
222
+ channel.port1.onmessage = ({ data }) => {
223
+ channel.port1.close();
224
+ res(data);
225
+ };
226
+ window.parent.postMessage(message, origin, [channel.port2]);
227
+ });
228
+ }
219
229
  async function upload(file_data, root, upload_id, upload_fn = upload_files) {
220
230
  let files = (Array.isArray(file_data) ? file_data : [file_data]).map(
221
231
  (file_data2) => file_data2.blob
@@ -330,7 +340,7 @@ async function duplicate(app_reference, options) {
330
340
  }
331
341
  function api_factory(fetch_implementation, EventSource_factory) {
332
342
  return { post_data: post_data2, upload_files: upload_files2, client: client2, handle_blob: handle_blob2 };
333
- async function post_data2(url, body, token) {
343
+ async function post_data2(url, body, token, additional_headers) {
334
344
  const headers = { "Content-Type": "application/json" };
335
345
  if (token) {
336
346
  headers.Authorization = `Bearer ${token}`;
@@ -339,7 +349,7 @@ function api_factory(fetch_implementation, EventSource_factory) {
339
349
  var response = await fetch_implementation(url, {
340
350
  method: "POST",
341
351
  body: JSON.stringify(body),
342
- headers
352
+ headers: { ...headers, ...additional_headers }
343
353
  });
344
354
  } catch (e) {
345
355
  return [{ error: BROKEN_CONNECTION_MSG }, 500];
@@ -466,9 +476,10 @@ function api_factory(fetch_implementation, EventSource_factory) {
466
476
  hf_token
467
477
  );
468
478
  const _config = await config_success(config);
469
- const heartbeat = new EventSource(
479
+ const heartbeat_url = new URL(
470
480
  `${config.root}/heartbeat/${session_hash}`
471
481
  );
482
+ EventSource_factory(heartbeat_url);
472
483
  res(_config);
473
484
  } catch (e) {
474
485
  console.error(e);
@@ -529,13 +540,16 @@ function api_factory(fetch_implementation, EventSource_factory) {
529
540
  function submit(endpoint, data, event_data, trigger_id = null) {
530
541
  let fn_index;
531
542
  let api_info;
543
+ let dependency;
532
544
  if (typeof endpoint === "number") {
533
545
  fn_index = endpoint;
534
546
  api_info = api.unnamed_endpoints[fn_index];
547
+ dependency = config.dependencies[endpoint];
535
548
  } else {
536
549
  const trimmed_endpoint = endpoint.replace(/^\//, "");
537
550
  fn_index = api_map[trimmed_endpoint];
538
551
  api_info = api.named_endpoints[endpoint.trim()];
552
+ dependency = config.dependencies[api_map[trimmed_endpoint]];
539
553
  }
540
554
  if (typeof fn_index !== "number") {
541
555
  throw new Error(
@@ -832,14 +846,22 @@ function api_factory(fetch_implementation, EventSource_factory) {
832
846
  fn_index,
833
847
  time: /* @__PURE__ */ new Date()
834
848
  });
835
- post_data2(
836
- `${config.root}/queue/join?${url_params}`,
837
- {
838
- ...payload,
839
- session_hash
840
- },
841
- hf_token
842
- ).then(([response, status]) => {
849
+ let hostname = window.location.hostname;
850
+ let hfhubdev = "dev.spaces.huggingface.tech";
851
+ const origin = hostname.includes(".dev.") ? `https://moon-${hostname.split(".")[1]}.${hfhubdev}` : `https://huggingface.co`;
852
+ const zerogpu_auth_promise = dependency.zerogpu && window.parent != window && config.space_id ? post_message("zerogpu-headers", origin) : Promise.resolve(null);
853
+ const post_data_promise = zerogpu_auth_promise.then((headers) => {
854
+ return post_data2(
855
+ `${config.root}/queue/join?${url_params}`,
856
+ {
857
+ ...payload,
858
+ session_hash
859
+ },
860
+ hf_token,
861
+ headers
862
+ );
863
+ });
864
+ post_data_promise.then(([response, status]) => {
843
865
  if (status === 503) {
844
866
  fire_event({
845
867
  type: "status",
@@ -1119,10 +1141,7 @@ function api_factory(fetch_implementation, EventSource_factory) {
1119
1141
  }
1120
1142
  async function component_server(component_id, fn_name, data) {
1121
1143
  var _a;
1122
- const headers = { "Content-Type": "application/json" };
1123
- if (hf_token) {
1124
- headers.Authorization = `Bearer ${hf_token}`;
1125
- }
1144
+ const headers = {};
1126
1145
  let root_url;
1127
1146
  let component = config.components.find(
1128
1147
  (comp) => comp.id === component_id
@@ -1132,26 +1151,48 @@ function api_factory(fetch_implementation, EventSource_factory) {
1132
1151
  } else {
1133
1152
  root_url = config.root;
1134
1153
  }
1135
- const response = await fetch_implementation(
1136
- `${root_url}/component_server/`,
1137
- {
1138
- method: "POST",
1139
- body: JSON.stringify({
1140
- data,
1141
- component_id,
1142
- fn_name,
1143
- session_hash
1144
- }),
1145
- headers
1154
+ let body;
1155
+ if (data.binary) {
1156
+ body = new FormData();
1157
+ for (const key in data.data) {
1158
+ if (key === "binary")
1159
+ continue;
1160
+ body.append(key, data.data[key]);
1146
1161
  }
1147
- );
1148
- if (!response.ok) {
1149
- throw new Error(
1150
- "Could not connect to component server: " + response.statusText
1162
+ body.set("component_id", component_id);
1163
+ body.set("fn_name", fn_name);
1164
+ body.set("session_hash", session_hash);
1165
+ } else {
1166
+ body = JSON.stringify({
1167
+ data,
1168
+ component_id,
1169
+ fn_name,
1170
+ session_hash
1171
+ });
1172
+ headers["Content-Type"] = "application/json";
1173
+ }
1174
+ if (hf_token) {
1175
+ headers.Authorization = `Bearer ${hf_token}`;
1176
+ }
1177
+ try {
1178
+ const response = await fetch_implementation(
1179
+ `${root_url}/component_server/`,
1180
+ {
1181
+ method: "POST",
1182
+ body,
1183
+ headers
1184
+ }
1151
1185
  );
1186
+ if (!response.ok) {
1187
+ throw new Error(
1188
+ "Could not connect to component server: " + response.statusText
1189
+ );
1190
+ }
1191
+ const output = await response.json();
1192
+ return output;
1193
+ } catch (e) {
1194
+ console.warn(e);
1152
1195
  }
1153
- const output = await response.json();
1154
- return output;
1155
1196
  }
1156
1197
  async function view_api(config2) {
1157
1198
  if (api)
package/dist/utils.d.ts CHANGED
@@ -30,4 +30,5 @@ export declare function set_space_hardware(space_id: string, new_hardware: (type
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
32
  export declare function apply_diff(obj: any, diff: [string, (number | string)[], any][]): any;
33
+ export declare function post_message<Res = any>(message: any, origin: string): Promise<Res>;
33
34
  //# 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;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"}
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;AAED,wBAAgB,YAAY,CAAC,GAAG,GAAG,GAAG,EACrC,OAAO,EAAE,GAAG,EACZ,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,GAAG,CAAC,CASd"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gradio/client",
3
- "version": "0.15.1",
3
+ "version": "0.16.0",
4
4
  "description": "Gradio API client",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/src/client.ts CHANGED
@@ -12,7 +12,8 @@ import {
12
12
  set_space_timeout,
13
13
  hardware_types,
14
14
  resolve_root,
15
- apply_diff
15
+ apply_diff,
16
+ post_message
16
17
  } from "./utils.js";
17
18
 
18
19
  import type {
@@ -185,7 +186,8 @@ export function api_factory(
185
186
  async function post_data(
186
187
  url: string,
187
188
  body: unknown,
188
- token?: `hf_${string}`
189
+ token?: `hf_${string}`,
190
+ additional_headers?: Record<string, string>
189
191
  ): Promise<[PostResponse, number]> {
190
192
  const headers: {
191
193
  Authorization?: string;
@@ -199,7 +201,7 @@ export function api_factory(
199
201
  var response = await fetch_implementation(url, {
200
202
  method: "POST",
201
203
  body: JSON.stringify(body),
202
- headers
204
+ headers: { ...headers, ...additional_headers }
203
205
  });
204
206
  } catch (e) {
205
207
  return [{ error: BROKEN_CONNECTION_MSG }, 500];
@@ -358,9 +360,10 @@ export function api_factory(
358
360
 
359
361
  const _config = await config_success(config);
360
362
  // connect to the heartbeat endpoint via GET request
361
- const heartbeat = new EventSource(
363
+ const heartbeat_url = new URL(
362
364
  `${config.root}/heartbeat/${session_hash}`
363
365
  );
366
+ EventSource_factory(heartbeat_url); // Just connect to the endpoint without parsing the response. Ref: https://github.com/gradio-app/gradio/pull/7974#discussion_r1557717540
364
367
  res(_config);
365
368
  } catch (e) {
366
369
  console.error(e);
@@ -438,15 +441,18 @@ export function api_factory(
438
441
  ): SubmitReturn {
439
442
  let fn_index: number;
440
443
  let api_info;
444
+ let dependency;
441
445
 
442
446
  if (typeof endpoint === "number") {
443
447
  fn_index = endpoint;
444
448
  api_info = api.unnamed_endpoints[fn_index];
449
+ dependency = config.dependencies[endpoint];
445
450
  } else {
446
451
  const trimmed_endpoint = endpoint.replace(/^\//, "");
447
452
 
448
453
  fn_index = api_map[trimmed_endpoint];
449
454
  api_info = api.named_endpoints[endpoint.trim()];
455
+ dependency = config.dependencies[api_map[trimmed_endpoint]];
450
456
  }
451
457
 
452
458
  if (typeof fn_index !== "number") {
@@ -776,15 +782,27 @@ export function api_factory(
776
782
  fn_index,
777
783
  time: new Date()
778
784
  });
779
-
780
- post_data(
781
- `${config.root}/queue/join?${url_params}`,
782
- {
783
- ...payload,
784
- session_hash
785
- },
786
- hf_token
787
- ).then(([response, status]) => {
785
+ let hostname = window.location.hostname;
786
+ let hfhubdev = "dev.spaces.huggingface.tech";
787
+ const origin = hostname.includes(".dev.")
788
+ ? `https://moon-${hostname.split(".")[1]}.${hfhubdev}`
789
+ : `https://huggingface.co`;
790
+ const zerogpu_auth_promise =
791
+ dependency.zerogpu && window.parent != window && config.space_id
792
+ ? post_message<Headers>("zerogpu-headers", origin)
793
+ : Promise.resolve(null);
794
+ const post_data_promise = zerogpu_auth_promise.then((headers) => {
795
+ return post_data(
796
+ `${config.root}/queue/join?${url_params}`,
797
+ {
798
+ ...payload,
799
+ session_hash
800
+ },
801
+ hf_token,
802
+ headers
803
+ );
804
+ });
805
+ post_data_promise.then(([response, status]) => {
788
806
  if (status === 503) {
789
807
  fire_event({
790
808
  type: "status",
@@ -1100,15 +1118,13 @@ export function api_factory(
1100
1118
  async function component_server(
1101
1119
  component_id: number,
1102
1120
  fn_name: string,
1103
- data: unknown[]
1121
+ data: unknown[] | { binary: boolean; data: Record<string, any> }
1104
1122
  ): Promise<any> {
1105
1123
  const headers: {
1106
1124
  Authorization?: string;
1107
1125
  "Content-Type": "application/json";
1108
- } = { "Content-Type": "application/json" };
1109
- if (hf_token) {
1110
- headers.Authorization = `Bearer ${hf_token}`;
1111
- }
1126
+ } = {};
1127
+
1112
1128
  let root_url: string;
1113
1129
  let component = config.components.find(
1114
1130
  (comp) => comp.id === component_id
@@ -1118,28 +1134,53 @@ export function api_factory(
1118
1134
  } else {
1119
1135
  root_url = config.root;
1120
1136
  }
1121
- const response = await fetch_implementation(
1122
- `${root_url}/component_server/`,
1123
- {
1124
- method: "POST",
1125
- body: JSON.stringify({
1126
- data: data,
1127
- component_id: component_id,
1128
- fn_name: fn_name,
1129
- session_hash: session_hash
1130
- }),
1131
- headers
1137
+
1138
+ let body: FormData | string;
1139
+ if (data.binary) {
1140
+ body = new FormData();
1141
+ for (const key in data.data) {
1142
+ if (key === "binary") continue;
1143
+ body.append(key, data.data[key]);
1132
1144
  }
1133
- );
1145
+ body.set("component_id", component_id);
1146
+ body.set("fn_name", fn_name);
1147
+ body.set("session_hash", session_hash);
1148
+ } else {
1149
+ body = JSON.stringify({
1150
+ data: data,
1151
+ component_id,
1152
+ fn_name,
1153
+ session_hash
1154
+ });
1134
1155
 
1135
- if (!response.ok) {
1136
- throw new Error(
1137
- "Could not connect to component server: " + response.statusText
1138
- );
1156
+ headers["Content-Type"] = "application/json";
1157
+ }
1158
+ if (hf_token) {
1159
+ headers.Authorization = `Bearer ${hf_token}`;
1139
1160
  }
1140
1161
 
1141
- const output = await response.json();
1142
- return output;
1162
+ try {
1163
+ const response = await fetch_implementation(
1164
+ `${root_url}/component_server/`,
1165
+ {
1166
+ method: "POST",
1167
+ body: body,
1168
+ headers
1169
+ }
1170
+ );
1171
+
1172
+ if (!response.ok) {
1173
+ // console.warn(await response.text());
1174
+ throw new Error(
1175
+ "Could not connect to component server: " + response.statusText
1176
+ );
1177
+ }
1178
+
1179
+ const output = await response.json();
1180
+ return output;
1181
+ } catch (e) {
1182
+ console.warn(e);
1183
+ }
1143
1184
  }
1144
1185
 
1145
1186
  async function view_api(config?: Config): Promise<ApiInfo<JsApiData>> {
package/src/utils.ts CHANGED
@@ -298,3 +298,17 @@ export function apply_diff(
298
298
 
299
299
  return obj;
300
300
  }
301
+
302
+ export function post_message<Res = any>(
303
+ message: any,
304
+ origin: string
305
+ ): Promise<Res> {
306
+ return new Promise((res, _rej) => {
307
+ const channel = new MessageChannel();
308
+ channel.port1.onmessage = (({ data }) => {
309
+ channel.port1.close();
310
+ res(data);
311
+ }) as (ev: MessageEvent<Res>) => void;
312
+ window.parent.postMessage(message, origin, [channel.port2]);
313
+ });
314
+ }