mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-12 19:00:43 +00:00
57 lines
1.5 KiB
TypeScript
57 lines
1.5 KiB
TypeScript
import { normalizeStringEntries } from "../shared/string-normalization.js";
|
|
|
|
export function mergeDmAllowFromSources(params: {
|
|
allowFrom?: Array<string | number>;
|
|
storeAllowFrom?: Array<string | number>;
|
|
dmPolicy?: string;
|
|
}): string[] {
|
|
const storeEntries =
|
|
params.dmPolicy === "allowlist" || params.dmPolicy === "open"
|
|
? []
|
|
: (params.storeAllowFrom ?? []);
|
|
return normalizeStringEntries([...(params.allowFrom ?? []), ...storeEntries]);
|
|
}
|
|
|
|
export function resolveGroupAllowFromSources(params: {
|
|
allowFrom?: Array<string | number>;
|
|
groupAllowFrom?: Array<string | number>;
|
|
fallbackToAllowFrom?: boolean;
|
|
}): string[] {
|
|
const explicitGroupAllowFrom =
|
|
Array.isArray(params.groupAllowFrom) && params.groupAllowFrom.length > 0
|
|
? params.groupAllowFrom
|
|
: undefined;
|
|
const scoped = explicitGroupAllowFrom
|
|
? explicitGroupAllowFrom
|
|
: params.fallbackToAllowFrom === false
|
|
? []
|
|
: (params.allowFrom ?? []);
|
|
return normalizeStringEntries(scoped);
|
|
}
|
|
|
|
export function firstDefined<T>(...values: Array<T | undefined>) {
|
|
for (const value of values) {
|
|
if (value !== undefined) {
|
|
return value;
|
|
}
|
|
}
|
|
return undefined;
|
|
}
|
|
|
|
export function isSenderIdAllowed(
|
|
allow: { entries: string[]; hasWildcard: boolean; hasEntries: boolean },
|
|
senderId: string | undefined,
|
|
allowWhenEmpty: boolean,
|
|
): boolean {
|
|
if (!allow.hasEntries) {
|
|
return allowWhenEmpty;
|
|
}
|
|
if (allow.hasWildcard) {
|
|
return true;
|
|
}
|
|
if (!senderId) {
|
|
return false;
|
|
}
|
|
return allow.entries.includes(senderId);
|
|
}
|