Server IP : 162.213.251.212 / Your IP : 18.117.100.99 [ Web Server : LiteSpeed System : Linux business55.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : allssztx ( 535) PHP Version : 8.1.31 Disable Function : NONE Domains : 1 Domains MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /proc/thread-self/root/home/allssztx/needapair.com/node_modules/bson/src/ |
Upload File : |
import { BSONValue } from './bson_value'; import { BSONError } from './error'; import type { EJSONOptions } from './extended_json'; import { type InspectFn, defaultInspect, getStylizeFunction } from './parser/utils'; function alphabetize(str: string): string { return str.split('').sort().join(''); } /** @public */ export interface BSONRegExpExtendedLegacy { $regex: string | BSONRegExp; $options: string; } /** @public */ export interface BSONRegExpExtended { $regularExpression: { pattern: string; options: string; }; } /** * A class representation of the BSON RegExp type. * @public * @category BSONType */ export class BSONRegExp extends BSONValue { get _bsontype(): 'BSONRegExp' { return 'BSONRegExp'; } pattern!: string; options!: string; /** * @param pattern - The regular expression pattern to match * @param options - The regular expression options */ constructor(pattern: string, options?: string) { super(); this.pattern = pattern; this.options = alphabetize(options ?? ''); if (this.pattern.indexOf('\x00') !== -1) { throw new BSONError( `BSON Regex patterns cannot contain null bytes, found: ${JSON.stringify(this.pattern)}` ); } if (this.options.indexOf('\x00') !== -1) { throw new BSONError( `BSON Regex options cannot contain null bytes, found: ${JSON.stringify(this.options)}` ); } // Validate options for (let i = 0; i < this.options.length; i++) { if ( !( this.options[i] === 'i' || this.options[i] === 'm' || this.options[i] === 'x' || this.options[i] === 'l' || this.options[i] === 's' || this.options[i] === 'u' ) ) { throw new BSONError(`The regular expression option [${this.options[i]}] is not supported`); } } } static parseOptions(options?: string): string { return options ? options.split('').sort().join('') : ''; } /** @internal */ toExtendedJSON(options?: EJSONOptions): BSONRegExpExtendedLegacy | BSONRegExpExtended { options = options || {}; if (options.legacy) { return { $regex: this.pattern, $options: this.options }; } return { $regularExpression: { pattern: this.pattern, options: this.options } }; } /** @internal */ static fromExtendedJSON(doc: BSONRegExpExtendedLegacy | BSONRegExpExtended): BSONRegExp { if ('$regex' in doc) { if (typeof doc.$regex !== 'string') { // This is for $regex query operators that have extended json values. if (doc.$regex._bsontype === 'BSONRegExp') { return doc as unknown as BSONRegExp; } } else { return new BSONRegExp(doc.$regex, BSONRegExp.parseOptions(doc.$options)); } } if ('$regularExpression' in doc) { return new BSONRegExp( doc.$regularExpression.pattern, BSONRegExp.parseOptions(doc.$regularExpression.options) ); } throw new BSONError(`Unexpected BSONRegExp EJSON object form: ${JSON.stringify(doc)}`); } inspect(depth?: number, options?: unknown, inspect?: InspectFn): string { const stylize = getStylizeFunction(options) ?? (v => v); inspect ??= defaultInspect; const pattern = stylize(inspect(this.pattern), 'regexp'); const flags = stylize(inspect(this.options), 'regexp'); return `new BSONRegExp(${pattern}, ${flags})`; } }