import { normalizeStringEntries } from "../shared/string-normalization.js"; export type PluginIdScope = readonly string[] | undefined; export function normalizePluginIdScope(ids?: readonly unknown[]): string[] | undefined { if (ids === undefined) { return undefined; } return Array.from( new Set(normalizeStringEntries(ids.filter((id): id is string => typeof id === "string"))), ).toSorted(); } export function hasExplicitPluginIdScope(ids?: readonly string[]): boolean { return ids !== undefined; } export function hasNonEmptyPluginIdScope(ids?: readonly string[]): boolean { return ids !== undefined && ids.length > 0; } export function createPluginIdScopeSet(ids?: readonly string[]): ReadonlySet | null { if (ids === undefined) { return null; } return new Set(ids); } export function serializePluginIdScope(ids?: readonly string[]): string { return ids === undefined ? "__unscoped__" : JSON.stringify(ids); }