@gradio/client 0.17.0 → 0.18.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 +16 -0
- package/dist/client.d.ts +15 -4
- package/dist/client.d.ts.map +1 -1
- package/dist/constants.d.ts +8 -2
- package/dist/constants.d.ts.map +1 -1
- package/dist/helpers/data.d.ts +2 -2
- package/dist/helpers/data.d.ts.map +1 -1
- package/dist/helpers/init_helpers.d.ts.map +1 -1
- package/dist/helpers/spaces.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +219 -176
- package/dist/test/handlers.d.ts +3 -0
- package/dist/test/handlers.d.ts.map +1 -0
- package/dist/test/mock_eventsource.d.ts +2 -0
- package/dist/test/mock_eventsource.d.ts.map +1 -0
- package/dist/test/server.d.ts +2 -0
- package/dist/test/server.d.ts.map +1 -0
- package/dist/test/test_data.d.ts +76 -0
- package/dist/test/test_data.d.ts.map +1 -0
- package/dist/types.d.ts +4 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/upload.d.ts +2 -2
- package/dist/upload.d.ts.map +1 -1
- package/dist/utils/duplicate.d.ts.map +1 -1
- package/dist/utils/stream.d.ts +1 -1
- package/dist/utils/stream.d.ts.map +1 -1
- package/dist/utils/submit.d.ts.map +1 -1
- package/dist/utils/upload_files.d.ts.map +1 -1
- package/dist/utils/view_api.d.ts.map +1 -1
- package/package.json +8 -2
- package/src/client.ts +50 -24
- package/src/constants.ts +9 -2
- package/src/helpers/api_info.ts +4 -4
- package/src/helpers/data.ts +46 -28
- package/src/helpers/init_helpers.ts +7 -11
- package/src/helpers/spaces.ts +8 -3
- package/src/index.ts +1 -1
- package/src/test/api_info.test.ts +456 -0
- package/src/test/data.test.ts +281 -0
- package/src/test/handlers.ts +438 -0
- package/src/test/init.test.ts +139 -0
- package/src/test/init_helpers.test.ts +94 -0
- package/src/test/mock_eventsource.ts +11 -0
- package/src/test/post_data.test.ts +45 -0
- package/src/test/server.ts +6 -0
- package/src/test/spaces.test.ts +145 -0
- package/src/test/stream.test.ts +67 -0
- package/src/test/test_data.ts +557 -0
- package/src/test/upload_files.test.ts +42 -0
- package/src/test/view_api.test.ts +53 -0
- package/src/types.ts +4 -3
- package/src/upload.ts +4 -8
- package/src/utils/duplicate.ts +20 -3
- package/src/utils/handle_blob.ts +1 -1
- package/src/utils/post_data.ts +1 -1
- package/src/utils/stream.ts +29 -20
- package/src/utils/submit.ts +23 -15
- package/src/utils/upload_files.ts +11 -6
- package/src/utils/view_api.ts +4 -7
- package/vite.config.js +7 -0
- package/src/utils/client.node-test.ts +0 -173
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/test/handlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,cAAc,EAAE,MAAM,KAAK,CAAC;AAmCzD,eAAO,MAAM,QAAQ,EAAE,cAAc,EAkZpC,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"mock_eventsource.d.ts","sourceRoot":"","sources":["../../src/test/mock_eventsource.ts"],"names":[],"mappings":""}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/test/server.ts"],"names":[],"mappings":"AAGA,wBAAgB,iBAAiB,IAAI,GAAG,CAEvC"}
|
@@ -0,0 +1,76 @@
|
|
1
|
+
import { ApiData, ApiInfo, Config, EndpointInfo } from "../types";
|
2
|
+
export declare const runtime_response: {
|
3
|
+
stage: string;
|
4
|
+
hardware: {
|
5
|
+
current: string;
|
6
|
+
requested: string;
|
7
|
+
};
|
8
|
+
storage: {
|
9
|
+
current: null;
|
10
|
+
requested: null;
|
11
|
+
};
|
12
|
+
gcTimeout: number;
|
13
|
+
replicas: {
|
14
|
+
current: number;
|
15
|
+
requested: number;
|
16
|
+
};
|
17
|
+
devMode: boolean;
|
18
|
+
domains: {
|
19
|
+
domain: string;
|
20
|
+
isCustom: boolean;
|
21
|
+
stage: string;
|
22
|
+
}[];
|
23
|
+
};
|
24
|
+
export declare const transformed_api_info: ApiInfo<ApiData>;
|
25
|
+
export declare const response_api_info: ApiInfo<ApiData>;
|
26
|
+
export declare const config_response: Config;
|
27
|
+
export declare const whoami_response: {
|
28
|
+
type: string;
|
29
|
+
id: string;
|
30
|
+
name: string;
|
31
|
+
fullname: string;
|
32
|
+
email: string;
|
33
|
+
emailVerified: boolean;
|
34
|
+
canPay: boolean;
|
35
|
+
periodEnd: number;
|
36
|
+
isPro: boolean;
|
37
|
+
avatarUrl: string;
|
38
|
+
orgs: never[];
|
39
|
+
auth: {
|
40
|
+
type: string;
|
41
|
+
accessToken: {
|
42
|
+
displayName: string;
|
43
|
+
role: string;
|
44
|
+
};
|
45
|
+
};
|
46
|
+
};
|
47
|
+
export declare const duplicate_response: {
|
48
|
+
url: string;
|
49
|
+
};
|
50
|
+
export declare const hardware_sleeptime_response: {
|
51
|
+
stage: string;
|
52
|
+
hardware: {
|
53
|
+
current: string;
|
54
|
+
requested: string;
|
55
|
+
};
|
56
|
+
storage: null;
|
57
|
+
gcTimeout: number;
|
58
|
+
replicas: {
|
59
|
+
current: number;
|
60
|
+
requested: number;
|
61
|
+
};
|
62
|
+
devMode: boolean;
|
63
|
+
domains: {
|
64
|
+
domain: string;
|
65
|
+
isCustom: boolean;
|
66
|
+
stage: string;
|
67
|
+
}[];
|
68
|
+
};
|
69
|
+
export declare const endpoint_info: EndpointInfo<ApiData>;
|
70
|
+
export declare const discussions_response: {
|
71
|
+
discussions: never[];
|
72
|
+
count: number;
|
73
|
+
start: number;
|
74
|
+
numClosedDiscussions: number;
|
75
|
+
};
|
76
|
+
//# sourceMappingURL=test_data.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"test_data.d.ts","sourceRoot":"","sources":["../../src/test/test_data.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAElE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;CAuB5B,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,OAAO,CAAC,OAAO,CA6CjD,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,OAAO,CAAC,OAAO,CAiC9C,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,MA4V7B,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;CAmB3B,CAAC;AAEF,eAAO,MAAM,kBAAkB;;CAE9B,CAAC;AAEF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;CAoBvC,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,YAAY,CAAC,OAAO,CA0C/C,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;;CAKhC,CAAC"}
|
package/dist/types.d.ts
CHANGED
@@ -38,9 +38,9 @@ export interface ApiInfo<T extends ApiData | JsApiData> {
|
|
38
38
|
export interface BlobRef {
|
39
39
|
path: string[];
|
40
40
|
type: string | undefined;
|
41
|
-
blob: Blob | false;
|
41
|
+
blob: Blob | File | false;
|
42
42
|
}
|
43
|
-
export type
|
43
|
+
export type DataType = string | Buffer | Record<string, any> | any[];
|
44
44
|
type event = <K extends EventType>(eventType: K, listener: EventListener<K>) => SubmitReturn;
|
45
45
|
type predict = (endpoint: string | number, data?: unknown[], event_data?: unknown) => Promise<unknown>;
|
46
46
|
export type client_return = {
|
@@ -48,7 +48,7 @@ export type client_return = {
|
|
48
48
|
predict: predict;
|
49
49
|
submit: (endpoint: string | number, data: unknown[], event_data?: unknown, trigger_id?: number | null) => SubmitReturn;
|
50
50
|
component_server: (component_id: number, fn_name: string, data: unknown[]) => any;
|
51
|
-
view_api: (
|
51
|
+
view_api: (_fetch: typeof fetch) => Promise<ApiInfo<JsApiData>>;
|
52
52
|
};
|
53
53
|
export type SubmitReturn = {
|
54
54
|
on: event;
|
@@ -74,6 +74,7 @@ export type SpaceStatusCallback = (a: SpaceStatus) => void;
|
|
74
74
|
export interface Config {
|
75
75
|
auth_required: boolean;
|
76
76
|
analytics_enabled: boolean;
|
77
|
+
connect_heartbeat: boolean;
|
77
78
|
auth_message: string;
|
78
79
|
components: any[];
|
79
80
|
css: string | null;
|
package/dist/types.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,WAAW,OAAO;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE;QACL,IAAI,EAAE,GAAG,CAAC;QACV,WAAW,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,UAAU,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CACnD;AAED,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,OAAO,GAAG,SAAS;IAC1D,UAAU,EAAE,CAAC,EAAE,CAAC;IAChB,OAAO,EAAE,CAAC,EAAE,CAAC;IACb,IAAI,CAAC,EAAE,eAAe,CAAC;CACvB;AAED,MAAM,WAAW,OAAO,CAAC,CAAC,SAAS,OAAO,GAAG,SAAS;IACrD,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,OAAO;IACvB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,IAAI,EAAE,IAAI,GAAG,KAAK,CAAC;
|
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,5 +1,5 @@
|
|
1
|
-
import type {
|
2
|
-
export declare function upload(file_data: FileData[], root_url: string, upload_id?: string, max_file_size?: number
|
1
|
+
import type { Client } from "./client";
|
2
|
+
export declare function upload(this: Client, file_data: FileData[], root_url: string, upload_id?: string, max_file_size?: number): Promise<(FileData | null)[] | null>;
|
3
3
|
export declare function prepare_files(files: File[], is_stream?: boolean): Promise<FileData[]>;
|
4
4
|
export declare class FileData {
|
5
5
|
path: string;
|
package/dist/upload.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../src/upload.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../src/upload.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,wBAAsB,MAAM,CAC3B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,QAAQ,EAAE,EACrB,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,CAsCrC;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;IAClB,QAAQ,CAAC,IAAI;;MAAgC;gBAEjC,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 +1 @@
|
|
1
|
-
{"version":3,"file":"duplicate.d.ts","sourceRoot":"","sources":["../../src/utils/duplicate.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;
|
1
|
+
{"version":3,"file":"duplicate.d.ts","sourceRoot":"","sources":["../../src/utils/duplicate.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAGnC,wBAAsB,SAAS,CAC9B,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,gBAAgB,GACvB,OAAO,CAAC,MAAM,CAAC,CAmFjB"}
|
package/dist/utils/stream.d.ts
CHANGED
@@ -2,7 +2,7 @@ import type { Client } from "../client";
|
|
2
2
|
export declare function open_stream(this: Client): void;
|
3
3
|
export declare function close_stream(stream_status: {
|
4
4
|
open: boolean;
|
5
|
-
},
|
5
|
+
}, stream: EventSource | null): void;
|
6
6
|
export declare function apply_diff_stream(pending_diff_streams: Record<string, any[][]>, event_id: string, data: any): void;
|
7
7
|
export declare function apply_diff(obj: any, diff: [string, (number | string)[], any][]): any;
|
8
8
|
//# sourceMappingURL=stream.d.ts.map
|
@@ -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,
|
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 +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,
|
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 +1 @@
|
|
1
|
-
{"version":3,"file":"upload_files.d.ts","sourceRoot":"","sources":["../../src/utils/upload_files.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAEjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,wBAAsB,YAAY,CACjC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,EACtB,SAAS,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,cAAc,CAAC,
|
1
|
+
{"version":3,"file":"upload_files.d.ts","sourceRoot":"","sources":["../../src/utils/upload_files.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAEjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,wBAAsB,YAAY,CACjC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,EACtB,SAAS,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,cAAc,CAAC,CAyCzB"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"view_api.d.ts","sourceRoot":"","sources":["../../src/utils/view_api.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAInC,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,
|
1
|
+
{"version":3,"file":"view_api.d.ts","sourceRoot":"","sources":["../../src/utils/view_api.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAInC,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CA2DzD"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@gradio/client",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.18.0",
|
4
4
|
"description": "Gradio API client",
|
5
5
|
"type": "module",
|
6
6
|
"main": "dist/index.js",
|
@@ -13,7 +13,10 @@
|
|
13
13
|
"./package.json": "./package.json"
|
14
14
|
},
|
15
15
|
"dependencies": {
|
16
|
+
"@types/eventsource": "^1.1.15",
|
16
17
|
"bufferutil": "^4.0.7",
|
18
|
+
"eventsource": "^2.0.2",
|
19
|
+
"msw": "^2.2.1",
|
17
20
|
"semiver": "^1.1.0",
|
18
21
|
"typescript": "^5.0.0",
|
19
22
|
"ws": "^8.13.0"
|
@@ -29,6 +32,9 @@
|
|
29
32
|
"scripts": {
|
30
33
|
"bundle": "vite build --ssr",
|
31
34
|
"generate_types": "tsc",
|
32
|
-
"build": "pnpm bundle && pnpm generate_types"
|
35
|
+
"build": "pnpm bundle && pnpm generate_types",
|
36
|
+
"test": "pnpm test:client && pnpm test:client:node",
|
37
|
+
"test:client": "vitest run -c vite.config.js",
|
38
|
+
"test:client:node": "TEST_MODE=node vitest run -c vite.config.js"
|
33
39
|
}
|
34
40
|
}
|
package/src/client.ts
CHANGED
@@ -14,6 +14,7 @@ import type {
|
|
14
14
|
} from "./types";
|
15
15
|
import { view_api } from "./utils/view_api";
|
16
16
|
import { upload_files } from "./utils/upload_files";
|
17
|
+
import { upload, FileData } from "./upload";
|
17
18
|
import { handle_blob } from "./utils/handle_blob";
|
18
19
|
import { post_data } from "./utils/post_data";
|
19
20
|
import { predict } from "./utils/predict";
|
@@ -27,6 +28,7 @@ import {
|
|
27
28
|
} from "./helpers/init_helpers";
|
28
29
|
import { check_space_status } from "./helpers/spaces";
|
29
30
|
import { open_stream } from "./utils/stream";
|
31
|
+
import { API_INFO_ERROR_MSG, CONFIG_ERROR_MSG } from "./constants";
|
30
32
|
|
31
33
|
export class NodeBlob extends Blob {
|
32
34
|
constructor(blobParts?: BlobPart[], options?: BlobPropertyBag) {
|
@@ -49,22 +51,27 @@ export class Client {
|
|
49
51
|
stream_status = { open: false };
|
50
52
|
pending_stream_messages: Record<string, any[][]> = {};
|
51
53
|
pending_diff_streams: Record<string, any[][]> = {};
|
52
|
-
event_callbacks: Record<string, () => Promise<void>> = {};
|
54
|
+
event_callbacks: Record<string, (data?: unknown) => Promise<void>> = {};
|
53
55
|
unclosed_events: Set<string> = new Set();
|
54
56
|
heartbeat_event: EventSource | null = null;
|
55
57
|
|
56
|
-
|
57
|
-
input: RequestInfo | URL,
|
58
|
-
init?: RequestInit
|
59
|
-
): Promise<Response> {
|
58
|
+
fetch(input: RequestInfo | URL, init?: RequestInit): Promise<Response> {
|
60
59
|
return fetch(input, init);
|
61
60
|
}
|
62
61
|
|
63
|
-
|
64
|
-
if (typeof window
|
62
|
+
stream_factory(url: URL): EventSource | null {
|
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
|
+
);
|
71
|
+
} else {
|
65
72
|
return new EventSource(url.toString());
|
66
73
|
}
|
67
|
-
return null;
|
74
|
+
return null;
|
68
75
|
}
|
69
76
|
|
70
77
|
view_api: () => Promise<ApiInfo<JsApiData>>;
|
@@ -73,6 +80,12 @@ export class Client {
|
|
73
80
|
files: (Blob | File)[],
|
74
81
|
upload_id?: string
|
75
82
|
) => Promise<UploadResponse>;
|
83
|
+
upload: (
|
84
|
+
file_data: FileData[],
|
85
|
+
root_url: string,
|
86
|
+
upload_id?: string,
|
87
|
+
max_file_size?: number
|
88
|
+
) => Promise<(FileData | null)[] | null>;
|
76
89
|
handle_blob: (
|
77
90
|
endpoint: string,
|
78
91
|
data: unknown[],
|
@@ -95,7 +108,7 @@ export class Client {
|
|
95
108
|
event_data?: unknown
|
96
109
|
) => Promise<unknown>;
|
97
110
|
open_stream: () => void;
|
98
|
-
resolve_config: (endpoint: string) => Promise<Config | undefined>;
|
111
|
+
private resolve_config: (endpoint: string) => Promise<Config | undefined>;
|
99
112
|
constructor(app_reference: string, options: ClientOptions = {}) {
|
100
113
|
this.app_reference = app_reference;
|
101
114
|
this.options = options;
|
@@ -108,6 +121,7 @@ export class Client {
|
|
108
121
|
this.predict = predict.bind(this);
|
109
122
|
this.open_stream = open_stream.bind(this);
|
110
123
|
this.resolve_config = resolve_config.bind(this);
|
124
|
+
this.upload = upload.bind(this);
|
111
125
|
}
|
112
126
|
|
113
127
|
private async init(): Promise<void> {
|
@@ -125,12 +139,12 @@ export class Client {
|
|
125
139
|
await this._resolve_config().then(async ({ config }) => {
|
126
140
|
if (config) {
|
127
141
|
this.config = config;
|
128
|
-
if (this.config) {
|
142
|
+
if (this.config && this.config.connect_heartbeat) {
|
129
143
|
// connect to the heartbeat endpoint via GET request
|
130
144
|
const heartbeat_url = new URL(
|
131
145
|
`${this.config.root}/heartbeat/${this.session_hash}`
|
132
146
|
);
|
133
|
-
this.heartbeat_event = this.
|
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
|
134
148
|
|
135
149
|
if (this.config.space_id && this.options.hf_token) {
|
136
150
|
this.jwt = await get_jwt(
|
@@ -142,7 +156,7 @@ export class Client {
|
|
142
156
|
}
|
143
157
|
});
|
144
158
|
} catch (e) {
|
145
|
-
throw Error(
|
159
|
+
throw Error(CONFIG_ERROR_MSG + (e as Error).message);
|
146
160
|
}
|
147
161
|
|
148
162
|
this.api_info = await this.view_api();
|
@@ -182,7 +196,7 @@ export class Client {
|
|
182
196
|
config = await this.resolve_config(`${http_protocol}//${host}`);
|
183
197
|
|
184
198
|
if (!config) {
|
185
|
-
throw new Error(
|
199
|
+
throw new Error(CONFIG_ERROR_MSG);
|
186
200
|
}
|
187
201
|
|
188
202
|
return this.config_success(config);
|
@@ -224,7 +238,7 @@ export class Client {
|
|
224
238
|
try {
|
225
239
|
this.api_info = await this.view_api();
|
226
240
|
} catch (e) {
|
227
|
-
console.error(
|
241
|
+
console.error(API_INFO_ERROR_MSG + (e as Error).message);
|
228
242
|
}
|
229
243
|
|
230
244
|
return this.prepare_return_obj();
|
@@ -237,7 +251,7 @@ export class Client {
|
|
237
251
|
try {
|
238
252
|
this.config = await this._resolve_config();
|
239
253
|
if (!this.config) {
|
240
|
-
throw new Error(
|
254
|
+
throw new Error(CONFIG_ERROR_MSG);
|
241
255
|
}
|
242
256
|
|
243
257
|
const _config = await this.config_success(this.config);
|
@@ -263,7 +277,7 @@ export class Client {
|
|
263
277
|
data: unknown[] | { binary: boolean; data: Record<string, any> }
|
264
278
|
): Promise<unknown> {
|
265
279
|
if (!this.config) {
|
266
|
-
throw new Error(
|
280
|
+
throw new Error(CONFIG_ERROR_MSG);
|
267
281
|
}
|
268
282
|
|
269
283
|
const headers: {
|
@@ -315,14 +329,11 @@ export class Client {
|
|
315
329
|
}
|
316
330
|
|
317
331
|
try {
|
318
|
-
const response = await this.
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
headers
|
324
|
-
}
|
325
|
-
);
|
332
|
+
const response = await this.fetch(`${root_url}/component_server/`, {
|
333
|
+
method: "POST",
|
334
|
+
body: body,
|
335
|
+
headers
|
336
|
+
});
|
326
337
|
|
327
338
|
if (!response.ok) {
|
328
339
|
throw new Error(
|
@@ -363,4 +374,19 @@ export async function client(
|
|
363
374
|
return await Client.connect(app_reference, options);
|
364
375
|
}
|
365
376
|
|
377
|
+
/**
|
378
|
+
* @deprecated This method will be removed in v1.0. Use `Client.duplicate()` instead.
|
379
|
+
* Creates a duplicate of a space and returns a client instance for the duplicated space.
|
380
|
+
*
|
381
|
+
* @param {string} app_reference - The reference or URL to a Gradio space or app to duplicate.
|
382
|
+
* @param {DuplicateOptions} options - Configuration options for the client.
|
383
|
+
* @returns {Promise<Client>} A promise that resolves to a `Client` instance.
|
384
|
+
*/
|
385
|
+
export async function duplicate_space(
|
386
|
+
app_reference: string,
|
387
|
+
options: DuplicateOptions
|
388
|
+
): Promise<Client> {
|
389
|
+
return await Client.duplicate(app_reference, options);
|
390
|
+
}
|
391
|
+
|
366
392
|
export type ClientInstance = Client;
|
package/src/constants.ts
CHANGED
@@ -9,6 +9,8 @@ export const UPLOAD_URL = "upload";
|
|
9
9
|
export const LOGIN_URL = "login";
|
10
10
|
export const CONFIG_URL = "config";
|
11
11
|
export const API_INFO_URL = "info";
|
12
|
+
export const RUNTIME_URL = "runtime";
|
13
|
+
export const SLEEPTIME_URL = "sleeptime";
|
12
14
|
export const RAW_API_INFO_URL = "info?serialize=False";
|
13
15
|
export const SPACE_FETCHER_URL =
|
14
16
|
"https://gradio-space-api-fetcher-v2.hf.space/api";
|
@@ -16,5 +18,10 @@ export const RESET_URL = "reset";
|
|
16
18
|
export const SPACE_URL = "https://hf.space/{}";
|
17
19
|
|
18
20
|
// messages
|
19
|
-
export const QUEUE_FULL_MSG =
|
20
|
-
|
21
|
+
export const QUEUE_FULL_MSG =
|
22
|
+
"This application is currently busy. Please try again. ";
|
23
|
+
export const BROKEN_CONNECTION_MSG = "Connection errored out. ";
|
24
|
+
export const CONFIG_ERROR_MSG = "Could not resolve app config. ";
|
25
|
+
export const SPACE_STATUS_ERROR_MSG = "Could not get space status. ";
|
26
|
+
export const API_INFO_ERROR_MSG = "Could not get API info. ";
|
27
|
+
export const SPACE_METADATA_ERROR_MSG = "Space metadata could not be loaded. ";
|
package/src/helpers/api_info.ts
CHANGED
@@ -29,16 +29,16 @@ export async function process_endpoint(
|
|
29
29
|
{ headers }
|
30
30
|
);
|
31
31
|
|
32
|
-
if (res.status !== 200)
|
33
|
-
throw new Error("Space metadata could not be loaded.");
|
34
32
|
const _host = (await res.json()).host;
|
35
33
|
|
36
34
|
return {
|
37
35
|
space_id: app_reference,
|
38
36
|
...determine_protocol(_host)
|
39
37
|
};
|
40
|
-
} catch (e
|
41
|
-
throw new Error(
|
38
|
+
} catch (e) {
|
39
|
+
throw new Error(
|
40
|
+
"Space metadata could not be loaded. " + (e as Error).message
|
41
|
+
);
|
42
42
|
}
|
43
43
|
}
|
44
44
|
|
package/src/helpers/data.ts
CHANGED
@@ -5,7 +5,7 @@ import type {
|
|
5
5
|
Config,
|
6
6
|
EndpointInfo,
|
7
7
|
JsApiData,
|
8
|
-
|
8
|
+
DataType
|
9
9
|
} from "../types";
|
10
10
|
|
11
11
|
export function update_object(
|
@@ -31,22 +31,22 @@ export function update_object(
|
|
31
31
|
}
|
32
32
|
|
33
33
|
export async function walk_and_store_blobs(
|
34
|
-
|
34
|
+
data: DataType,
|
35
35
|
type: string | undefined = undefined,
|
36
36
|
path: string[] = [],
|
37
37
|
root = false,
|
38
38
|
endpoint_info: EndpointInfo<ApiData | JsApiData> | undefined = undefined
|
39
39
|
): Promise<BlobRef[]> {
|
40
|
-
if (Array.isArray(
|
40
|
+
if (Array.isArray(data)) {
|
41
41
|
let blob_refs: BlobRef[] = [];
|
42
42
|
|
43
43
|
await Promise.all(
|
44
|
-
|
44
|
+
data.map(async (item) => {
|
45
45
|
let new_path = path.slice();
|
46
46
|
new_path.push(item);
|
47
47
|
|
48
48
|
const array_refs = await walk_and_store_blobs(
|
49
|
-
|
49
|
+
data[item],
|
50
50
|
root ? endpoint_info?.parameters[item]?.component || undefined : type,
|
51
51
|
new_path,
|
52
52
|
false,
|
@@ -58,44 +58,62 @@ export async function walk_and_store_blobs(
|
|
58
58
|
);
|
59
59
|
|
60
60
|
return blob_refs;
|
61
|
-
} else if (
|
61
|
+
} else if (
|
62
|
+
(globalThis.Buffer && data instanceof globalThis.Buffer) ||
|
63
|
+
data instanceof Blob
|
64
|
+
) {
|
62
65
|
const is_image = type === "Image";
|
63
66
|
return [
|
64
67
|
{
|
65
68
|
path: path,
|
66
|
-
blob: is_image ? false : new NodeBlob([
|
69
|
+
blob: is_image ? false : new NodeBlob([data]),
|
67
70
|
type
|
68
71
|
}
|
69
72
|
];
|
70
|
-
} else if (typeof
|
73
|
+
} else if (typeof data === "object" && data !== null) {
|
71
74
|
let blob_refs: BlobRef[] = [];
|
72
|
-
for (
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
75
|
+
for (const key of Object.keys(data) as (keyof typeof data)[]) {
|
76
|
+
const new_path = [...path, key];
|
77
|
+
const value = data[key];
|
78
|
+
|
79
|
+
blob_refs = blob_refs.concat(
|
80
|
+
await walk_and_store_blobs(
|
81
|
+
value,
|
82
|
+
undefined,
|
83
|
+
new_path,
|
84
|
+
false,
|
85
|
+
endpoint_info
|
86
|
+
)
|
87
|
+
);
|
88
|
+
}
|
89
|
+
|
90
|
+
if (
|
91
|
+
!blob_refs.length &&
|
92
|
+
!(
|
93
|
+
data instanceof Blob ||
|
94
|
+
data instanceof ArrayBuffer ||
|
95
|
+
data instanceof Uint8Array
|
96
|
+
)
|
97
|
+
) {
|
98
|
+
return [
|
99
|
+
{
|
100
|
+
path: path,
|
101
|
+
blob: new NodeBlob([JSON.stringify(data)]),
|
102
|
+
type: typeof data
|
103
|
+
}
|
104
|
+
];
|
87
105
|
}
|
88
106
|
return blob_refs;
|
89
107
|
}
|
108
|
+
|
90
109
|
return [];
|
91
110
|
}
|
92
111
|
|
93
112
|
export function skip_queue(id: number, config: Config): boolean {
|
94
|
-
|
95
|
-
!
|
96
|
-
|
97
|
-
|
98
|
-
);
|
113
|
+
if (config?.dependencies?.[id]?.queue !== null) {
|
114
|
+
return !config.dependencies[id].queue;
|
115
|
+
}
|
116
|
+
return !config.enable_queue;
|
99
117
|
}
|
100
118
|
|
101
119
|
// todo: add jsdoc for this function
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import type { Config } from "../types";
|
2
|
-
import { CONFIG_URL } from "../constants";
|
2
|
+
import { CONFIG_ERROR_MSG, CONFIG_URL } from "../constants";
|
3
3
|
import { Client } from "..";
|
4
4
|
|
5
5
|
/**
|
@@ -38,7 +38,6 @@ export async function get_jwt(
|
|
38
38
|
|
39
39
|
return jwt || false;
|
40
40
|
} catch (e) {
|
41
|
-
console.error(e);
|
42
41
|
return false;
|
43
42
|
}
|
44
43
|
}
|
@@ -74,14 +73,11 @@ export async function resolve_config(
|
|
74
73
|
const config = window.gradio_config;
|
75
74
|
let config_root = resolve_root(endpoint, config.root, false);
|
76
75
|
config.root = config_root;
|
77
|
-
return { ...config, path };
|
76
|
+
return { ...config, path } as Config;
|
78
77
|
} else if (endpoint) {
|
79
|
-
const response = await this.
|
80
|
-
|
81
|
-
|
82
|
-
headers
|
83
|
-
}
|
84
|
-
);
|
78
|
+
const response = await this.fetch(`${endpoint}/${CONFIG_URL}`, {
|
79
|
+
headers
|
80
|
+
});
|
85
81
|
|
86
82
|
if (response?.status === 200) {
|
87
83
|
let config = await response.json();
|
@@ -89,10 +85,10 @@ export async function resolve_config(
|
|
89
85
|
config.root = endpoint;
|
90
86
|
return config;
|
91
87
|
}
|
92
|
-
throw new Error(
|
88
|
+
throw new Error(CONFIG_ERROR_MSG);
|
93
89
|
}
|
94
90
|
|
95
|
-
throw new Error(
|
91
|
+
throw new Error(CONFIG_ERROR_MSG);
|
96
92
|
}
|
97
93
|
|
98
94
|
export function determine_protocol(endpoint: string): {
|