matrix-react-sdk
Version:
SDK for matrix.org using React
53 lines (47 loc) • 5.14 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.MatrixGlob = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _globToRegexp = _interopRequireDefault(require("glob-to-regexp"));
/*
Copyright 2024 New Vector Ltd.
Copyright 2019 The Matrix.org Foundation C.I.C.
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only
Please see LICENSE files in the repository root for full details.
*/
// Taken with permission from matrix-bot-sdk:
// https://github.com/turt2live/matrix-js-bot-sdk/blob/eb148c2ecec7bf3ade801d73deb43df042d55aef/src/MatrixGlob.ts
/**
* Represents a common Matrix glob. This is commonly used
* for server ACLs and similar functions.
*/
class MatrixGlob {
/**
* Creates a new Matrix Glob
* @param {string} glob The glob to convert. Eg: "*.example.org"
*/
constructor(glob) {
(0, _defineProperty2.default)(this, "regex", void 0);
const globRegex = (0, _globToRegexp.default)(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.
*/
test(val) {
return this.regex.test(val);
}
}
exports.MatrixGlob = MatrixGlob;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ2xvYlRvUmVnZXhwIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJNYXRyaXhHbG9iIiwiY29uc3RydWN0b3IiLCJnbG9iIiwiX2RlZmluZVByb3BlcnR5MiIsImRlZmF1bHQiLCJnbG9iUmVnZXgiLCJnbG9iVG9SZWdleHAiLCJleHRlbmRlZCIsImdsb2JzdGFyIiwicmVwbGFjZWQiLCJ0b1N0cmluZyIsInJlcGxhY2UiLCJyZWdleCIsIlJlZ0V4cCIsInN1YnN0cmluZyIsImxlbmd0aCIsInRlc3QiLCJ2YWwiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL01hdHJpeEdsb2IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDI0IE5ldyBWZWN0b3IgTHRkLlxuQ29weXJpZ2h0IDIwMTkgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IGdsb2JUb1JlZ2V4cCBmcm9tIFwiZ2xvYi10by1yZWdleHBcIjtcblxuLy8gVGFrZW4gd2l0aCBwZXJtaXNzaW9uIGZyb20gbWF0cml4LWJvdC1zZGs6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vdHVydDJsaXZlL21hdHJpeC1qcy1ib3Qtc2RrL2Jsb2IvZWIxNDhjMmVjZWM3YmYzYWRlODAxZDczZGViNDNkZjA0MmQ1NWFlZi9zcmMvTWF0cml4R2xvYi50c1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBjb21tb24gTWF0cml4IGdsb2IuIFRoaXMgaXMgY29tbW9ubHkgdXNlZFxuICogZm9yIHNlcnZlciBBQ0xzIGFuZCBzaW1pbGFyIGZ1bmN0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIE1hdHJpeEdsb2Ige1xuICAgIHByaXZhdGUgcmVnZXg6IFJlZ0V4cDtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgTWF0cml4IEdsb2JcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZ2xvYiBUaGUgZ2xvYiB0byBjb252ZXJ0LiBFZzogXCIqLmV4YW1wbGUub3JnXCJcbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoZ2xvYjogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGdsb2JSZWdleCA9IGdsb2JUb1JlZ2V4cChnbG9iLCB7XG4gICAgICAgICAgICBleHRlbmRlZDogZmFsc2UsXG4gICAgICAgICAgICBnbG9ic3RhcjogZmFsc2UsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFdlIG5lZWQgdG8gY29udmVydCBgP2AgbWFudWFsbHkgYmVjYXVzZSBnbG9iVG9SZWdleHAncyBleHRlbmRlZCBtb2RlXG4gICAgICAgIC8vIGRvZXMgbW9yZSB0aGFuIHdlIHdhbnQgaXQgdG8uXG4gICAgICAgIGNvbnN0IHJlcGxhY2VkID0gZ2xvYlJlZ2V4LnRvU3RyaW5nKCkucmVwbGFjZSgvXFxcXFxcPy9nLCBcIi5cIik7XG4gICAgICAgIHRoaXMucmVnZXggPSBuZXcgUmVnRXhwKHJlcGxhY2VkLnN1YnN0cmluZygxLCByZXBsYWNlZC5sZW5ndGggLSAxKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGVzdHMgdGhlIGdsb2IgYWdhaW5zdCBhIHZhbHVlLCByZXR1cm5pbmcgdHJ1ZSBpZiBpdCBtYXRjaGVzLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3QuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHZhbHVlIG1hdGNoZXMgdGhlIGdsb2IsIGZhbHNlIG90aGVyd2lzZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgdGVzdCh2YWw6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWdleC50ZXN0KHZhbCk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQVFBLElBQUFBLGFBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQVJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUlBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDTyxNQUFNQyxVQUFVLENBQUM7RUFHcEI7QUFDSjtBQUNBO0FBQ0E7RUFDV0MsV0FBV0EsQ0FBQ0MsSUFBWSxFQUFFO0lBQUEsSUFBQUMsZ0JBQUEsQ0FBQUMsT0FBQTtJQUM3QixNQUFNQyxTQUFTLEdBQUcsSUFBQUMscUJBQVksRUFBQ0osSUFBSSxFQUFFO01BQ2pDSyxRQUFRLEVBQUUsS0FBSztNQUNmQyxRQUFRLEVBQUU7SUFDZCxDQUFDLENBQUM7O0lBRUY7SUFDQTtJQUNBLE1BQU1DLFFBQVEsR0FBR0osU0FBUyxDQUFDSyxRQUFRLENBQUMsQ0FBQyxDQUFDQyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQztJQUMzRCxJQUFJLENBQUNDLEtBQUssR0FBRyxJQUFJQyxNQUFNLENBQUNKLFFBQVEsQ0FBQ0ssU0FBUyxDQUFDLENBQUMsRUFBRUwsUUFBUSxDQUFDTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7RUFDdkU7O0VBRUE7QUFDSjtBQUNBO0FBQ0E7QUFDQTtFQUNXQyxJQUFJQSxDQUFDQyxHQUFXLEVBQVc7SUFDOUIsT0FBTyxJQUFJLENBQUNMLEtBQUssQ0FBQ0ksSUFBSSxDQUFDQyxHQUFHLENBQUM7RUFDL0I7QUFDSjtBQUFDQyxPQUFBLENBQUFsQixVQUFBLEdBQUFBLFVBQUEiLCJpZ25vcmVMaXN0IjpbXX0=