@gradio/client 0.18.0 → 0.19.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,16 @@
1
1
  # @gradio/client
2
2
 
3
+ ## 0.19.0
4
+
5
+ ### Features
6
+
7
+ - [#8110](https://github.com/gradio-app/gradio/pull/8110) [`5436031`](https://github.com/gradio-app/gradio/commit/5436031f92c1596282eb64e1e74d555f279e9697) - Render decorator 2. Thanks @aliabid94!
8
+ - [#8197](https://github.com/gradio-app/gradio/pull/8197) [`e09b4e8`](https://github.com/gradio-app/gradio/commit/e09b4e8216b970bc1b142a0f08e7d190b954eb35) - Add support for passing keyword args to `data` in JS client. Thanks @hannahblair!
9
+
10
+ ### Fixes
11
+
12
+ - [#8252](https://github.com/gradio-app/gradio/pull/8252) [`22df61a`](https://github.com/gradio-app/gradio/commit/22df61a26adf8023f6dd49c051979990e8d3879a) - Client node fix. Thanks @pngwn!
13
+
3
14
  ## 0.18.0
4
15
 
5
16
  ### Features
package/README.md CHANGED
@@ -127,7 +127,11 @@ The `payload` argument is generally required but this depends on the API itself.
127
127
  import { Client } from "@gradio/client";
128
128
 
129
129
  const app = await Client.connect("user/space-name");
130
- const result = await app.predict("/predict", [1, "Hello", "friends"]);
130
+ const result = await app.predict("/predict", {
131
+ input: 1,
132
+ word_1: "Hello",
133
+ word_2: "friends"
134
+ });
131
135
  ```
132
136
 
133
137
  #### `submit`
@@ -138,7 +142,7 @@ The `submit` method provides a more flexible way to call an API endpoint, provid
138
142
  import { Client } from "@gradio/client";
139
143
 
140
144
  const app = await Client.connect("user/space-name");
141
- const submission = app.submit("/predict", payload);
145
+ const submission = app.submit("/predict", { name: "Chewbacca" });
142
146
  ```
143
147
 
144
148
  The `submit` method accepts the same [`endpoint`](#endpoint) and [`payload`](#payload) arguments as `predict`.
@@ -183,7 +187,7 @@ import { Client } from "@gradio/client";
183
187
 
184
188
  const app = await Client.connect("user/space-name");
185
189
  const submission = app
186
- .submit("/predict", payload)
190
+ .submit("/predict", { name: "Chewbacca" })
187
191
  .on("data", (data) => console.log(data))
188
192
  .on("status", (status: Status) => console.log(status));
189
193
  ```
@@ -198,7 +202,7 @@ import { Client } from "@gradio/client";
198
202
  const app = await Client.connect("user/space-name");
199
203
  const handle_data = (data) => console.log(data);
200
204
 
201
- const submission = app.submit("/predict", payload).on("data", handle_data);
205
+ const submission = app.submit("/predict", { name: "Chewbacca" }).on("data", handle_data);
202
206
 
203
207
  // later
204
208
  submission.off("/predict", handle_data);
@@ -214,7 +218,7 @@ import { Client } from "@gradio/client";
214
218
  const app = await Client.connect("user/space-name");
215
219
  const handle_data = (data) => console.log(data);
216
220
 
217
- const submission = app.submit("/predict", payload).on("data", handle_data);
221
+ const submission = app.submit("/predict", { name: "Chewbacca" }).on("data", handle_data);
218
222
 
219
223
  // later
220
224
  submission.destroy();
@@ -229,7 +233,7 @@ import { Client } from "@gradio/client";
229
233
 
230
234
  const app = await Client.connect("user/space-name");
231
235
  const submission = app
232
- .submit("/predict", payload)
236
+ .submit("/predict", { name: "Chewbacca" })
233
237
  .on("data", (data) => console.log(data));
234
238
 
235
239
  // later
package/dist/client.d.ts CHANGED
@@ -21,15 +21,15 @@ export declare class Client {
21
21
  unclosed_events: Set<string>;
22
22
  heartbeat_event: EventSource | null;
23
23
  fetch(input: RequestInfo | URL, init?: RequestInit): Promise<Response>;
24
- stream_factory(url: URL): EventSource | null;
24
+ stream(url: URL): Promise<EventSource>;
25
25
  view_api: () => Promise<ApiInfo<JsApiData>>;
26
26
  upload_files: (root_url: string, files: (Blob | File)[], upload_id?: string) => Promise<UploadResponse>;
27
27
  upload: (file_data: FileData[], root_url: string, upload_id?: string, max_file_size?: number) => Promise<(FileData | null)[] | null>;
28
28
  handle_blob: (endpoint: string, data: unknown[], endpoint_info: EndpointInfo<ApiData | JsApiData>) => Promise<unknown[]>;
29
29
  post_data: (url: string, body: unknown, additional_headers?: any) => Promise<unknown[]>;
30
- submit: (endpoint: string | number, data: unknown[], event_data?: unknown, trigger_id?: number | null) => SubmitReturn;
31
- predict: (endpoint: string | number, data?: unknown[], event_data?: unknown) => Promise<unknown>;
32
- open_stream: () => void;
30
+ submit: (endpoint: string | number, data: unknown[] | Record<string, unknown>, event_data?: unknown, trigger_id?: number | null) => SubmitReturn;
31
+ predict: (endpoint: string | number, data: unknown[] | Record<string, unknown>, event_data?: unknown) => Promise<SubmitReturn>;
32
+ open_stream: () => Promise<void>;
33
33
  private resolve_config;
34
34
  constructor(app_reference: string, options?: ClientOptions);
35
35
  private init;
@@ -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":"AAAA,OAAO,KAAK,EACX,OAAO,EACP,OAAO,EACP,aAAa,EACb,MAAM,EACN,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,WAAW,EACX,MAAM,EACN,YAAY,EACZ,cAAc,EAEd,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAU,QAAQ,EAAE,MAAM,UAAU,CAAC;AAgB5C,qBAAa,QAAS,SAAQ,IAAI;gBACrB,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe;CAG7D;AAED,qBAAa,MAAM;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,aAAa,CAAC;IAEvB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;IACzC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IACrC,YAAY,EAAE,MAAM,CAA2C;IAC/D,GAAG,EAAE,MAAM,GAAG,KAAK,CAAS;IAC5B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAM;IAGlD,aAAa;;MAAmB;IAChC,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAM;IACtD,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAM;IACnD,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAM;IACxE,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAa;IACzC,eAAe,EAAE,WAAW,GAAG,IAAI,CAAQ;IAE3C,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIhE,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;IAc5C,QAAQ,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5C,YAAY,EAAE,CACb,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,EACtB,SAAS,CAAC,EAAE,MAAM,KACd,OAAO,CAAC,cAAc,CAAC,CAAC;IAC7B,MAAM,EAAE,CACP,SAAS,EAAE,QAAQ,EAAE,EACrB,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,MAAM,KAClB,OAAO,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IACzC,WAAW,EAAE,CACZ,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,EAAE,EACf,aAAa,EAAE,YAAY,CAAC,OAAO,GAAG,SAAS,CAAC,KAC5C,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACxB,SAAS,EAAE,CACV,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,OAAO,EACb,kBAAkB,CAAC,EAAE,GAAG,KACpB,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACxB,MAAM,EAAE,CACP,QAAQ,EAAE,MAAM,GAAG,MAAM,EACzB,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzC,UAAU,CAAC,EAAE,OAAO,EACpB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,KACtB,YAAY,CAAC;IAClB,OAAO,EAAE,CACR,QAAQ,EAAE,MAAM,GAAG,MAAM,EACzB,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzC,UAAU,CAAC,EAAE,OAAO,KAChB,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3B,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,CAAC,cAAc,CAAoD;gBAC9D,aAAa,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB;YAehD,IAAI;WAuCL,OAAO,CACnB,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,aAAkB,GACzB,OAAO,CAAC,MAAM,CAAC;IAMlB,KAAK,IAAI,IAAI;WAIA,SAAS,CACrB,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,gBAAqB,GAC5B,OAAO,CAAC,MAAM,CAAC;YAIJ,eAAe;YAqCf,cAAc;IAwBtB,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA2B1D,gBAAgB,CAC5B,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,OAAO,EAAE,GAAG;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE,GAC9D,OAAO,CAAC,OAAO,CAAC;IAyEnB,OAAO,CAAC,kBAAkB;CAS1B;AAED;;;;;;;GAOG;AACH,wBAAsB,MAAM,CAC3B,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,aAAkB,GACzB,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACpC,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,gBAAgB,GACvB,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC"}
@@ -22,4 +22,26 @@ export declare function handle_message(data: any, last_status: Status["stage"]):
22
22
  data?: any;
23
23
  status?: Status;
24
24
  };
25
+ /**
26
+ * Maps the provided `data` to the parameters defined by the `/info` endpoint response.
27
+ * This allows us to support both positional and keyword arguments passed to the client
28
+ * and ensures that all parameters are either directly provided or have default values assigned.
29
+ *
30
+ * @param {unknown[] | Record<string, unknown>} data - The input data for the function,
31
+ * which can be either an array of values for positional arguments or an object
32
+ * with key-value pairs for keyword arguments.
33
+ * @param {JsApiData[]} parameters - Array of parameter descriptions retrieved from the
34
+ * `/info` endpoint.
35
+ *
36
+ * @returns {unknown[]} - Returns an array of resolved data where each element corresponds
37
+ * to the expected parameter from the API. The `parameter_default` value is used where
38
+ * a value is not provided for a parameter, and optional parameters without defaults are
39
+ * set to `undefined`.
40
+ *
41
+ * @throws {Error} - Throws an error:
42
+ * - If more arguments are provided than are defined in the parameters.
43
+ * * - If no parameter value is provided for a required parameter and no default value is defined.
44
+ * - If an argument is provided that does not match any defined parameter.
45
+ */
46
+ export declare const map_data_to_params: (data: unknown[] | Record<string, unknown>, api_info: ApiInfo<JsApiData | ApiData>) => unknown[];
25
47
  //# sourceMappingURL=api_info.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api_info.d.ts","sourceRoot":"","sources":["../../src/helpers/api_info.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGpE,eAAO,MAAM,aAAa,QAAqB,CAAC;AAChD,eAAO,MAAM,eAAe,QAAwB,CAAC;AAErD,wBAAsB,gBAAgB,CACrC,aAAa,EAAE,MAAM,EACrB,QAAQ,CAAC,EAAE,MAAM,MAAM,EAAE,GACvB,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,kBAAkB,CACjC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,EAC1B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,OAAO,CAAC,SAAS,CAAC,CAiDpB;AAED,wBAAgB,QAAQ,CACvB,IAAI,EAAE;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EACxC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,QAAQ,GAAG,WAAW,GACpC,MAAM,GAAG,SAAS,CAiCpB;AAED,wBAAgB,eAAe,CAC9B,IAAI,EAAE;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EACxC,UAAU,EAAE,MAAM,GAChB,MAAM,CASR;AAED,wBAAgB,cAAc,CAC7B,IAAI,EAAE,GAAG,EACT,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,GAC1B;IACF,IAAI,EACD,MAAM,GACN,MAAM,GACN,QAAQ,GACR,UAAU,GACV,YAAY,GACZ,KAAK,GACL,MAAM,GACN,WAAW,GACX,kBAAkB,CAAC;IACtB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,CAgHA"}
1
+ {"version":3,"file":"api_info.d.ts","sourceRoot":"","sources":["../../src/helpers/api_info.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGpE,eAAO,MAAM,aAAa,QAAqB,CAAC;AAChD,eAAO,MAAM,eAAe,QAAwB,CAAC;AAErD,wBAAsB,gBAAgB,CACrC,aAAa,EAAE,MAAM,EACrB,QAAQ,CAAC,EAAE,MAAM,MAAM,EAAE,GACvB,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,kBAAkB,CACjC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,EAC1B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,OAAO,CAAC,SAAS,CAAC,CAiDpB;AAED,wBAAgB,QAAQ,CACvB,IAAI,EAAE;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EACxC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,QAAQ,GAAG,WAAW,GACpC,MAAM,GAAG,SAAS,CAiCpB;AAED,wBAAgB,eAAe,CAC9B,IAAI,EAAE;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EACxC,UAAU,EAAE,MAAM,GAChB,MAAM,CASR;AAED,wBAAgB,cAAc,CAC7B,IAAI,EAAE,GAAG,EACT,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,GAC1B;IACF,IAAI,EACD,MAAM,GACN,MAAM,GACN,QAAQ,GACR,UAAU,GACV,YAAY,GACZ,KAAK,GACL,MAAM,GACN,WAAW,GACX,kBAAkB,CAAC;IACtB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,CAgHA;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,eAAO,MAAM,kBAAkB,SACxB,OAAO,EAAE,GAAG,OAAO,MAAM,EAAE,OAAO,CAAC,YAC/B,QAAQ,SAAS,GAAG,OAAO,CAAC,KACpC,OAAO,EA4CT,CAAC"}
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@ var __publicField = (obj, key, value) => {
5
5
  return value;
6
6
  };
7
7
  var fn = new Intl.Collator(0, { numeric: 1 }).compare;
8
- function semiver$1(a, b, bool) {
8
+ function semiver(a, b, bool) {
9
9
  a = a.split(".");
10
10
  b = b.split(".");
11
11
  return fn(a[0], b[0]) || fn(a[1], b[1]) || (b[2] = b.slice(2).join("."), bool = /[.-]/.test(a[2] = a.slice(2).join(".")), bool == /[.-]/.test(b[2]) ? fn(a[2], b[2]) : bool ? -1 : 1);
@@ -317,6 +317,45 @@ function handle_message(data, last_status) {
317
317
  }
318
318
  return { type: "none", status: { stage: "error", queue } };
319
319
  }
320
+ const map_data_to_params = (data, api_info) => {
321
+ const parameters = Object.values(api_info.named_endpoints).flatMap(
322
+ (values) => values.parameters
323
+ );
324
+ if (Array.isArray(data)) {
325
+ if (data.length > parameters.length) {
326
+ console.warn("Too many arguments provided for the endpoint.");
327
+ }
328
+ return data;
329
+ }
330
+ const resolved_data = [];
331
+ const provided_keys = Object.keys(data);
332
+ parameters.forEach((param, index) => {
333
+ if (data.hasOwnProperty(param.parameter_name)) {
334
+ resolved_data[index] = data[param.parameter_name];
335
+ } else if (param.parameter_has_default) {
336
+ resolved_data[index] = param.parameter_default;
337
+ } else {
338
+ throw new Error(
339
+ `No value provided for required parameter: ${param.parameter_name}`
340
+ );
341
+ }
342
+ });
343
+ provided_keys.forEach((key) => {
344
+ if (!parameters.some((param) => param.parameter_name === key)) {
345
+ throw new Error(
346
+ `Parameter \`${key}\` is not a valid keyword argument. Please refer to the API for usage.`
347
+ );
348
+ }
349
+ });
350
+ resolved_data.forEach((value, idx) => {
351
+ if (value === void 0 && !parameters[idx].parameter_has_default) {
352
+ throw new Error(
353
+ `No value provided for required parameter: ${parameters[idx].parameter_name}`
354
+ );
355
+ }
356
+ });
357
+ return resolved_data;
358
+ };
320
359
  async function view_api() {
321
360
  if (this.api_info)
322
361
  return this.api_info;
@@ -331,7 +370,7 @@ async function view_api() {
331
370
  }
332
371
  try {
333
372
  let response;
334
- if (semiver$1((config == null ? void 0 : config.version) || "2.0.0", "3.30") < 0) {
373
+ if (semiver((config == null ? void 0 : config.version) || "2.0.0", "3.30") < 0) {
335
374
  response = await this.fetch(SPACE_FETCHER_URL, {
336
375
  method: "POST",
337
376
  body: JSON.stringify({
@@ -638,7 +677,7 @@ async function predict(endpoint, data) {
638
677
  );
639
678
  }
640
679
  return new Promise(async (resolve, reject) => {
641
- const app = this.submit(endpoint, data || []);
680
+ const app = this.submit(endpoint, data);
642
681
  let result;
643
682
  app.on("data", (d) => {
644
683
  if (status_complete) {
@@ -885,7 +924,7 @@ function get_space_reference(url) {
885
924
  return match[1];
886
925
  }
887
926
  }
888
- function open_stream() {
927
+ async function open_stream() {
889
928
  let {
890
929
  event_callbacks,
891
930
  unclosed_events,
@@ -906,7 +945,7 @@ function open_stream() {
906
945
  if (jwt) {
907
946
  url.searchParams.set("__sign", jwt);
908
947
  }
909
- stream = this.stream_factory(url);
948
+ stream = await this.stream(url);
910
949
  if (!stream) {
911
950
  console.warn("Cannot connect to SSE endpoint: " + url.toString());
912
951
  return;
@@ -1074,6 +1113,7 @@ function submit(endpoint, data, event_data, trigger_id) {
1074
1113
  api_map,
1075
1114
  config
1076
1115
  );
1116
+ let resolved_data = map_data_to_params(data, api_info);
1077
1117
  let websocket;
1078
1118
  let stream;
1079
1119
  let protocol = config.protocol ?? "ws";
@@ -1126,7 +1166,7 @@ function submit(endpoint, data, event_data, trigger_id) {
1126
1166
  );
1127
1167
  }
1128
1168
  }
1129
- this.handle_blob(config.root, data, endpoint_info).then(
1169
+ this.handle_blob(config.root, resolved_data, endpoint_info).then(
1130
1170
  async (_payload) => {
1131
1171
  var _a;
1132
1172
  payload = {
@@ -1323,7 +1363,7 @@ function submit(endpoint, data, event_data, trigger_id) {
1323
1363
  if (this.jwt) {
1324
1364
  url.searchParams.set("__sign", this.jwt);
1325
1365
  }
1326
- stream = this.stream_factory(url);
1366
+ stream = await this.stream(url);
1327
1367
  if (!stream) {
1328
1368
  return Promise.reject(
1329
1369
  new Error("Cannot connect to SSE endpoint: " + url.toString())
@@ -1436,7 +1476,7 @@ function submit(endpoint, data, event_data, trigger_id) {
1436
1476
  headers
1437
1477
  );
1438
1478
  });
1439
- post_data_promise.then(([response, status]) => {
1479
+ post_data_promise.then(async ([response, status]) => {
1440
1480
  if (status === 503) {
1441
1481
  fire_event({
1442
1482
  type: "status",
@@ -1520,6 +1560,14 @@ function submit(endpoint, data, event_data, trigger_id) {
1520
1560
  endpoint: _endpoint,
1521
1561
  fn_index
1522
1562
  });
1563
+ if (data2.render_config) {
1564
+ fire_event({
1565
+ type: "render",
1566
+ data: data2.render_config,
1567
+ endpoint: _endpoint,
1568
+ fn_index
1569
+ });
1570
+ }
1523
1571
  if (complete) {
1524
1572
  fire_event({
1525
1573
  type: "status",
@@ -1566,7 +1614,7 @@ function submit(endpoint, data, event_data, trigger_id) {
1566
1614
  event_callbacks[event_id] = callback;
1567
1615
  unclosed_events.add(event_id);
1568
1616
  if (!stream_status.open) {
1569
- this.open_stream();
1617
+ await this.open_stream();
1570
1618
  }
1571
1619
  }
1572
1620
  });
@@ -1646,17 +1694,18 @@ class Client {
1646
1694
  fetch(input, init) {
1647
1695
  return fetch(input, init);
1648
1696
  }
1649
- stream_factory(url) {
1697
+ async stream(url) {
1650
1698
  if (typeof window === "undefined" || typeof EventSource === "undefined") {
1651
- import("eventsource").then((EventSourceModule) => {
1699
+ try {
1700
+ const EventSourceModule = await import("eventsource");
1652
1701
  return new EventSourceModule.default(url.toString());
1653
- }).catch(
1654
- (error) => console.error("Failed to load EventSource module:", error)
1655
- );
1702
+ } catch (error) {
1703
+ console.error("Failed to load EventSource module:", error);
1704
+ throw error;
1705
+ }
1656
1706
  } else {
1657
1707
  return new EventSource(url.toString());
1658
1708
  }
1659
- return null;
1660
1709
  }
1661
1710
  async init() {
1662
1711
  var _a;
@@ -1673,7 +1722,7 @@ class Client {
1673
1722
  const heartbeat_url = new URL(
1674
1723
  `${this.config.root}/heartbeat/${this.session_hash}`
1675
1724
  );
1676
- this.heartbeat_event = this.stream_factory(heartbeat_url);
1725
+ this.heartbeat_event = await this.stream(heartbeat_url);
1677
1726
  if (this.config.space_id && this.options.hf_token) {
1678
1727
  this.jwt = await get_jwt(
1679
1728
  this.config.space_id,
package/dist/types.d.ts CHANGED
@@ -2,6 +2,9 @@
2
2
  import { hardware_types } from "./helpers/spaces";
3
3
  export interface ApiData {
4
4
  label: string;
5
+ parameter_name: string;
6
+ parameter_default?: any;
7
+ parameter_has_default?: boolean;
5
8
  type: {
6
9
  type: any;
7
10
  description: string;
@@ -16,6 +19,9 @@ export interface ApiData {
16
19
  }
17
20
  export interface JsApiData {
18
21
  label: string;
22
+ parameter_name: string;
23
+ parameter_default?: any;
24
+ parameter_has_default?: boolean;
19
25
  type: string;
20
26
  description: string;
21
27
  component: string;
@@ -41,12 +47,13 @@ export interface BlobRef {
41
47
  blob: Blob | File | false;
42
48
  }
43
49
  export type DataType = string | Buffer | Record<string, any> | any[];
50
+ export type SubmitFunction = (endpoint: string | number, data: unknown[] | Record<string, unknown>, event_data?: unknown, trigger_id?: number | null) => SubmitReturn;
51
+ export type PredictFunction = (endpoint: string | number, data: unknown[] | Record<string, unknown>, event_data?: unknown) => Promise<SubmitReturn>;
44
52
  type event = <K extends EventType>(eventType: K, listener: EventListener<K>) => SubmitReturn;
45
- type predict = (endpoint: string | number, data?: unknown[], event_data?: unknown) => Promise<unknown>;
46
53
  export type client_return = {
47
54
  config: Config | undefined;
48
- predict: predict;
49
- submit: (endpoint: string | number, data: unknown[], event_data?: unknown, trigger_id?: number | null) => SubmitReturn;
55
+ predict: PredictFunction;
56
+ submit: SubmitFunction;
50
57
  component_server: (component_id: number, fn_name: string, data: unknown[]) => any;
51
58
  view_api: (_fetch: typeof fetch) => Promise<ApiInfo<JsApiData>>;
52
59
  };
@@ -165,11 +172,12 @@ export interface FileData {
165
172
  mime_type?: string;
166
173
  alt_text?: string;
167
174
  }
168
- export type EventType = "data" | "status" | "log";
175
+ export type EventType = "data" | "status" | "log" | "render";
169
176
  export interface EventMap {
170
177
  data: Payload;
171
178
  status: Status;
172
179
  log: LogMessage;
180
+ render: RenderMessage;
173
181
  }
174
182
  export type Event<K extends EventType> = {
175
183
  [P in K]: EventMap[P] & {
@@ -186,6 +194,13 @@ export interface LogMessage {
186
194
  log: string;
187
195
  level: "warning" | "info";
188
196
  }
197
+ export interface RenderMessage {
198
+ fn_index: number;
199
+ data: {
200
+ components: any[];
201
+ layout: any;
202
+ };
203
+ }
189
204
  export interface Status {
190
205
  queue: boolean;
191
206
  code?: string;
@@ -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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"}
@@ -1,4 +1,4 @@
1
1
  import { Client } from "../client";
2
2
  import type { SubmitReturn } from "../types";
3
- export declare function predict(this: Client, endpoint: string | number, data?: unknown[]): Promise<SubmitReturn>;
3
+ export declare function predict(this: Client, endpoint: string | number, data: unknown[] | Record<string, unknown>): Promise<SubmitReturn>;
4
4
  //# sourceMappingURL=predict.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"predict.d.ts","sourceRoot":"","sources":["../../src/utils/predict.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,KAAK,EAAc,YAAY,EAAE,MAAM,UAAU,CAAC;AAEzD,wBAAsB,OAAO,CAC5B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GAAG,MAAM,EACzB,IAAI,CAAC,EAAE,OAAO,EAAE,GACd,OAAO,CAAC,YAAY,CAAC,CAgDvB"}
1
+ {"version":3,"file":"predict.d.ts","sourceRoot":"","sources":["../../src/utils/predict.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,KAAK,EAAc,YAAY,EAAE,MAAM,UAAU,CAAC;AAEzD,wBAAsB,OAAO,CAC5B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GAAG,MAAM,EACzB,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvC,OAAO,CAAC,YAAY,CAAC,CAgDvB"}
@@ -1,5 +1,5 @@
1
1
  import type { Client } from "../client";
2
- export declare function open_stream(this: Client): void;
2
+ export declare function open_stream(this: Client): Promise<void>;
3
3
  export declare function close_stream(stream_status: {
4
4
  open: boolean;
5
5
  }, stream: EventSource | null): void;
@@ -1 +1 @@
1
- {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/utils/stream.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAkF9C;AAED,wBAAgB,YAAY,CAC3B,aAAa,EAAE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,EAChC,MAAM,EAAE,WAAW,GAAG,IAAI,GACxB,IAAI,CAKN;AAED,wBAAgB,iBAAiB,CAChC,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,EAC7C,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,GAAG,GACP,IAAI,CAcN;AAED,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":"stream.d.ts","sourceRoot":"","sources":["../../src/utils/stream.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkF7D;AAED,wBAAgB,YAAY,CAC3B,aAAa,EAAE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,EAChC,MAAM,EAAE,WAAW,GAAG,IAAI,GACxB,IAAI,CAKN;AAED,wBAAgB,iBAAiB,CAChC,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,EAC7C,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,GAAG,GACP,IAAI,CAcN;AAED,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,4 +1,4 @@
1
1
  import type { SubmitReturn } from "../types";
2
2
  import { Client } from "../client";
3
- export declare function submit(this: Client, endpoint: string | number, data: unknown[], event_data?: unknown, trigger_id?: number | null): SubmitReturn;
3
+ export declare function submit(this: Client, endpoint: string | number, data: unknown[] | Record<string, unknown>, event_data?: unknown, trigger_id?: number | null): SubmitReturn;
4
4
  //# sourceMappingURL=submit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"submit.d.ts","sourceRoot":"","sources":["../../src/utils/submit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAKX,YAAY,EAQZ,MAAM,UAAU,CAAC;AAOlB,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,wBAAgB,MAAM,CACrB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GAAG,MAAM,EACzB,IAAI,EAAE,OAAO,EAAE,EACf,UAAU,CAAC,EAAE,OAAO,EACpB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,GACxB,YAAY,CAynBd"}
1
+ {"version":3,"file":"submit.d.ts","sourceRoot":"","sources":["../../src/utils/submit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAKX,YAAY,EAQZ,MAAM,UAAU,CAAC;AAYlB,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,wBAAgB,MAAM,CACrB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GAAG,MAAM,EACzB,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzC,UAAU,CAAC,EAAE,OAAO,EACpB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,GACxB,YAAY,CAmoBd"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gradio/client",
3
- "version": "0.18.0",
3
+ "version": "0.19.0",
4
4
  "description": "Gradio API client",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/src/client.ts CHANGED
@@ -59,19 +59,18 @@ export class Client {
59
59
  return fetch(input, init);
60
60
  }
61
61
 
62
- stream_factory(url: URL): EventSource | null {
62
+ async stream(url: URL): Promise<EventSource> {
63
63
  if (typeof window === "undefined" || typeof EventSource === "undefined") {
64
- import("eventsource")
65
- .then((EventSourceModule) => {
66
- return new EventSourceModule.default(url.toString());
67
- })
68
- .catch((error) =>
69
- console.error("Failed to load EventSource module:", error)
70
- );
64
+ try {
65
+ const EventSourceModule = await import("eventsource");
66
+ return new EventSourceModule.default(url.toString()) as EventSource;
67
+ } catch (error) {
68
+ console.error("Failed to load EventSource module:", error);
69
+ throw error;
70
+ }
71
71
  } else {
72
72
  return new EventSource(url.toString());
73
73
  }
74
- return null;
75
74
  }
76
75
 
77
76
  view_api: () => Promise<ApiInfo<JsApiData>>;
@@ -98,16 +97,16 @@ export class Client {
98
97
  ) => Promise<unknown[]>;
99
98
  submit: (
100
99
  endpoint: string | number,
101
- data: unknown[],
100
+ data: unknown[] | Record<string, unknown>,
102
101
  event_data?: unknown,
103
102
  trigger_id?: number | null
104
103
  ) => SubmitReturn;
105
104
  predict: (
106
105
  endpoint: string | number,
107
- data?: unknown[],
106
+ data: unknown[] | Record<string, unknown>,
108
107
  event_data?: unknown
109
- ) => Promise<unknown>;
110
- open_stream: () => void;
108
+ ) => Promise<SubmitReturn>;
109
+ open_stream: () => Promise<void>;
111
110
  private resolve_config: (endpoint: string) => Promise<Config | undefined>;
112
111
  constructor(app_reference: string, options: ClientOptions = {}) {
113
112
  this.app_reference = app_reference;
@@ -144,7 +143,7 @@ export class Client {
144
143
  const heartbeat_url = new URL(
145
144
  `${this.config.root}/heartbeat/${this.session_hash}`
146
145
  );
147
- this.heartbeat_event = this.stream_factory(heartbeat_url); // Just connect to the endpoint without parsing the response. Ref: https://github.com/gradio-app/gradio/pull/7974#discussion_r1557717540
146
+ this.heartbeat_event = await this.stream(heartbeat_url); // Just connect to the endpoint without parsing the response. Ref: https://github.com/gradio-app/gradio/pull/7974#discussion_r1557717540
148
147
 
149
148
  if (this.config.space_id && this.options.hf_token) {
150
149
  this.jwt = await get_jwt(
@@ -298,3 +298,74 @@ export function handle_message(
298
298
 
299
299
  return { type: "none", status: { stage: "error", queue } };
300
300
  }
301
+
302
+ /**
303
+ * Maps the provided `data` to the parameters defined by the `/info` endpoint response.
304
+ * This allows us to support both positional and keyword arguments passed to the client
305
+ * and ensures that all parameters are either directly provided or have default values assigned.
306
+ *
307
+ * @param {unknown[] | Record<string, unknown>} data - The input data for the function,
308
+ * which can be either an array of values for positional arguments or an object
309
+ * with key-value pairs for keyword arguments.
310
+ * @param {JsApiData[]} parameters - Array of parameter descriptions retrieved from the
311
+ * `/info` endpoint.
312
+ *
313
+ * @returns {unknown[]} - Returns an array of resolved data where each element corresponds
314
+ * to the expected parameter from the API. The `parameter_default` value is used where
315
+ * a value is not provided for a parameter, and optional parameters without defaults are
316
+ * set to `undefined`.
317
+ *
318
+ * @throws {Error} - Throws an error:
319
+ * - If more arguments are provided than are defined in the parameters.
320
+ * * - If no parameter value is provided for a required parameter and no default value is defined.
321
+ * - If an argument is provided that does not match any defined parameter.
322
+ */
323
+
324
+ export const map_data_to_params = (
325
+ data: unknown[] | Record<string, unknown>,
326
+ api_info: ApiInfo<JsApiData | ApiData>
327
+ ): unknown[] => {
328
+ const parameters = Object.values(api_info.named_endpoints).flatMap(
329
+ (values) => values.parameters
330
+ );
331
+
332
+ if (Array.isArray(data)) {
333
+ if (data.length > parameters.length) {
334
+ console.warn("Too many arguments provided for the endpoint.");
335
+ }
336
+ return data;
337
+ }
338
+
339
+ const resolved_data: unknown[] = [];
340
+ const provided_keys = Object.keys(data);
341
+
342
+ parameters.forEach((param, index) => {
343
+ if (data.hasOwnProperty(param.parameter_name)) {
344
+ resolved_data[index] = data[param.parameter_name];
345
+ } else if (param.parameter_has_default) {
346
+ resolved_data[index] = param.parameter_default;
347
+ } else {
348
+ throw new Error(
349
+ `No value provided for required parameter: ${param.parameter_name}`
350
+ );
351
+ }
352
+ });
353
+
354
+ provided_keys.forEach((key) => {
355
+ if (!parameters.some((param) => param.parameter_name === key)) {
356
+ throw new Error(
357
+ `Parameter \`${key}\` is not a valid keyword argument. Please refer to the API for usage.`
358
+ );
359
+ }
360
+ });
361
+
362
+ resolved_data.forEach((value, idx) => {
363
+ if (value === undefined && !parameters[idx].parameter_has_default) {
364
+ throw new Error(
365
+ `No value provided for required parameter: ${parameters[idx].parameter_name}`
366
+ );
367
+ }
368
+ });
369
+
370
+ return resolved_data;
371
+ };
@@ -4,9 +4,11 @@ import {
4
4
  handle_message,
5
5
  get_description,
6
6
  get_type,
7
- process_endpoint
7
+ process_endpoint,
8
+ map_data_to_params
8
9
  } from "../helpers/api_info";
9
10
  import { initialise_server } from "./server";
11
+ import { transformed_api_info } from "./test_data";
10
12
 
11
13
  const server = initialise_server();
12
14
 
@@ -454,3 +456,112 @@ describe("process_endpoint", () => {
454
456
  expect(result).toEqual(expected);
455
457
  });
456
458
  });
459
+
460
+ describe("map_data_params", () => {
461
+ let test_data = transformed_api_info;
462
+
463
+ test_data.named_endpoints["/predict"].parameters = [
464
+ {
465
+ parameter_name: "param1",
466
+ parameter_has_default: false,
467
+ label: "",
468
+ component: "",
469
+ serializer: "",
470
+ python_type: {
471
+ type: "",
472
+ description: ""
473
+ },
474
+ type: {
475
+ type: "",
476
+ description: ""
477
+ }
478
+ },
479
+ {
480
+ parameter_name: "param2",
481
+ parameter_has_default: false,
482
+ label: "",
483
+ type: {
484
+ type: "",
485
+ description: ""
486
+ },
487
+ component: "",
488
+ serializer: "",
489
+ python_type: {
490
+ type: "",
491
+ description: ""
492
+ }
493
+ },
494
+ {
495
+ parameter_name: "param3",
496
+ parameter_has_default: true,
497
+ parameter_default: 3,
498
+ label: "",
499
+ type: {
500
+ type: "",
501
+ description: ""
502
+ },
503
+ component: "",
504
+ serializer: "",
505
+ python_type: {
506
+ type: "",
507
+ description: ""
508
+ }
509
+ }
510
+ ];
511
+
512
+ it("should return an array of data when data is an array", () => {
513
+ const data = [1, 2];
514
+
515
+ const result = map_data_to_params(data, transformed_api_info);
516
+ expect(result).toEqual(data);
517
+ });
518
+
519
+ it("should return the data when too many arguments are provided for the endpoint", () => {
520
+ const data = [1, 2, 3, 4];
521
+
522
+ const result = map_data_to_params(data, transformed_api_info);
523
+ expect(result).toEqual(data);
524
+ });
525
+
526
+ it("should return an array of resolved data when data is an object", () => {
527
+ const data = {
528
+ param1: 1,
529
+ param2: 2,
530
+ param3: 3
531
+ };
532
+
533
+ const result = map_data_to_params(data, transformed_api_info);
534
+ expect(result).toEqual([1, 2, 3]);
535
+ });
536
+
537
+ it("should use the default value when a keyword argument is not provided and has a default value", () => {
538
+ const data = {
539
+ param1: 1,
540
+ param2: 2
541
+ };
542
+
543
+ const result = map_data_to_params(data, transformed_api_info);
544
+ expect(result).toEqual([1, 2, 3]);
545
+ });
546
+
547
+ it("should throw an error when an invalid keyword argument is provided", () => {
548
+ const data = {
549
+ param1: 1,
550
+ param2: 2,
551
+ param3: 3,
552
+ param4: 4
553
+ };
554
+
555
+ expect(() => map_data_to_params(data, transformed_api_info)).toThrowError(
556
+ "Parameter `param4` is not a valid keyword argument. Please refer to the API for usage."
557
+ );
558
+ });
559
+
560
+ it("should throw an error when no value is provided for a required parameter", () => {
561
+ const data = {};
562
+
563
+ expect(() => map_data_to_params(data, transformed_api_info)).toThrowError(
564
+ "No value provided for required parameter: param1"
565
+ );
566
+ });
567
+ });
@@ -1,11 +1,13 @@
1
1
  import { vi } from "vitest";
2
2
 
3
- Object.defineProperty(window, "EventSource", {
4
- writable: true,
5
- value: vi.fn().mockImplementation(() => ({
6
- close: vi.fn(() => {}),
7
- addEventListener: vi.fn(),
8
- onmessage: vi.fn((_event: MessageEvent) => {}),
9
- onerror: vi.fn((_event: Event) => {})
10
- }))
11
- });
3
+ if (process.env.TEST_MODE !== "node") {
4
+ Object.defineProperty(window, "EventSource", {
5
+ writable: true,
6
+ value: vi.fn().mockImplementation(() => ({
7
+ close: vi.fn(() => {}),
8
+ addEventListener: vi.fn(),
9
+ onmessage: vi.fn((_event: MessageEvent) => {}),
10
+ onerror: vi.fn((_event: Event) => {})
11
+ }))
12
+ });
13
+ }
@@ -1,11 +1,21 @@
1
- import { vi } from "vitest";
1
+ import { vi, type Mock } from "vitest";
2
2
  import { Client } from "../client";
3
3
  import { initialise_server } from "./server";
4
4
 
5
- import { describe, it, expect, afterEach } from "vitest";
5
+ import {
6
+ describe,
7
+ it,
8
+ expect,
9
+ afterEach,
10
+ beforeAll,
11
+ afterAll,
12
+ beforeEach
13
+ } from "vitest";
6
14
  import "./mock_eventsource.ts";
15
+ import NodeEventSource from "eventsource";
7
16
 
8
17
  const server = initialise_server();
18
+ const IS_NODE = process.env.TEST_MODE === "node";
9
19
 
10
20
  beforeAll(() => server.listen());
11
21
  afterEach(() => server.resetHandlers());
@@ -13,12 +23,14 @@ afterAll(() => server.close());
13
23
 
14
24
  describe("open_stream", () => {
15
25
  let mock_eventsource: any;
16
- let app: any;
26
+ let app: Client;
17
27
 
18
28
  beforeEach(async () => {
19
29
  app = await Client.connect("hmb/hello_world");
20
- app.stream_factory = vi.fn().mockImplementation(() => {
21
- mock_eventsource = new EventSource("");
30
+ app.stream = vi.fn().mockImplementation(() => {
31
+ mock_eventsource = IS_NODE
32
+ ? new NodeEventSource("")
33
+ : new EventSource("");
22
34
  return mock_eventsource;
23
35
  });
24
36
  });
@@ -30,21 +42,21 @@ describe("open_stream", () => {
30
42
  it("should throw an error if config is not defined", () => {
31
43
  app.config = undefined;
32
44
 
33
- expect(() => {
34
- app.open_stream();
35
- }).toThrow("Could not resolve app config");
45
+ expect(async () => {
46
+ await app.open_stream();
47
+ }).rejects.toThrow("Could not resolve app config");
36
48
  });
37
49
 
38
50
  it("should connect to the SSE endpoint and handle messages", async () => {
39
- app.open_stream();
51
+ await app.open_stream();
40
52
 
41
- const eventsource_mock_call = app.stream_factory.mock.calls[0][0];
53
+ const eventsource_mock_call = (app.stream as Mock).mock.calls[0][0];
42
54
 
43
55
  expect(eventsource_mock_call.href).toMatch(
44
56
  /https:\/\/hmb-hello-world\.hf\.space\/queue\/data\?session_hash/
45
57
  );
46
58
 
47
- expect(app.stream_factory).toHaveBeenCalledWith(eventsource_mock_call);
59
+ expect(app.stream).toHaveBeenCalledWith(eventsource_mock_call);
48
60
 
49
61
  const onMessageCallback = mock_eventsource.onmessage;
50
62
  const onErrorCallback = mock_eventsource.onerror;
package/src/types.ts CHANGED
@@ -4,6 +4,9 @@ import { hardware_types } from "./helpers/spaces";
4
4
 
5
5
  export interface ApiData {
6
6
  label: string;
7
+ parameter_name: string;
8
+ parameter_default?: any;
9
+ parameter_has_default?: boolean;
7
10
  type: {
8
11
  type: any;
9
12
  description: string;
@@ -16,6 +19,9 @@ export interface ApiData {
16
19
 
17
20
  export interface JsApiData {
18
21
  label: string;
22
+ parameter_name: string;
23
+ parameter_default?: any;
24
+ parameter_has_default?: boolean;
19
25
  type: string;
20
26
  description: string;
21
27
  component: string;
@@ -43,6 +49,21 @@ export interface BlobRef {
43
49
 
44
50
  export type DataType = string | Buffer | Record<string, any> | any[];
45
51
 
52
+ // Function Signature Types
53
+
54
+ export type SubmitFunction = (
55
+ endpoint: string | number,
56
+ data: unknown[] | Record<string, unknown>,
57
+ event_data?: unknown,
58
+ trigger_id?: number | null
59
+ ) => SubmitReturn;
60
+
61
+ export type PredictFunction = (
62
+ endpoint: string | number,
63
+ data: unknown[] | Record<string, unknown>,
64
+ event_data?: unknown
65
+ ) => Promise<SubmitReturn>;
66
+
46
67
  // Event and Submission Types
47
68
 
48
69
  type event = <K extends EventType>(
@@ -50,21 +71,10 @@ type event = <K extends EventType>(
50
71
  listener: EventListener<K>
51
72
  ) => SubmitReturn;
52
73
 
53
- type predict = (
54
- endpoint: string | number,
55
- data?: unknown[],
56
- event_data?: unknown
57
- ) => Promise<unknown>;
58
-
59
74
  export type client_return = {
60
75
  config: Config | undefined;
61
- predict: predict;
62
- submit: (
63
- endpoint: string | number,
64
- data: unknown[],
65
- event_data?: unknown,
66
- trigger_id?: number | null
67
- ) => SubmitReturn;
76
+ predict: PredictFunction;
77
+ submit: SubmitFunction;
68
78
  component_server: (
69
79
  component_id: number,
70
80
  fn_name: string,
@@ -220,12 +230,13 @@ export interface FileData {
220
230
 
221
231
  // Event and Listener Types
222
232
 
223
- export type EventType = "data" | "status" | "log";
233
+ export type EventType = "data" | "status" | "log" | "render";
224
234
 
225
235
  export interface EventMap {
226
236
  data: Payload;
227
237
  status: Status;
228
238
  log: LogMessage;
239
+ render: RenderMessage;
229
240
  }
230
241
 
231
242
  export type Event<K extends EventType> = {
@@ -239,6 +250,13 @@ export interface LogMessage {
239
250
  log: string;
240
251
  level: "warning" | "info";
241
252
  }
253
+ export interface RenderMessage {
254
+ fn_index: number;
255
+ data: {
256
+ components: any[];
257
+ layout: any;
258
+ };
259
+ }
242
260
 
243
261
  export interface Status {
244
262
  queue: boolean;
@@ -4,7 +4,7 @@ import type { Dependency, SubmitReturn } from "../types";
4
4
  export async function predict(
5
5
  this: Client,
6
6
  endpoint: string | number,
7
- data?: unknown[]
7
+ data: unknown[] | Record<string, unknown>
8
8
  ): Promise<SubmitReturn> {
9
9
  let data_returned = false;
10
10
  let status_complete = false;
@@ -28,7 +28,7 @@ export async function predict(
28
28
  }
29
29
 
30
30
  return new Promise(async (resolve, reject) => {
31
- const app = this.submit(endpoint, data || []);
31
+ const app = this.submit(endpoint, data);
32
32
  let result: unknown;
33
33
 
34
34
  app
@@ -1,7 +1,7 @@
1
1
  import { BROKEN_CONNECTION_MSG } from "../constants";
2
2
  import type { Client } from "../client";
3
3
 
4
- export function open_stream(this: Client): void {
4
+ export async function open_stream(this: Client): Promise<void> {
5
5
  let {
6
6
  event_callbacks,
7
7
  unclosed_events,
@@ -28,7 +28,7 @@ export function open_stream(this: Client): void {
28
28
  url.searchParams.set("__sign", jwt);
29
29
  }
30
30
 
31
- stream = this.stream_factory(url);
31
+ stream = await this.stream(url);
32
32
 
33
33
  if (!stream) {
34
34
  console.warn("Cannot connect to SSE endpoint: " + url.toString());
@@ -16,7 +16,12 @@ import type {
16
16
 
17
17
  import { skip_queue, post_message } from "../helpers/data";
18
18
  import { resolve_root } from "../helpers/init_helpers";
19
- import { handle_message, process_endpoint } from "../helpers/api_info";
19
+ import {
20
+ handle_message,
21
+ map_data_to_params,
22
+ process_endpoint
23
+ } from "../helpers/api_info";
24
+ import semiver from "semiver";
20
25
  import { BROKEN_CONNECTION_MSG, QUEUE_FULL_MSG } from "../constants";
21
26
  import { apply_diff_stream, close_stream } from "./stream";
22
27
  import { Client } from "../client";
@@ -24,7 +29,7 @@ import { Client } from "../client";
24
29
  export function submit(
25
30
  this: Client,
26
31
  endpoint: string | number,
27
- data: unknown[],
32
+ data: unknown[] | Record<string, unknown>,
28
33
  event_data?: unknown,
29
34
  trigger_id?: number | null
30
35
  ): SubmitReturn {
@@ -55,6 +60,8 @@ export function submit(
55
60
  config
56
61
  );
57
62
 
63
+ let resolved_data = map_data_to_params(data, api_info);
64
+
58
65
  let websocket: WebSocket;
59
66
  let stream: EventSource | null;
60
67
  let protocol = config.protocol ?? "ws";
@@ -155,7 +162,7 @@ export function submit(
155
162
  }
156
163
  }
157
164
 
158
- this.handle_blob(config.root, data, endpoint_info).then(
165
+ this.handle_blob(config.root, resolved_data, endpoint_info).then(
159
166
  async (_payload) => {
160
167
  payload = {
161
168
  data: _payload || [],
@@ -372,7 +379,7 @@ export function submit(
372
379
  url.searchParams.set("__sign", this.jwt);
373
380
  }
374
381
 
375
- stream = this.stream_factory(url);
382
+ stream = await this.stream(url);
376
383
 
377
384
  if (!stream) {
378
385
  return Promise.reject(
@@ -503,7 +510,7 @@ export function submit(
503
510
  headers
504
511
  );
505
512
  });
506
- post_data_promise.then(([response, status]: any) => {
513
+ post_data_promise.then(async ([response, status]: any) => {
507
514
  if (status === 503) {
508
515
  fire_event({
509
516
  type: "status",
@@ -594,6 +601,14 @@ export function submit(
594
601
  endpoint: _endpoint,
595
602
  fn_index
596
603
  });
604
+ if (data.render_config) {
605
+ fire_event({
606
+ type: "render",
607
+ data: data.render_config,
608
+ endpoint: _endpoint,
609
+ fn_index
610
+ });
611
+ }
597
612
 
598
613
  if (complete) {
599
614
  fire_event({
@@ -647,7 +662,7 @@ export function submit(
647
662
  event_callbacks[event_id] = callback;
648
663
  unclosed_events.add(event_id);
649
664
  if (!stream_status.open) {
650
- this.open_stream();
665
+ await this.open_stream();
651
666
  }
652
667
  }
653
668
  });