api/federation/schemas/regex.ts

41 lines
1,022 B
TypeScript
Raw Normal View History

/**
* Regular expressions for matching various strings.
* @module federation/schemas/regex
* @see module:federation/schemas/base
*/
import {
caseInsensitive,
charIn,
createRegExp,
digit,
exactly,
global,
letter,
oneOrMore,
} from "magic-regexp";
/**
* Regular expression for matching emojis.
*/
export const emojiRegex: RegExp = createRegExp(
// A-Z a-z 0-9 _ -
oneOrMore(letter.or(digit).or(exactly("_")).or(exactly("-"))),
[caseInsensitive, global],
);
/**
* Regular expression for matching an extension_type
* @example org.lysand:custom_emojis/Emoji
*/
export const extensionTypeRegex: RegExp = createRegExp(
// org namespace, then colon, then alphanumeric/_/-, then extension name
exactly(
oneOrMore(exactly(letter.lowercase.or(digit).or(charIn("_-.")))),
exactly(":"),
oneOrMore(exactly(letter.lowercase.or(digit).or(charIn("_-")))),
exactly("/"),
oneOrMore(exactly(letter.or(digit).or(charIn("_-")))),
),
);