fix(client): storage upload array (#66)
This commit is contained in:
parent
5f15da9d83
commit
cd2089768d
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@fal-ai/serverless-client",
|
"name": "@fal-ai/serverless-client",
|
||||||
"description": "The fal serverless JS/TS client",
|
"description": "The fal serverless JS/TS client",
|
||||||
"version": "0.10.0",
|
"version": "0.10.2",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
|
|||||||
@ -103,33 +103,29 @@ export const storageImpl: StorageSupport = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
transformInput: async (input: Record<string, any>) => {
|
transformInput: async (input: any) => {
|
||||||
if (!isPlainObject(input)) {
|
if (Array.isArray(input)) {
|
||||||
return input;
|
return Promise.all(input.map((item) => storageImpl.transformInput(item)));
|
||||||
}
|
} else if (
|
||||||
const promises = Object.entries(input).map(async ([key, value]) => {
|
input instanceof Blob ||
|
||||||
if (
|
(typeof input === 'string' && isDataUri(input))
|
||||||
value instanceof Blob ||
|
|
||||||
(typeof value === 'string' && isDataUri(value))
|
|
||||||
) {
|
) {
|
||||||
let blob = value;
|
let blob = input;
|
||||||
// if string is a data uri, convert to blob
|
// If the string is a data URI, convert it to a blob
|
||||||
if (typeof value === 'string' && isDataUri(value)) {
|
if (typeof input === 'string' && isDataUri(input)) {
|
||||||
const response = await fetch(value);
|
const response = await fetch(input);
|
||||||
blob = await response.blob();
|
blob = await response.blob();
|
||||||
}
|
}
|
||||||
const url = await storageImpl.upload(blob as Blob);
|
const url = await storageImpl.upload(blob as Blob);
|
||||||
return [key, url];
|
return url;
|
||||||
}
|
} else if (isPlainObject(input)) {
|
||||||
if (isPlainObject(value)) {
|
const promises = Object.entries(input).map(async ([key, value]) => {
|
||||||
return [key, await storageImpl.transformInput(value)];
|
return [key, await storageImpl.transformInput(value)];
|
||||||
}
|
|
||||||
if (Array.isArray(value)) {
|
|
||||||
return [key, await Promise.all(value.map(storageImpl.transformInput))];
|
|
||||||
}
|
|
||||||
return [key, value] as KeyValuePair;
|
|
||||||
});
|
});
|
||||||
const results = await Promise.all(promises);
|
const results = await Promise.all(promises);
|
||||||
return Object.fromEntries(results);
|
return Object.fromEntries(results);
|
||||||
|
}
|
||||||
|
// Return the input as is if it's neither an object nor a file/blob/data URI
|
||||||
|
return input;
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user