@decaf-ts/for-postgres
Version:
template for ts projects
19 lines • 2.34 kB
JavaScript
/**
* Converts a JavaScript RegExp pattern to a PostgreSQL POSIX pattern
* @param jsRegex JavaScript RegExp object or pattern string
* @returns PostgreSQL compatible regex pattern string
*/
export function convertJsRegexToPostgres(jsRegex) {
const rxp = new RegExp(/^\/(.+)\/(\w+)$/g);
if (typeof jsRegex === "string") {
const match = rxp.exec(jsRegex);
if (match) {
const [, p, flags] = match;
jsRegex = p;
}
}
const regex = typeof jsRegex === "string" ? new RegExp(jsRegex) : jsRegex;
const pattern = regex.source;
return pattern;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxPQUF3QjtJQUMvRCxNQUFNLEdBQUcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzNDLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDaEMsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoQyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUMzQixPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFDRCxNQUFNLEtBQUssR0FBRyxPQUFPLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFFMUUsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUU3QixPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb252ZXJ0cyBhIEphdmFTY3JpcHQgUmVnRXhwIHBhdHRlcm4gdG8gYSBQb3N0Z3JlU1FMIFBPU0lYIHBhdHRlcm5cbiAqIEBwYXJhbSBqc1JlZ2V4IEphdmFTY3JpcHQgUmVnRXhwIG9iamVjdCBvciBwYXR0ZXJuIHN0cmluZ1xuICogQHJldHVybnMgUG9zdGdyZVNRTCBjb21wYXRpYmxlIHJlZ2V4IHBhdHRlcm4gc3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0SnNSZWdleFRvUG9zdGdyZXMoanNSZWdleDogUmVnRXhwIHwgc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgcnhwID0gbmV3IFJlZ0V4cCgvXlxcLyguKylcXC8oXFx3KykkL2cpO1xuICBpZiAodHlwZW9mIGpzUmVnZXggPT09IFwic3RyaW5nXCIpIHtcbiAgICBjb25zdCBtYXRjaCA9IHJ4cC5leGVjKGpzUmVnZXgpO1xuICAgIGlmIChtYXRjaCkge1xuICAgICAgY29uc3QgWywgcCwgZmxhZ3NdID0gbWF0Y2g7XG4gICAgICBqc1JlZ2V4ID0gcDtcbiAgICB9XG4gIH1cbiAgY29uc3QgcmVnZXggPSB0eXBlb2YganNSZWdleCA9PT0gXCJzdHJpbmdcIiA/IG5ldyBSZWdFeHAoanNSZWdleCkgOiBqc1JlZ2V4O1xuXG4gIGNvbnN0IHBhdHRlcm4gPSByZWdleC5zb3VyY2U7XG5cbiAgcmV0dXJuIHBhdHRlcm47XG59XG4iXX0=