Files

22 lines
774 B
TypeScript
Raw Permalink Normal View History

import { clientSchemaPositions } from "./client-schema-positions.mjs";
/** Check forwarded regex constraints in native plain/Unicode/Unicode-sets modes. */
export const assertClientSchemaPatterns = (
schema: unknown,
): readonly string[] => {
const patterns: string[] = [];
for (const position of clientSchemaPositions(schema)) {
const pattern =
position.kind === "pattern-property"
? position.pattern
: position.kind === "keyword" &&
position.keyword === "pattern" &&
typeof position.value === "string"
? position.value
: undefined;
if (pattern === undefined) continue;
for (const flags of ["", "u", "v"]) new RegExp(pattern, flags);
patterns.push(pattern);
}
return patterns;
};