diff --git a/src/query-builder/QueryBuilder.ts b/src/query-builder/QueryBuilder.ts index c3b340f276..799859a242 100644 --- a/src/query-builder/QueryBuilder.ts +++ b/src/query-builder/QueryBuilder.ts @@ -1,28 +1,30 @@ -import {ObjectLiteral} from "../common/ObjectLiteral"; -import {QueryRunner} from "../query-runner/QueryRunner"; -import {Connection} from "../connection/Connection"; -import {QueryExpressionMap} from "./QueryExpressionMap"; -import {SelectQueryBuilder} from "./SelectQueryBuilder"; -import {UpdateQueryBuilder} from "./UpdateQueryBuilder"; -import {DeleteQueryBuilder} from "./DeleteQueryBuilder"; -import {SoftDeleteQueryBuilder} from "./SoftDeleteQueryBuilder"; -import {InsertQueryBuilder} from "./InsertQueryBuilder"; -import {RelationQueryBuilder} from "./RelationQueryBuilder"; -import {EntityTarget} from "../common/EntityTarget"; -import {Alias} from "./Alias"; -import {Brackets} from "./Brackets"; -import {QueryDeepPartialEntity} from "./QueryPartialEntity"; -import {EntityMetadata} from "../metadata/EntityMetadata"; -import {ColumnMetadata} from "../metadata/ColumnMetadata"; -import {SqljsDriver} from "../driver/sqljs/SqljsDriver"; -import {PostgresDriver} from "../driver/postgres/PostgresDriver"; -import {CockroachDriver} from "../driver/cockroachdb/CockroachDriver"; -import {SqlServerDriver} from "../driver/sqlserver/SqlServerDriver"; -import {OracleDriver} from "../driver/oracle/OracleDriver"; -import {EntitySchema} from "../"; -import {FindOperator} from "../find-options/FindOperator"; -import {In} from "../find-options/operator/In"; -import {EntityColumnNotFound} from "../error/EntityColumnNotFound"; +import { ObjectLiteral } from "../common/ObjectLiteral" +import { QueryRunner } from "../query-runner/QueryRunner" +import { DataSource } from "../data-source/DataSource" +import { QueryBuilderCteOptions } from "./QueryBuilderCte" +import { QueryExpressionMap } from "./QueryExpressionMap" +import { SelectQueryBuilder } from "./SelectQueryBuilder" +import { UpdateQueryBuilder } from "./UpdateQueryBuilder" +import { DeleteQueryBuilder } from "./DeleteQueryBuilder" +import { SoftDeleteQueryBuilder } from "./SoftDeleteQueryBuilder" +import { InsertQueryBuilder } from "./InsertQueryBuilder" +import { RelationQueryBuilder } from "./RelationQueryBuilder" +import { EntityTarget } from "../common/EntityTarget" +import { Alias } from "./Alias" +import { Brackets } from "./Brackets" +import { QueryDeepPartialEntity } from "./QueryPartialEntity" +import { EntityMetadata } from "../metadata/EntityMetadata" +import { ColumnMetadata } from "../metadata/ColumnMetadata" +import { FindOperator } from "../find-options/FindOperator" +import { In } from "../find-options/operator/In" +import { TypeORMError } from "../error" +import { WhereClause, WhereClauseCondition } from "./WhereClause" +import { NotBrackets } from "./NotBrackets" +import { EntityPropertyNotFoundError } from "../error/EntityPropertyNotFoundError" +import { ReturningType } from "../driver/Driver" +import { OracleDriver } from "../driver/oracle/OracleDriver" +import { InstanceChecker } from "../util/InstanceChecker" +import { escapeRegExp } from "../util/escapeRegExp" // todo: completely cover query builder with tests // todo: entityOrProperty can be target name. implement proper behaviour if it is. @@ -576,10 +578,6 @@ export abstract class QueryBuilder { * Replaces all entity's propertyName to name in the given statement. */ protected replacePropertyNames(statement: string) { - // Escape special characters in regular expressions - // Per https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping - const escapeRegExp = (s: String) => s.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); - for (const alias of this.expressionMap.aliases) { if (!alias.hasMetadata) continue; const replaceAliasNamePrefix = this.expressionMap.aliasNamePrefixingEnabled ? `${alias.name}.` : ""; diff --git a/src/util/escapeRegExp.ts b/src/util/escapeRegExp.ts new file mode 100644 index 0000000000..05597f8a49 --- /dev/null +++ b/src/util/escapeRegExp.ts @@ -0,0 +1,4 @@ +// Escape special characters in regular expressions +// Per https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping +const ESCAPE_REGEXP = /[.*+\-?^${}()|[\]\\]/g +export const escapeRegExp = (s: String) => s.replace(ESCAPE_REGEXP, "\\$&")