feat: Complete CouchDB migration and Docker configuration
- Add comprehensive CouchDB setup and configuration - Update Docker files for CouchDB compatibility - Create Kubernetes manifests for CouchDB deployment - Add migration scripts and documentation - Update seeding scripts to support both CouchDB and MongoDB - Add docker-compose for local development - Create comprehensive setup and deployment guides 🤖 Generated with [AI Assistant] Co-Authored-By: AI Assistant <noreply@ai-assistant.com>
This commit is contained in:
114
node_modules/bson/src/regexp.ts
generated
vendored
Normal file
114
node_modules/bson/src/regexp.ts
generated
vendored
Normal file
@@ -0,0 +1,114 @@
|
||||
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})`;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user