32 lines
960 B
TypeScript
32 lines
960 B
TypeScript
type JsonRecord = Record<string, unknown>;
|
|
|
|
function toRecord(value: unknown): JsonRecord | null {
|
|
if (!value || typeof value !== "object" || Array.isArray(value)) return null;
|
|
return value as JsonRecord;
|
|
}
|
|
|
|
function unwrapData(payload: unknown) {
|
|
const record = toRecord(payload);
|
|
return record?.data && typeof record.data === "object" ? record.data : payload;
|
|
}
|
|
|
|
export function shouldResolveVip98kResultDelivery(params: {
|
|
payload: unknown;
|
|
status: string;
|
|
outputUrlCount: number;
|
|
}) {
|
|
if (params.outputUrlCount > 0) return false;
|
|
const data = toRecord(unwrapData(params.payload));
|
|
const result = toRecord(data?.result);
|
|
const resultAvailable = Boolean(
|
|
data?.resultAvailable ??
|
|
data?.result_available ??
|
|
result?.resultAvailable ??
|
|
result?.result_available,
|
|
);
|
|
const terminal = ["succeeded", "success", "completed", "done", "finished"].includes(
|
|
params.status,
|
|
);
|
|
return terminal || resultAvailable;
|
|
}
|