From 421db1a5ecda86365f98b231cce89bbb9775f2f7 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Mon, 6 Apr 2026 23:10:16 +0100 Subject: [PATCH] refactor: dedupe matrix record helper --- extensions/matrix/src/account-selection.ts | 5 +---- extensions/matrix/src/doctor-contract.ts | 5 +---- extensions/matrix/src/doctor.ts | 5 +---- extensions/matrix/src/record-shared.ts | 3 +++ 4 files changed, 6 insertions(+), 12 deletions(-) create mode 100644 extensions/matrix/src/record-shared.ts diff --git a/extensions/matrix/src/account-selection.ts b/extensions/matrix/src/account-selection.ts index b7f49f5c3d4..22676b9fb5c 100644 --- a/extensions/matrix/src/account-selection.ts +++ b/extensions/matrix/src/account-selection.ts @@ -16,10 +16,7 @@ import { type MatrixResolvedStringField, } from "./auth-precedence.js"; import { getMatrixScopedEnvVarNames, listMatrixEnvAccountIds } from "./env-vars.js"; - -function isRecord(value: unknown): value is Record { - return Boolean(value) && typeof value === "object" && !Array.isArray(value); -} +import { isRecord } from "./record-shared.js"; type MatrixTopologyStringSources = Partial>; diff --git a/extensions/matrix/src/doctor-contract.ts b/extensions/matrix/src/doctor-contract.ts index 200b1c45548..e146d767f78 100644 --- a/extensions/matrix/src/doctor-contract.ts +++ b/extensions/matrix/src/doctor-contract.ts @@ -7,10 +7,7 @@ import { hasLegacyFlatAllowPrivateNetworkAlias, migrateLegacyFlatAllowPrivateNetworkAlias, } from "openclaw/plugin-sdk/ssrf-runtime"; - -function isRecord(value: unknown): value is Record { - return Boolean(value) && typeof value === "object" && !Array.isArray(value); -} +import { isRecord } from "./record-shared.js"; function hasLegacyMatrixRoomAllowAlias(value: unknown): boolean { const room = isRecord(value) ? value : null; diff --git a/extensions/matrix/src/doctor.ts b/extensions/matrix/src/doctor.ts index 9681bd70a12..0b803cdc3d5 100644 --- a/extensions/matrix/src/doctor.ts +++ b/extensions/matrix/src/doctor.ts @@ -18,10 +18,7 @@ import { hasPendingMatrixMigration, maybeCreateMatrixMigrationSnapshot, } from "./matrix-migration.runtime.js"; - -function isRecord(value: unknown): value is Record { - return Boolean(value) && typeof value === "object" && !Array.isArray(value); -} +import { isRecord } from "./record-shared.js"; function hasConfiguredMatrixChannel(cfg: OpenClawConfig): boolean { const channels = cfg.channels as Record | undefined; diff --git a/extensions/matrix/src/record-shared.ts b/extensions/matrix/src/record-shared.ts new file mode 100644 index 00000000000..60a91e266fc --- /dev/null +++ b/extensions/matrix/src/record-shared.ts @@ -0,0 +1,3 @@ +export function isRecord(value: unknown): value is Record { + return Boolean(value) && typeof value === "object" && !Array.isArray(value); +}