Skip to content

Commit 5a32a1b

Browse files
committed
fix(drive-record-traces): eliminate bare as-cast in parsePayload
Factor the object-shape check into an isRecord type predicate so TypeScript narrows parsed to Record<string,unknown> without a cast. Keeps identical behaviour and error messages. Signed-off-by: Will Madden <madden@prisma.io>
1 parent 87143c2 commit 5a32a1b

1 file changed

Lines changed: 6 additions & 2 deletions

File tree

  • skills-contrib/drive-record-traces

skills-contrib/drive-record-traces/emit.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,17 +68,21 @@ function fail(message: string): never {
6868
process.exit(1);
6969
}
7070

71+
function isRecord(value: unknown): value is Record<string, unknown> {
72+
return typeof value === 'object' && value !== null && !Array.isArray(value);
73+
}
74+
7175
function parsePayload(raw: string): Record<string, unknown> {
7276
let parsed: unknown;
7377
try {
7478
parsed = JSON.parse(raw);
7579
} catch (err) {
7680
fail(`--payload is not valid JSON: ${err instanceof Error ? err.message : String(err)}`);
7781
}
78-
if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
82+
if (!isRecord(parsed)) {
7983
fail('--payload must be a JSON object');
8084
}
81-
return parsed as Record<string, unknown>;
85+
return parsed;
8286
}
8387

8488
function main(): void {

0 commit comments

Comments
 (0)