something is working
This commit is contained in:
+74
@@ -0,0 +1,74 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.BSONRegExp = void 0;
|
||||
var error_1 = require("./error");
|
||||
function alphabetize(str) {
|
||||
return str.split('').sort().join('');
|
||||
}
|
||||
/**
|
||||
* A class representation of the BSON RegExp type.
|
||||
* @public
|
||||
* @category BSONType
|
||||
*/
|
||||
var BSONRegExp = /** @class */ (function () {
|
||||
/**
|
||||
* @param pattern - The regular expression pattern to match
|
||||
* @param options - The regular expression options
|
||||
*/
|
||||
function BSONRegExp(pattern, options) {
|
||||
if (!(this instanceof BSONRegExp))
|
||||
return new BSONRegExp(pattern, options);
|
||||
this.pattern = pattern;
|
||||
this.options = alphabetize(options !== null && options !== void 0 ? options : '');
|
||||
if (this.pattern.indexOf('\x00') !== -1) {
|
||||
throw new error_1.BSONError("BSON Regex patterns cannot contain null bytes, found: ".concat(JSON.stringify(this.pattern)));
|
||||
}
|
||||
if (this.options.indexOf('\x00') !== -1) {
|
||||
throw new error_1.BSONError("BSON Regex options cannot contain null bytes, found: ".concat(JSON.stringify(this.options)));
|
||||
}
|
||||
// Validate options
|
||||
for (var 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 error_1.BSONError("The regular expression option [".concat(this.options[i], "] is not supported"));
|
||||
}
|
||||
}
|
||||
}
|
||||
BSONRegExp.parseOptions = function (options) {
|
||||
return options ? options.split('').sort().join('') : '';
|
||||
};
|
||||
/** @internal */
|
||||
BSONRegExp.prototype.toExtendedJSON = function (options) {
|
||||
options = options || {};
|
||||
if (options.legacy) {
|
||||
return { $regex: this.pattern, $options: this.options };
|
||||
}
|
||||
return { $regularExpression: { pattern: this.pattern, options: this.options } };
|
||||
};
|
||||
/** @internal */
|
||||
BSONRegExp.fromExtendedJSON = function (doc) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
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 error_1.BSONTypeError("Unexpected BSONRegExp EJSON object form: ".concat(JSON.stringify(doc)));
|
||||
};
|
||||
return BSONRegExp;
|
||||
}());
|
||||
exports.BSONRegExp = BSONRegExp;
|
||||
Object.defineProperty(BSONRegExp.prototype, '_bsontype', { value: 'BSONRegExp' });
|
||||
//# sourceMappingURL=regexp.js.map
|
||||
Reference in New Issue
Block a user