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