refactor: dedupe shared record coercers

This commit is contained in:
Peter Steinberger
2026-04-07 00:30:42 +01:00
parent 560a7aecd0
commit a88f240311
8 changed files with 17 additions and 30 deletions

View File

@@ -1,12 +1,9 @@
import { parseFiniteNumber } from "openclaw/plugin-sdk/infra-runtime";
import { asNullableRecord } from "openclaw/plugin-sdk/text-runtime";
import { extractHandleFromChatGuid, normalizeBlueBubblesHandle } from "./targets.js";
import type { BlueBubblesAttachment } from "./types.js";
export function asRecord(value: unknown): Record<string, unknown> | null {
return value && typeof value === "object" && !Array.isArray(value)
? (value as Record<string, unknown>)
: null;
}
export const asRecord = asNullableRecord;
function readString(record: Record<string, unknown> | null, key: string): string | undefined {
if (!record) {

View File

@@ -1,10 +1,6 @@
import { isRecord } from "openclaw/plugin-sdk/text-runtime";
import { asNullableRecord, isRecord } from "openclaw/plugin-sdk/text-runtime";
export { isRecord };
export function asRecord(value: unknown): Record<string, unknown> | null {
return isRecord(value) ? value : null;
}
export { asNullableRecord as asRecord, isRecord };
export function hasNonEmptyString(value: unknown): value is string {
return typeof value === "string" && value.trim().length > 0;

View File

@@ -1,9 +1,4 @@
export function asRecord(value: unknown): Record<string, unknown> | null {
if (!value || typeof value !== "object" || Array.isArray(value)) {
return null;
}
return value as Record<string, unknown>;
}
export { asNullableRecord as asRecord } from "openclaw/plugin-sdk/text-runtime";
export function normalizeTrimmedString(value: unknown): string | undefined {
if (typeof value !== "string") {

View File

@@ -1,5 +1 @@
export function asRecord(value: unknown): Record<string, unknown> | undefined {
return value && typeof value === "object" && !Array.isArray(value)
? (value as Record<string, unknown>)
: undefined;
}
export { asOptionalRecord as asRecord } from "../shared/record-coerce.js";

View File

@@ -1,5 +1,3 @@
export type ArgsRecord = Record<string, unknown>;
export function asRecord(args: unknown): ArgsRecord | undefined {
return args && typeof args === "object" ? (args as ArgsRecord) : undefined;
}
export { asOptionalObjectRecord as asRecord } from "../shared/record-coerce.js";

View File

@@ -1,8 +1,4 @@
export function asRecord(value: unknown): Record<string, unknown> | undefined {
return value && typeof value === "object" && !Array.isArray(value)
? (value as Record<string, unknown>)
: undefined;
}
export { asOptionalRecord as asRecord } from "../../shared/record-coerce.js";
export function normalizeTrimmedString(value: unknown): string | undefined {
if (typeof value !== "string") {

View File

@@ -10,6 +10,7 @@ export * from "../markdown/render-aware-chunking.js";
export * from "../markdown/render.js";
export * from "../markdown/tables.js";
export * from "../shared/global-singleton.js";
export * from "../shared/record-coerce.js";
export * from "../shared/scoped-expiring-id-cache.js";
export * from "../shared/string-coerce.js";
export * from "../shared/string-normalization.js";

View File

@@ -4,10 +4,18 @@ export function asRecord(value: unknown): Record<string, unknown> {
return typeof value === "object" && value !== null ? (value as Record<string, unknown>) : {};
}
export function asOptionalRecord(value: unknown): Record<string, unknown> | undefined {
return isRecord(value) ? value : undefined;
}
export function asNullableRecord(value: unknown): Record<string, unknown> | null {
return isRecord(value) ? value : null;
}
export function asOptionalObjectRecord(value: unknown): Record<string, unknown> | undefined {
return value && typeof value === "object" ? (value as Record<string, unknown>) : undefined;
}
export function asNullableObjectRecord(value: unknown): Record<string, unknown> | null {
return value && typeof value === "object" ? (value as Record<string, unknown>) : null;
}