UNPKG

@vector-im/matrix-bot-sdk

Version:

TypeScript/JavaScript SDK for Matrix bots and appservices

39 lines (34 loc) 1.15 kB
import * as globToRegexp from "glob-to-regexp"; /** * Represents a common Matrix glob. This is commonly used * for server ACLs and similar functions. * @category Utilities */ export class MatrixGlob { /** * The regular expression which represents this glob. */ public readonly regex: RegExp; /** * Creates a new Matrix Glob * @param {string} glob The glob to convert. Eg: "*.example.org" */ constructor(glob: string) { const globRegex = globToRegexp(glob, { extended: false, globstar: false, }); // We need to convert `?` manually because globToRegexp's extended mode // does more than we want it to. const replaced = globRegex.toString().replace(/\\\?/g, "."); this.regex = new RegExp(replaced.substring(1, replaced.length - 1)); } /** * Tests the glob against a value, returning true if it matches. * @param {string} val The value to test. * @returns {boolean} True if the value matches the glob, false otherwise. */ public test(val: string): boolean { return this.regex.test(val); } }