import { isAllowedParsedChatSender as isAllowedParsedChatSenderShared } from "../channels/plugins/chat-target-prefixes.js"; import { normalizeOptionalLowercaseString } from "../shared/string-coerce.js";
export type {
AllowlistMatch,
AllowlistMatchSource,
CompiledAllowlist,
} from "../channels/allowlist-match.js";
export type { AllowlistUserResolutionLike } from "../channels/allowlists/resolve-utils.js";
export {
compileAllowlist,
formatAllowlistMatchMeta,
resolveAllowlistCandidates,
resolveAllowlistMatchByCandidates,
resolveAllowlistMatchSimple,
resolveCompiledAllowlistMatch,
} from "../channels/allowlist-match.js";
export {
firstDefined,
isSenderIdAllowed,
mergeDmAllowFromSources,
resolveGroupAllowFromSources,
} from "../channels/allow-from.js";
export {
addAllowlistUserEntriesFromConfigEntry,
buildAllowlistResolutionSummary,
canonicalizeAllowlistWithResolvedIds,
mergeAllowlist,
patchAllowlistUsersInConfigEntries,
summarizeMapping,
} from "../channels/allowlists/resolve-utils.js";
/** Lowercase and optionally strip prefixes from allowlist entries before sender comparisons. */
export function formatAllowFromLowercase(params: {
allowFrom: Array<string | number>;
stripPrefixRe?: RegExp;
}): string[] { return params.allowFrom
.map((entry) => String(entry).trim())
.filter(Boolean)
.map((entry) => (params.stripPrefixRe ? entry.replace(params.stripPrefixRe, "") : entry))
.map((entry) => normalizeOptionalLowercaseString(entry))
.filter((entry): entry is string => Boolean(entry));
}
/** Normalize allowlist entries through a channel-provided parser or canonicalizer. */
export function formatNormalizedAllowFromEntries(params: {
allowFrom: Array<string | number>;
normalizeEntry: (entry: string) => string | undefined | null;
}): string[] { return params.allowFrom
.map((entry) => String(entry).trim())
.filter(Boolean)
.map((entry) => params.normalizeEntry(entry))
.filter((entry): entry is string => Boolean(entry));
}
/** Check whether a sender id matches a simple normalized allowlist with wildcard support. */
export function isNormalizedSenderAllowed(params: {
senderId: string | number;
allowFrom: Array<string | number>;
stripPrefixRe?: RegExp;
}): boolean { const normalizedAllow = formatAllowFromLowercase({
allowFrom: params.allowFrom,
stripPrefixRe: params.stripPrefixRe,
}); if (normalizedAllow.length === 0) { returnfalse;
} if (normalizedAllow.includes("*")) { returntrue;
} const sender = normalizeOptionalLowercaseString(String(params.senderId)); return sender ? normalizedAllow.includes(sender) : false;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.