mirror of
https://github.com/yume-chan/ya-webadb.git
synced 2025-10-06 03:50:18 +02:00
fix(adb): throw correct error from sync.pull
This commit is contained in:
parent
22f0329136
commit
9718f83926
3 changed files with 31 additions and 5 deletions
|
@ -30,6 +30,9 @@ export async function* adbSyncPullGenerator(
|
||||||
yield packet.data;
|
yield packet.data;
|
||||||
}
|
}
|
||||||
done = true;
|
done = true;
|
||||||
|
} catch (e) {
|
||||||
|
done = true;
|
||||||
|
throw e;
|
||||||
} finally {
|
} finally {
|
||||||
if (!done) {
|
if (!done) {
|
||||||
// sync pull can't be cancelled, so we have to read all data
|
// sync pull can't be cancelled, so we have to read all data
|
||||||
|
|
|
@ -27,14 +27,22 @@ const CODEC_OPTION_TYPES: Partial<
|
||||||
};
|
};
|
||||||
|
|
||||||
export class CodecOptions implements ScrcpyOptionValue {
|
export class CodecOptions implements ScrcpyOptionValue {
|
||||||
value: Partial<CodecOptionsInit>;
|
options: Partial<CodecOptionsInit>;
|
||||||
|
|
||||||
constructor(value: Partial<CodecOptionsInit> = {}) {
|
constructor(options: Partial<CodecOptionsInit> = {}) {
|
||||||
this.value = value;
|
for (const [key, value] of Object.entries(options)) {
|
||||||
|
if (typeof value !== "number") {
|
||||||
|
throw new Error(
|
||||||
|
`Invalid option value for ${key}: ${String(value)}`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.options = options;
|
||||||
}
|
}
|
||||||
|
|
||||||
toOptionValue(): string | undefined {
|
toOptionValue(): string | undefined {
|
||||||
const entries = Object.entries(this.value).filter(
|
const entries = Object.entries(this.options).filter(
|
||||||
([, value]) => value !== undefined,
|
([, value]) => value !== undefined,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -44,8 +52,15 @@ export class CodecOptions implements ScrcpyOptionValue {
|
||||||
|
|
||||||
return entries
|
return entries
|
||||||
.map(([key, value]) => {
|
.map(([key, value]) => {
|
||||||
|
let result = toDashCase(key);
|
||||||
|
|
||||||
const type = CODEC_OPTION_TYPES[key as keyof CodecOptionsInit];
|
const type = CODEC_OPTION_TYPES[key as keyof CodecOptionsInit];
|
||||||
return `${toDashCase(key)}${type ? `:${type}` : ""}=${value}`;
|
if (type) {
|
||||||
|
result += `:${type}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
result += `=${value}`;
|
||||||
|
return result;
|
||||||
})
|
})
|
||||||
.join(",");
|
.join(",");
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,6 +42,14 @@ export function toScrcpyOptionValue<T>(value: unknown, empty: T): string | T {
|
||||||
return empty;
|
return empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
typeof value !== "string" &&
|
||||||
|
typeof value !== "number" &&
|
||||||
|
typeof value !== "boolean"
|
||||||
|
) {
|
||||||
|
throw new Error(`Invalid option value: ${String(value)}`);
|
||||||
|
}
|
||||||
|
|
||||||
return String(value);
|
return String(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue