typeorm 0.2.31 → 0.2.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1028) hide show
  1. package/README.md +45 -45
  2. package/browser/cache/QueryResultCache.js +1 -1
  3. package/browser/cache/QueryResultCacheOptions.js +1 -1
  4. package/browser/common/DeepPartial.js +1 -1
  5. package/browser/common/EntityFieldsNames.js +1 -1
  6. package/browser/common/EntityTarget.js +1 -1
  7. package/browser/common/ObjectLiteral.js +1 -1
  8. package/browser/common/ObjectType.js +1 -1
  9. package/browser/connection/BaseConnectionOptions.js +1 -1
  10. package/browser/connection/Connection.d.ts +2 -2
  11. package/browser/connection/Connection.js +4 -2
  12. package/browser/connection/Connection.js.map +1 -1
  13. package/browser/connection/ConnectionMetadataBuilder.js +5 -5
  14. package/browser/connection/ConnectionMetadataBuilder.js.map +1 -1
  15. package/browser/connection/ConnectionOptions.js +1 -1
  16. package/browser/connection/ConnectionOptionsReader.d.ts +3 -3
  17. package/browser/connection/ConnectionOptionsReader.js +3 -3
  18. package/browser/connection/options-reader/ConnectionOptionsYmlReader.js +1 -1
  19. package/browser/connection/options-reader/ConnectionOptionsYmlReader.js.map +1 -1
  20. package/browser/decorator/options/ColumnCommonOptions.js +1 -1
  21. package/browser/decorator/options/ColumnEmbeddedOptions.js +1 -1
  22. package/browser/decorator/options/ColumnEnumOptions.js +1 -1
  23. package/browser/decorator/options/ColumnHstoreOptions.js +1 -1
  24. package/browser/decorator/options/ColumnNumericOptions.js +1 -1
  25. package/browser/decorator/options/ColumnOptions.js +1 -1
  26. package/browser/decorator/options/ColumnWithLengthOptions.js +1 -1
  27. package/browser/decorator/options/ColumnWithWidthOptions.js +1 -1
  28. package/browser/decorator/options/EntityOptions.js +1 -1
  29. package/browser/decorator/options/IndexOptions.js +1 -1
  30. package/browser/decorator/options/JoinColumnOptions.js +1 -1
  31. package/browser/decorator/options/JoinTableMultipleColumnsOptions.js +1 -1
  32. package/browser/decorator/options/JoinTableOptions.js +1 -1
  33. package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.js +1 -1
  34. package/browser/decorator/options/PrimaryGeneratedColumnUUIDOptions.js +1 -1
  35. package/browser/decorator/options/RelationOptions.js +1 -1
  36. package/browser/decorator/options/SpatialColumnOptions.js +1 -1
  37. package/browser/decorator/options/TransactionOptions.js +1 -1
  38. package/browser/decorator/options/ValueTransformer.js +1 -1
  39. package/browser/decorator/options/ViewColumnOptions.js +1 -1
  40. package/browser/decorator/options/ViewEntityOptions.js +1 -1
  41. package/browser/decorator/transaction/Transaction.js +4 -4
  42. package/browser/decorator/transaction/Transaction.js.map +1 -1
  43. package/browser/driver/Driver.d.ts +1 -1
  44. package/browser/driver/Driver.js +1 -1
  45. package/browser/driver/Driver.js.map +1 -1
  46. package/browser/driver/DriverFactory.js.map +1 -1
  47. package/browser/driver/DriverUtils.d.ts +10 -0
  48. package/browser/driver/DriverUtils.js +79 -0
  49. package/browser/driver/DriverUtils.js.map +1 -1
  50. package/browser/driver/aurora-data-api/AuroraDataApiConnectionCredentialsOptions.js +1 -1
  51. package/browser/driver/aurora-data-api/AuroraDataApiConnectionOptions.d.ts +1 -0
  52. package/browser/driver/aurora-data-api/AuroraDataApiConnectionOptions.js +1 -1
  53. package/browser/driver/aurora-data-api/AuroraDataApiConnectionOptions.js.map +1 -1
  54. package/browser/driver/aurora-data-api/AuroraDataApiDriver.d.ts +4 -3
  55. package/browser/driver/aurora-data-api/AuroraDataApiDriver.js +15 -5
  56. package/browser/driver/aurora-data-api/AuroraDataApiDriver.js.map +1 -1
  57. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.d.ts +4 -0
  58. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js +15 -2
  59. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  60. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresConnectionOptions.d.ts +2 -0
  61. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresConnectionOptions.js +1 -1
  62. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresConnectionOptions.js.map +1 -1
  63. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.d.ts +10 -0
  64. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js +24 -0
  65. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js.map +1 -1
  66. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js.map +1 -1
  67. package/browser/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js +1 -1
  68. package/browser/driver/cockroachdb/CockroachConnectionCredentialsOptions.js +1 -1
  69. package/browser/driver/cockroachdb/CockroachConnectionOptions.js +1 -1
  70. package/browser/driver/cockroachdb/CockroachDriver.d.ts +1 -1
  71. package/browser/driver/cockroachdb/CockroachDriver.js +4 -7
  72. package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
  73. package/browser/driver/cockroachdb/CockroachQueryRunner.js +1 -1
  74. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  75. package/browser/driver/cordova/CordovaConnectionOptions.js +1 -1
  76. package/browser/driver/expo/ExpoConnectionOptions.js +1 -1
  77. package/browser/driver/mongodb/MongoConnectionOptions.d.ts +4 -0
  78. package/browser/driver/mongodb/MongoConnectionOptions.js +1 -1
  79. package/browser/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  80. package/browser/driver/mongodb/MongoDriver.d.ts +1 -1
  81. package/browser/driver/mongodb/MongoDriver.js +12 -5
  82. package/browser/driver/mongodb/MongoDriver.js.map +1 -1
  83. package/browser/driver/mysql/MysqlConnectionCredentialsOptions.d.ts +4 -0
  84. package/browser/driver/mysql/MysqlConnectionCredentialsOptions.js +1 -1
  85. package/browser/driver/mysql/MysqlConnectionCredentialsOptions.js.map +1 -1
  86. package/browser/driver/mysql/MysqlConnectionOptions.js +1 -1
  87. package/browser/driver/mysql/MysqlDriver.d.ts +2 -2
  88. package/browser/driver/mysql/MysqlDriver.js +12 -11
  89. package/browser/driver/mysql/MysqlDriver.js.map +1 -1
  90. package/browser/driver/mysql/MysqlQueryRunner.js +4 -4
  91. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  92. package/browser/driver/nativescript/NativescriptConnectionOptions.js +1 -1
  93. package/browser/driver/oracle/OracleConnectionCredentialsOptions.js +1 -1
  94. package/browser/driver/oracle/OracleConnectionOptions.js +1 -1
  95. package/browser/driver/oracle/OracleDriver.d.ts +1 -1
  96. package/browser/driver/oracle/OracleDriver.js +25 -3
  97. package/browser/driver/oracle/OracleDriver.js.map +1 -1
  98. package/browser/driver/oracle/OracleQueryRunner.js +1 -1
  99. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  100. package/browser/driver/postgres/PostgresConnectionCredentialsOptions.js +1 -1
  101. package/browser/driver/postgres/PostgresConnectionOptions.js +1 -1
  102. package/browser/driver/postgres/PostgresDriver.d.ts +2 -2
  103. package/browser/driver/postgres/PostgresDriver.js +54 -23
  104. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  105. package/browser/driver/postgres/PostgresQueryRunner.d.ts +1 -1
  106. package/browser/driver/postgres/PostgresQueryRunner.js +185 -155
  107. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  108. package/browser/driver/react-native/ReactNativeConnectionOptions.js +1 -1
  109. package/browser/driver/sap/SapConnectionCredentialsOptions.js +1 -1
  110. package/browser/driver/sap/SapConnectionOptions.js +1 -1
  111. package/browser/driver/sap/SapDriver.d.ts +1 -1
  112. package/browser/driver/sap/SapDriver.js.map +1 -1
  113. package/browser/driver/sap/SapQueryRunner.js +2 -2
  114. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  115. package/browser/driver/sqlite/SqliteConnectionOptions.js +1 -1
  116. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.d.ts +1 -1
  117. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +4 -1
  118. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  119. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +0 -1
  120. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  121. package/browser/driver/sqljs/SqljsConnectionOptions.js +1 -1
  122. package/browser/driver/sqlserver/SqlServerConnectionCredentialsOptions.d.ts +18 -2
  123. package/browser/driver/sqlserver/SqlServerConnectionCredentialsOptions.js +1 -1
  124. package/browser/driver/sqlserver/SqlServerConnectionCredentialsOptions.js.map +1 -1
  125. package/browser/driver/sqlserver/SqlServerConnectionOptions.js +1 -1
  126. package/browser/driver/sqlserver/SqlServerDriver.d.ts +2 -2
  127. package/browser/driver/sqlserver/SqlServerDriver.js +33 -8
  128. package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
  129. package/browser/driver/sqlserver/SqlServerQueryRunner.d.ts +1 -0
  130. package/browser/driver/sqlserver/SqlServerQueryRunner.js +26 -19
  131. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  132. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.d.ts +10 -0
  133. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js +3 -0
  134. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js.map +1 -0
  135. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.d.ts +20 -0
  136. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js +3 -0
  137. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js.map +1 -0
  138. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.d.ts +16 -0
  139. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js +3 -0
  140. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js.map +1 -0
  141. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.d.ts +17 -0
  142. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js +3 -0
  143. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js.map +1 -0
  144. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.d.ts +17 -0
  145. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.js +3 -0
  146. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.js.map +1 -0
  147. package/browser/driver/sqlserver/authentication/DefaultAuthentication.d.ts +13 -0
  148. package/browser/driver/sqlserver/authentication/DefaultAuthentication.js +3 -0
  149. package/browser/driver/sqlserver/authentication/DefaultAuthentication.js.map +1 -0
  150. package/browser/driver/sqlserver/authentication/NtlmAuthentication.d.ts +19 -0
  151. package/browser/driver/sqlserver/authentication/NtlmAuthentication.js +3 -0
  152. package/browser/driver/sqlserver/authentication/NtlmAuthentication.js.map +1 -0
  153. package/browser/driver/types/ColumnTypes.js +1 -1
  154. package/browser/driver/types/DataTypeDefaults.js +1 -1
  155. package/browser/driver/types/DatabaseType.js +1 -1
  156. package/browser/driver/types/IsolationLevel.js +1 -1
  157. package/browser/driver/types/MappedColumnTypes.js +1 -1
  158. package/browser/driver/types/ReplicationMode.js +1 -1
  159. package/browser/entity-manager/EntityManager.d.ts +16 -2
  160. package/browser/entity-manager/EntityManager.js.map +1 -1
  161. package/browser/entity-manager/MongoEntityManager.d.ts +1 -4
  162. package/browser/entity-manager/MongoEntityManager.js +39 -45
  163. package/browser/entity-manager/MongoEntityManager.js.map +1 -1
  164. package/browser/entity-schema/EntitySchemaCheckOptions.js +1 -1
  165. package/browser/entity-schema/EntitySchemaColumnOptions.js +1 -1
  166. package/browser/entity-schema/EntitySchemaExclusionOptions.js +1 -1
  167. package/browser/entity-schema/EntitySchemaIndexOptions.js +1 -1
  168. package/browser/entity-schema/EntitySchemaRelationOptions.js +1 -1
  169. package/browser/entity-schema/EntitySchemaUniqueOptions.js +1 -1
  170. package/browser/find-options/FindConditions.js +1 -1
  171. package/browser/find-options/FindManyOptions.js +1 -1
  172. package/browser/find-options/FindOneOptions.d.ts +4 -1
  173. package/browser/find-options/FindOneOptions.js +1 -1
  174. package/browser/find-options/FindOneOptions.js.map +1 -1
  175. package/browser/find-options/FindOperator.d.ts +7 -7
  176. package/browser/find-options/FindOperator.js +7 -7
  177. package/browser/find-options/FindOperatorType.js +1 -1
  178. package/browser/find-options/FindOptionsUtils.js +10 -1
  179. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  180. package/browser/find-options/JoinOptions.d.ts +16 -4
  181. package/browser/find-options/JoinOptions.js +1 -1
  182. package/browser/find-options/JoinOptions.js.map +1 -1
  183. package/browser/find-options/OrderByCondition.js +1 -1
  184. package/browser/index.js +23 -0
  185. package/browser/index.js.map +1 -1
  186. package/browser/logger/AdvancedConsoleLogger.d.ts +2 -1
  187. package/browser/logger/FileLogger.d.ts +2 -2
  188. package/browser/logger/Logger.js +1 -1
  189. package/browser/logger/LoggerOptions.js +1 -1
  190. package/browser/logger/SimpleConsoleLogger.d.ts +2 -1
  191. package/browser/metadata/ColumnMetadata.d.ts +1 -1
  192. package/browser/metadata/ColumnMetadata.js +7 -12
  193. package/browser/metadata/ColumnMetadata.js.map +1 -1
  194. package/browser/metadata/EmbeddedMetadata.js +2 -2
  195. package/browser/metadata/EmbeddedMetadata.js.map +1 -1
  196. package/browser/metadata/EntityMetadata.js +2 -2
  197. package/browser/metadata/EntityMetadata.js.map +1 -1
  198. package/browser/metadata/RelationMetadata.js +5 -5
  199. package/browser/metadata/RelationMetadata.js.map +1 -1
  200. package/browser/metadata/types/ClosureTreeOptions.js +1 -1
  201. package/browser/metadata/types/DeferrableType.js +1 -1
  202. package/browser/metadata/types/OnDeleteType.js +1 -1
  203. package/browser/metadata/types/OnUpdateType.js +1 -1
  204. package/browser/metadata/types/PropertyTypeInFunction.js +1 -1
  205. package/browser/metadata/types/RelationTypeInFunction.js +1 -1
  206. package/browser/metadata/types/RelationTypes.js +1 -1
  207. package/browser/metadata/types/TableTypes.js +1 -1
  208. package/browser/metadata/types/TreeTypes.js +1 -1
  209. package/browser/metadata-args/CheckMetadataArgs.js +1 -1
  210. package/browser/metadata-args/ColumnMetadataArgs.js +1 -1
  211. package/browser/metadata-args/DiscriminatorValueMetadataArgs.js +1 -1
  212. package/browser/metadata-args/EmbeddedMetadataArgs.js +1 -1
  213. package/browser/metadata-args/EntityListenerMetadataArgs.js +1 -1
  214. package/browser/metadata-args/EntityRepositoryMetadataArgs.js +1 -1
  215. package/browser/metadata-args/EntitySubscriberMetadataArgs.js +1 -1
  216. package/browser/metadata-args/ExclusionMetadataArgs.js +1 -1
  217. package/browser/metadata-args/GeneratedMetadataArgs.js +1 -1
  218. package/browser/metadata-args/IndexMetadataArgs.js +1 -1
  219. package/browser/metadata-args/InheritanceMetadataArgs.js +1 -1
  220. package/browser/metadata-args/JoinColumnMetadataArgs.js +1 -1
  221. package/browser/metadata-args/JoinTableMetadataArgs.js +1 -1
  222. package/browser/metadata-args/NamingStrategyMetadataArgs.js +1 -1
  223. package/browser/metadata-args/RelationCountMetadataArgs.js +1 -1
  224. package/browser/metadata-args/RelationIdMetadataArgs.js +1 -1
  225. package/browser/metadata-args/RelationMetadataArgs.js +1 -1
  226. package/browser/metadata-args/TableMetadataArgs.js +1 -1
  227. package/browser/metadata-args/TransactionEntityMetadataArgs.js +1 -1
  228. package/browser/metadata-args/TransactionRepositoryMetadataArgs.js +1 -1
  229. package/browser/metadata-args/TreeMetadataArgs.js +1 -1
  230. package/browser/metadata-args/UniqueMetadataArgs.js +1 -1
  231. package/browser/metadata-args/types/ColumnMode.js +1 -1
  232. package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js +2 -0
  233. package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
  234. package/browser/metadata-builder/EntityMetadataBuilder.js +7 -7
  235. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  236. package/browser/metadata-builder/EntityMetadataValidator.js +2 -0
  237. package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
  238. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +6 -2
  239. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  240. package/browser/metadata-builder/RelationJoinColumnBuilder.js +3 -1
  241. package/browser/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  242. package/browser/migration/MigrationExecutor.js +5 -5
  243. package/browser/migration/MigrationInterface.js +1 -1
  244. package/browser/naming-strategy/DefaultNamingStrategy.d.ts +1 -1
  245. package/browser/naming-strategy/DefaultNamingStrategy.js +9 -8
  246. package/browser/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  247. package/browser/naming-strategy/NamingStrategyInterface.d.ts +6 -1
  248. package/browser/naming-strategy/NamingStrategyInterface.js +1 -1
  249. package/browser/naming-strategy/NamingStrategyInterface.js.map +1 -1
  250. package/browser/persistence/Subject.d.ts +4 -4
  251. package/browser/persistence/Subject.js +6 -6
  252. package/browser/persistence/Subject.js.map +1 -1
  253. package/browser/persistence/SubjectChangeMap.js +1 -1
  254. package/browser/persistence/SubjectChangedColumnsComputer.js +3 -1
  255. package/browser/persistence/SubjectChangedColumnsComputer.js.map +1 -1
  256. package/browser/persistence/SubjectDatabaseEntityLoader.js +2 -2
  257. package/browser/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  258. package/browser/persistence/SubjectExecutor.js +21 -21
  259. package/browser/persistence/SubjectTopoligicalSorter.js +6 -6
  260. package/browser/persistence/SubjectTopoligicalSorter.js.map +1 -1
  261. package/browser/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  262. package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js +2 -0
  263. package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  264. package/browser/persistence/tree/ClosureSubjectExecutor.js +2 -2
  265. package/browser/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  266. package/browser/query-builder/Alias.d.ts +4 -3
  267. package/browser/query-builder/Alias.js +3 -3
  268. package/browser/query-builder/DeleteQueryBuilder.js +5 -1
  269. package/browser/query-builder/DeleteQueryBuilder.js.map +1 -1
  270. package/browser/query-builder/InsertQueryBuilder.js +1 -1
  271. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  272. package/browser/query-builder/JoinAttribute.d.ts +10 -10
  273. package/browser/query-builder/JoinAttribute.js +10 -10
  274. package/browser/query-builder/JoinOptions.js +1 -1
  275. package/browser/query-builder/QueryBuilder.d.ts +1 -1
  276. package/browser/query-builder/QueryBuilder.js +25 -25
  277. package/browser/query-builder/QueryBuilder.js.map +1 -1
  278. package/browser/query-builder/QueryBuilderUtils.js.map +1 -1
  279. package/browser/query-builder/QueryExpressionMap.d.ts +6 -2
  280. package/browser/query-builder/QueryExpressionMap.js +3 -2
  281. package/browser/query-builder/QueryExpressionMap.js.map +1 -1
  282. package/browser/query-builder/QueryPartialEntity.js +1 -1
  283. package/browser/query-builder/RelationLoader.js +3 -3
  284. package/browser/query-builder/RelationLoader.js.map +1 -1
  285. package/browser/query-builder/RelationQueryBuilder.js +1 -1
  286. package/browser/query-builder/RelationQueryBuilder.js.map +1 -1
  287. package/browser/query-builder/RelationRemover.js +11 -11
  288. package/browser/query-builder/RelationRemover.js.map +1 -1
  289. package/browser/query-builder/SelectQuery.js +1 -1
  290. package/browser/query-builder/SelectQueryBuilder.d.ts +2 -6
  291. package/browser/query-builder/SelectQueryBuilder.js +35 -15
  292. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  293. package/browser/query-builder/SelectQueryBuilderOption.js +1 -1
  294. package/browser/query-builder/UpdateQueryBuilder.js +4 -0
  295. package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
  296. package/browser/query-builder/WhereExpression.js +1 -1
  297. package/browser/query-builder/relation-count/RelationCountAttribute.d.ts +7 -7
  298. package/browser/query-builder/relation-count/RelationCountAttribute.js +7 -7
  299. package/browser/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
  300. package/browser/query-builder/relation-count/RelationCountLoadResult.js +1 -1
  301. package/browser/query-builder/relation-count/RelationCountLoader.js +2 -1
  302. package/browser/query-builder/relation-count/RelationCountLoader.js.map +1 -1
  303. package/browser/query-builder/relation-id/RelationIdAttribute.d.ts +8 -8
  304. package/browser/query-builder/relation-id/RelationIdAttribute.js +8 -8
  305. package/browser/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
  306. package/browser/query-builder/relation-id/RelationIdLoadResult.js +1 -1
  307. package/browser/query-builder/relation-id/RelationIdLoader.js +62 -12
  308. package/browser/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  309. package/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js +3 -3
  310. package/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
  311. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js +4 -4
  312. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  313. package/browser/query-runner/BaseQueryRunner.js +3 -3
  314. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  315. package/browser/query-runner/QueryRunner.js +1 -1
  316. package/browser/repository/AbstractRepository.d.ts +2 -2
  317. package/browser/repository/AbstractRepository.js +2 -2
  318. package/browser/repository/BaseEntity.d.ts +1 -1
  319. package/browser/repository/BaseEntity.js +3 -3
  320. package/browser/repository/BaseEntity.js.map +1 -1
  321. package/browser/repository/EntityId.js +1 -1
  322. package/browser/repository/RemoveOptions.js +1 -1
  323. package/browser/repository/Repository.d.ts +1 -1
  324. package/browser/repository/Repository.js +3 -3
  325. package/browser/repository/Repository.js.map +1 -1
  326. package/browser/repository/SaveOptions.js +1 -1
  327. package/browser/repository/TreeRepository.js +2 -2
  328. package/browser/repository/TreeRepository.js.map +1 -1
  329. package/browser/schema-builder/RdbmsSchemaBuilder.d.ts +2 -2
  330. package/browser/schema-builder/RdbmsSchemaBuilder.js +78 -78
  331. package/browser/schema-builder/SchemaBuilder.js +1 -1
  332. package/browser/schema-builder/options/TableCheckOptions.js +1 -1
  333. package/browser/schema-builder/options/TableColumnOptions.js +1 -1
  334. package/browser/schema-builder/options/TableExclusionOptions.js +1 -1
  335. package/browser/schema-builder/options/TableForeignKeyOptions.js +1 -1
  336. package/browser/schema-builder/options/TableIndexOptions.js +1 -1
  337. package/browser/schema-builder/options/TableOptions.js +1 -1
  338. package/browser/schema-builder/options/TableUniqueOptions.js +1 -1
  339. package/browser/schema-builder/options/ViewOptions.js +1 -1
  340. package/browser/schema-builder/table/Table.d.ts +1 -1
  341. package/browser/schema-builder/table/Table.js +1 -1
  342. package/browser/schema-builder/table/TableCheck.js +2 -2
  343. package/browser/schema-builder/table/TableCheck.js.map +1 -1
  344. package/browser/schema-builder/table/TableForeignKey.js +3 -3
  345. package/browser/schema-builder/table/TableForeignKey.js.map +1 -1
  346. package/browser/schema-builder/table/TableIndex.js +2 -2
  347. package/browser/schema-builder/table/TableIndex.js.map +1 -1
  348. package/browser/schema-builder/table/TableUnique.js +2 -2
  349. package/browser/schema-builder/table/TableUnique.js.map +1 -1
  350. package/browser/subscriber/EntitySubscriberInterface.js +1 -1
  351. package/browser/subscriber/event/InsertEvent.js +1 -1
  352. package/browser/subscriber/event/LoadEvent.js +1 -1
  353. package/browser/subscriber/event/RemoveEvent.js +1 -1
  354. package/browser/subscriber/event/TransactionCommitEvent.js +1 -1
  355. package/browser/subscriber/event/TransactionRollbackEvent.js +1 -1
  356. package/browser/subscriber/event/TransactionStartEvent.js +1 -1
  357. package/browser/subscriber/event/UpdateEvent.js +1 -1
  358. package/browser/util/DateUtils.js.map +1 -1
  359. package/browser/util/OrmUtils.d.ts +1 -1
  360. package/browser/util/OrmUtils.js +2 -2
  361. package/browser/util/OrmUtils.js.map +1 -1
  362. package/browser/util/StringUtils.js.map +1 -1
  363. package/cache/DbQueryResultCache.js +1 -0
  364. package/cache/DbQueryResultCache.js.map +1 -1
  365. package/cache/QueryResultCacheFactory.js +1 -0
  366. package/cache/QueryResultCacheFactory.js.map +1 -1
  367. package/cache/RedisQueryResultCache.js +1 -0
  368. package/cache/RedisQueryResultCache.js.map +1 -1
  369. package/commands/CacheClearCommand.js +1 -0
  370. package/commands/CacheClearCommand.js.map +1 -1
  371. package/commands/CommandUtils.js +1 -0
  372. package/commands/CommandUtils.js.map +1 -1
  373. package/commands/EntityCreateCommand.js +1 -0
  374. package/commands/EntityCreateCommand.js.map +1 -1
  375. package/commands/InitCommand.d.ts +3 -0
  376. package/commands/InitCommand.js +36 -5
  377. package/commands/InitCommand.js.map +1 -1
  378. package/commands/MigrationCreateCommand.js +1 -0
  379. package/commands/MigrationCreateCommand.js.map +1 -1
  380. package/commands/MigrationGenerateCommand.d.ts +4 -0
  381. package/commands/MigrationGenerateCommand.js +39 -15
  382. package/commands/MigrationGenerateCommand.js.map +1 -1
  383. package/commands/MigrationRevertCommand.js +1 -0
  384. package/commands/MigrationRevertCommand.js.map +1 -1
  385. package/commands/MigrationRunCommand.js +1 -0
  386. package/commands/MigrationRunCommand.js.map +1 -1
  387. package/commands/MigrationShowCommand.js +1 -0
  388. package/commands/MigrationShowCommand.js.map +1 -1
  389. package/commands/QueryCommand.js +1 -0
  390. package/commands/QueryCommand.js.map +1 -1
  391. package/commands/SchemaDropCommand.js +1 -0
  392. package/commands/SchemaDropCommand.js.map +1 -1
  393. package/commands/SchemaLogCommand.js +1 -0
  394. package/commands/SchemaLogCommand.js.map +1 -1
  395. package/commands/SchemaSyncCommand.js +1 -0
  396. package/commands/SchemaSyncCommand.js.map +1 -1
  397. package/commands/SubscriberCreateCommand.js +1 -0
  398. package/commands/SubscriberCreateCommand.js.map +1 -1
  399. package/commands/VersionCommand.js +1 -0
  400. package/commands/VersionCommand.js.map +1 -1
  401. package/connection/Connection.d.ts +2 -2
  402. package/connection/Connection.js +5 -2
  403. package/connection/Connection.js.map +1 -1
  404. package/connection/ConnectionManager.js +1 -0
  405. package/connection/ConnectionManager.js.map +1 -1
  406. package/connection/ConnectionMetadataBuilder.js +5 -4
  407. package/connection/ConnectionMetadataBuilder.js.map +1 -1
  408. package/connection/ConnectionOptionsReader.d.ts +3 -3
  409. package/connection/ConnectionOptionsReader.js +4 -3
  410. package/connection/ConnectionOptionsReader.js.map +1 -1
  411. package/connection/options-reader/ConnectionOptionsEnvReader.js +1 -0
  412. package/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
  413. package/connection/options-reader/ConnectionOptionsXmlReader.js +1 -0
  414. package/connection/options-reader/ConnectionOptionsXmlReader.js.map +1 -1
  415. package/connection/options-reader/ConnectionOptionsYmlReader.js +2 -1
  416. package/connection/options-reader/ConnectionOptionsYmlReader.js.map +1 -1
  417. package/container.js +1 -0
  418. package/container.js.map +1 -1
  419. package/decorator/Check.js +1 -0
  420. package/decorator/Check.js.map +1 -1
  421. package/decorator/EntityRepository.js +1 -0
  422. package/decorator/EntityRepository.js.map +1 -1
  423. package/decorator/Exclusion.js +1 -0
  424. package/decorator/Exclusion.js.map +1 -1
  425. package/decorator/Generated.js +1 -0
  426. package/decorator/Generated.js.map +1 -1
  427. package/decorator/Index.js +1 -0
  428. package/decorator/Index.js.map +1 -1
  429. package/decorator/Unique.js +1 -0
  430. package/decorator/Unique.js.map +1 -1
  431. package/decorator/columns/Column.js +1 -0
  432. package/decorator/columns/Column.js.map +1 -1
  433. package/decorator/columns/CreateDateColumn.js +1 -0
  434. package/decorator/columns/CreateDateColumn.js.map +1 -1
  435. package/decorator/columns/DeleteDateColumn.js +1 -0
  436. package/decorator/columns/DeleteDateColumn.js.map +1 -1
  437. package/decorator/columns/ObjectIdColumn.js +1 -0
  438. package/decorator/columns/ObjectIdColumn.js.map +1 -1
  439. package/decorator/columns/PrimaryColumn.js +1 -0
  440. package/decorator/columns/PrimaryColumn.js.map +1 -1
  441. package/decorator/columns/PrimaryGeneratedColumn.js +1 -0
  442. package/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
  443. package/decorator/columns/UpdateDateColumn.js +1 -0
  444. package/decorator/columns/UpdateDateColumn.js.map +1 -1
  445. package/decorator/columns/VersionColumn.js +1 -0
  446. package/decorator/columns/VersionColumn.js.map +1 -1
  447. package/decorator/columns/ViewColumn.js +1 -0
  448. package/decorator/columns/ViewColumn.js.map +1 -1
  449. package/decorator/entity/ChildEntity.js +1 -0
  450. package/decorator/entity/ChildEntity.js.map +1 -1
  451. package/decorator/entity/Entity.js +1 -0
  452. package/decorator/entity/Entity.js.map +1 -1
  453. package/decorator/entity/TableInheritance.js +1 -0
  454. package/decorator/entity/TableInheritance.js.map +1 -1
  455. package/decorator/entity-view/ViewEntity.js +1 -0
  456. package/decorator/entity-view/ViewEntity.js.map +1 -1
  457. package/decorator/listeners/AfterInsert.js +1 -0
  458. package/decorator/listeners/AfterInsert.js.map +1 -1
  459. package/decorator/listeners/AfterLoad.js +1 -0
  460. package/decorator/listeners/AfterLoad.js.map +1 -1
  461. package/decorator/listeners/AfterRemove.js +1 -0
  462. package/decorator/listeners/AfterRemove.js.map +1 -1
  463. package/decorator/listeners/AfterUpdate.js +1 -0
  464. package/decorator/listeners/AfterUpdate.js.map +1 -1
  465. package/decorator/listeners/BeforeInsert.js +1 -0
  466. package/decorator/listeners/BeforeInsert.js.map +1 -1
  467. package/decorator/listeners/BeforeRemove.js +1 -0
  468. package/decorator/listeners/BeforeRemove.js.map +1 -1
  469. package/decorator/listeners/BeforeUpdate.js +1 -0
  470. package/decorator/listeners/BeforeUpdate.js.map +1 -1
  471. package/decorator/listeners/EventSubscriber.js +1 -0
  472. package/decorator/listeners/EventSubscriber.js.map +1 -1
  473. package/decorator/relations/JoinColumn.js +1 -0
  474. package/decorator/relations/JoinColumn.js.map +1 -1
  475. package/decorator/relations/JoinTable.js +1 -0
  476. package/decorator/relations/JoinTable.js.map +1 -1
  477. package/decorator/relations/ManyToMany.js +1 -0
  478. package/decorator/relations/ManyToMany.js.map +1 -1
  479. package/decorator/relations/ManyToOne.js +1 -0
  480. package/decorator/relations/ManyToOne.js.map +1 -1
  481. package/decorator/relations/OneToMany.js +1 -0
  482. package/decorator/relations/OneToMany.js.map +1 -1
  483. package/decorator/relations/OneToOne.js +1 -0
  484. package/decorator/relations/OneToOne.js.map +1 -1
  485. package/decorator/relations/RelationCount.js +1 -0
  486. package/decorator/relations/RelationCount.js.map +1 -1
  487. package/decorator/relations/RelationId.js +1 -0
  488. package/decorator/relations/RelationId.js.map +1 -1
  489. package/decorator/transaction/Transaction.js +4 -3
  490. package/decorator/transaction/Transaction.js.map +1 -1
  491. package/decorator/transaction/TransactionManager.js +1 -0
  492. package/decorator/transaction/TransactionManager.js.map +1 -1
  493. package/decorator/transaction/TransactionRepository.js +1 -0
  494. package/decorator/transaction/TransactionRepository.js.map +1 -1
  495. package/decorator/tree/Tree.js +1 -0
  496. package/decorator/tree/Tree.js.map +1 -1
  497. package/decorator/tree/TreeChildren.js +1 -0
  498. package/decorator/tree/TreeChildren.js.map +1 -1
  499. package/decorator/tree/TreeLevelColumn.js +1 -0
  500. package/decorator/tree/TreeLevelColumn.js.map +1 -1
  501. package/decorator/tree/TreeParent.js +1 -0
  502. package/decorator/tree/TreeParent.js.map +1 -1
  503. package/driver/Driver.d.ts +1 -1
  504. package/driver/Driver.js.map +1 -1
  505. package/driver/DriverFactory.js +1 -0
  506. package/driver/DriverFactory.js.map +1 -1
  507. package/driver/DriverUtils.d.ts +10 -0
  508. package/driver/DriverUtils.js +80 -0
  509. package/driver/DriverUtils.js.map +1 -1
  510. package/driver/Query.js +1 -0
  511. package/driver/Query.js.map +1 -1
  512. package/driver/SqlInMemory.js +1 -0
  513. package/driver/SqlInMemory.js.map +1 -1
  514. package/driver/aurora-data-api/AuroraDataApiConnection.js +1 -0
  515. package/driver/aurora-data-api/AuroraDataApiConnection.js.map +1 -1
  516. package/driver/aurora-data-api/AuroraDataApiConnectionOptions.d.ts +1 -0
  517. package/driver/aurora-data-api/AuroraDataApiConnectionOptions.js.map +1 -1
  518. package/driver/aurora-data-api/AuroraDataApiDriver.d.ts +4 -3
  519. package/driver/aurora-data-api/AuroraDataApiDriver.js +16 -5
  520. package/driver/aurora-data-api/AuroraDataApiDriver.js.map +1 -1
  521. package/driver/aurora-data-api/AuroraDataApiQueryRunner.d.ts +4 -0
  522. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js +16 -2
  523. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  524. package/driver/aurora-data-api-pg/AuroraDataApiPostgresConnectionOptions.d.ts +2 -0
  525. package/driver/aurora-data-api-pg/AuroraDataApiPostgresConnectionOptions.js.map +1 -1
  526. package/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.d.ts +10 -0
  527. package/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js +25 -0
  528. package/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js.map +1 -1
  529. package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js +1 -0
  530. package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js.map +1 -1
  531. package/driver/better-sqlite3/BetterSqlite3Driver.js +1 -0
  532. package/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  533. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js +1 -0
  534. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  535. package/driver/cockroachdb/CockroachDriver.d.ts +1 -1
  536. package/driver/cockroachdb/CockroachDriver.js +4 -6
  537. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  538. package/driver/cockroachdb/CockroachQueryRunner.js +2 -1
  539. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  540. package/driver/cordova/CordovaDriver.js +1 -0
  541. package/driver/cordova/CordovaDriver.js.map +1 -1
  542. package/driver/cordova/CordovaQueryRunner.js +1 -0
  543. package/driver/cordova/CordovaQueryRunner.js.map +1 -1
  544. package/driver/expo/ExpoDriver.js +1 -0
  545. package/driver/expo/ExpoDriver.js.map +1 -1
  546. package/driver/expo/ExpoQueryRunner.js +1 -0
  547. package/driver/expo/ExpoQueryRunner.js.map +1 -1
  548. package/driver/mongodb/MongoConnectionOptions.d.ts +4 -0
  549. package/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  550. package/driver/mongodb/MongoDriver.d.ts +1 -1
  551. package/driver/mongodb/MongoDriver.js +13 -5
  552. package/driver/mongodb/MongoDriver.js.map +1 -1
  553. package/driver/mongodb/MongoQueryRunner.js +1 -0
  554. package/driver/mongodb/MongoQueryRunner.js.map +1 -1
  555. package/driver/mysql/MysqlConnectionCredentialsOptions.d.ts +4 -0
  556. package/driver/mysql/MysqlConnectionCredentialsOptions.js.map +1 -1
  557. package/driver/mysql/MysqlDriver.d.ts +2 -2
  558. package/driver/mysql/MysqlDriver.js +13 -11
  559. package/driver/mysql/MysqlDriver.js.map +1 -1
  560. package/driver/mysql/MysqlQueryRunner.js +5 -4
  561. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  562. package/driver/nativescript/NativescriptDriver.js +1 -0
  563. package/driver/nativescript/NativescriptDriver.js.map +1 -1
  564. package/driver/nativescript/NativescriptQueryRunner.js +1 -0
  565. package/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  566. package/driver/oracle/OracleDriver.d.ts +1 -1
  567. package/driver/oracle/OracleDriver.js +26 -3
  568. package/driver/oracle/OracleDriver.js.map +1 -1
  569. package/driver/oracle/OracleQueryRunner.js +2 -1
  570. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  571. package/driver/postgres/PostgresDriver.d.ts +2 -2
  572. package/driver/postgres/PostgresDriver.js +54 -22
  573. package/driver/postgres/PostgresDriver.js.map +1 -1
  574. package/driver/postgres/PostgresQueryRunner.d.ts +1 -1
  575. package/driver/postgres/PostgresQueryRunner.js +186 -155
  576. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  577. package/driver/react-native/ReactNativeDriver.js +1 -0
  578. package/driver/react-native/ReactNativeDriver.js.map +1 -1
  579. package/driver/react-native/ReactNativeQueryRunner.js +1 -0
  580. package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  581. package/driver/sap/SapDriver.d.ts +1 -1
  582. package/driver/sap/SapDriver.js +1 -0
  583. package/driver/sap/SapDriver.js.map +1 -1
  584. package/driver/sap/SapQueryRunner.js +2 -1
  585. package/driver/sap/SapQueryRunner.js.map +1 -1
  586. package/driver/sqlite/SqliteDriver.js +1 -0
  587. package/driver/sqlite/SqliteDriver.js.map +1 -1
  588. package/driver/sqlite/SqliteQueryRunner.js +1 -0
  589. package/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  590. package/driver/sqlite-abstract/AbstractSqliteDriver.d.ts +1 -1
  591. package/driver/sqlite-abstract/AbstractSqliteDriver.js +5 -1
  592. package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  593. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +1 -1
  594. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  595. package/driver/sqljs/SqljsDriver.js +1 -0
  596. package/driver/sqljs/SqljsDriver.js.map +1 -1
  597. package/driver/sqljs/SqljsQueryRunner.js +1 -0
  598. package/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  599. package/driver/sqlserver/MssqlParameter.js +1 -0
  600. package/driver/sqlserver/MssqlParameter.js.map +1 -1
  601. package/driver/sqlserver/SqlServerConnectionCredentialsOptions.d.ts +18 -2
  602. package/driver/sqlserver/SqlServerConnectionCredentialsOptions.js.map +1 -1
  603. package/driver/sqlserver/SqlServerDriver.d.ts +2 -2
  604. package/driver/sqlserver/SqlServerDriver.js +34 -8
  605. package/driver/sqlserver/SqlServerDriver.js.map +1 -1
  606. package/driver/sqlserver/SqlServerQueryRunner.d.ts +1 -0
  607. package/driver/sqlserver/SqlServerQueryRunner.js +26 -18
  608. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  609. package/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.d.ts +10 -0
  610. package/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js +4 -0
  611. package/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js.map +1 -0
  612. package/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.d.ts +20 -0
  613. package/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js +4 -0
  614. package/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js.map +1 -0
  615. package/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.d.ts +16 -0
  616. package/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js +4 -0
  617. package/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js.map +1 -0
  618. package/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.d.ts +17 -0
  619. package/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js +4 -0
  620. package/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js.map +1 -0
  621. package/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.d.ts +17 -0
  622. package/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.js +4 -0
  623. package/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.js.map +1 -0
  624. package/driver/sqlserver/authentication/DefaultAuthentication.d.ts +13 -0
  625. package/driver/sqlserver/authentication/DefaultAuthentication.js +4 -0
  626. package/driver/sqlserver/authentication/DefaultAuthentication.js.map +1 -0
  627. package/driver/sqlserver/authentication/NtlmAuthentication.d.ts +19 -0
  628. package/driver/sqlserver/authentication/NtlmAuthentication.js +4 -0
  629. package/driver/sqlserver/authentication/NtlmAuthentication.js.map +1 -0
  630. package/entity-manager/EntityManager.d.ts +16 -2
  631. package/entity-manager/EntityManager.js +1 -0
  632. package/entity-manager/EntityManager.js.map +1 -1
  633. package/entity-manager/EntityManagerFactory.js +1 -0
  634. package/entity-manager/EntityManagerFactory.js.map +1 -1
  635. package/entity-manager/MongoEntityManager.d.ts +1 -4
  636. package/entity-manager/MongoEntityManager.js +40 -45
  637. package/entity-manager/MongoEntityManager.js.map +1 -1
  638. package/entity-manager/SqljsEntityManager.js +1 -0
  639. package/entity-manager/SqljsEntityManager.js.map +1 -1
  640. package/entity-schema/EntitySchema.js +1 -0
  641. package/entity-schema/EntitySchema.js.map +1 -1
  642. package/entity-schema/EntitySchemaOptions.js +1 -0
  643. package/entity-schema/EntitySchemaOptions.js.map +1 -1
  644. package/entity-schema/EntitySchemaTransformer.js +1 -0
  645. package/entity-schema/EntitySchemaTransformer.js.map +1 -1
  646. package/error/AlreadyHasActiveConnectionError.js +1 -0
  647. package/error/AlreadyHasActiveConnectionError.js.map +1 -1
  648. package/error/CannotAttachTreeChildrenEntityError.js +1 -0
  649. package/error/CannotAttachTreeChildrenEntityError.js.map +1 -1
  650. package/error/CannotConnectAlreadyConnectedError.js +1 -0
  651. package/error/CannotConnectAlreadyConnectedError.js.map +1 -1
  652. package/error/CannotCreateEntityIdMapError.js +1 -0
  653. package/error/CannotCreateEntityIdMapError.js.map +1 -1
  654. package/error/CannotDetermineEntityError.js +1 -0
  655. package/error/CannotDetermineEntityError.js.map +1 -1
  656. package/error/CannotExecuteNotConnectedError.js +1 -0
  657. package/error/CannotExecuteNotConnectedError.js.map +1 -1
  658. package/error/CannotGetEntityManagerNotConnectedError.js +1 -0
  659. package/error/CannotGetEntityManagerNotConnectedError.js.map +1 -1
  660. package/error/CannotReflectMethodParameterTypeError.js +1 -0
  661. package/error/CannotReflectMethodParameterTypeError.js.map +1 -1
  662. package/error/CircularRelationsError.js +1 -0
  663. package/error/CircularRelationsError.js.map +1 -1
  664. package/error/ColumnTypeUndefinedError.js +1 -0
  665. package/error/ColumnTypeUndefinedError.js.map +1 -1
  666. package/error/ConnectionIsNotSetError.js +1 -0
  667. package/error/ConnectionIsNotSetError.js.map +1 -1
  668. package/error/ConnectionNotFoundError.js +1 -0
  669. package/error/ConnectionNotFoundError.js.map +1 -1
  670. package/error/CustomRepositoryCannotInheritRepositoryError.js +1 -0
  671. package/error/CustomRepositoryCannotInheritRepositoryError.js.map +1 -1
  672. package/error/CustomRepositoryDoesNotHaveEntityError.js +1 -0
  673. package/error/CustomRepositoryDoesNotHaveEntityError.js.map +1 -1
  674. package/error/CustomRepositoryNotFoundError.js +1 -0
  675. package/error/CustomRepositoryNotFoundError.js.map +1 -1
  676. package/error/DataTypeNotSupportedError.js +1 -0
  677. package/error/DataTypeNotSupportedError.js.map +1 -1
  678. package/error/DriverOptionNotSetError.js +1 -0
  679. package/error/DriverOptionNotSetError.js.map +1 -1
  680. package/error/DriverPackageNotInstalledError.js +1 -0
  681. package/error/DriverPackageNotInstalledError.js.map +1 -1
  682. package/error/EntityColumnNotFound.js +1 -0
  683. package/error/EntityColumnNotFound.js.map +1 -1
  684. package/error/EntityMetadataNotFoundError.js +1 -0
  685. package/error/EntityMetadataNotFoundError.js.map +1 -1
  686. package/error/EntityNotFoundError.js +1 -0
  687. package/error/EntityNotFoundError.js.map +1 -1
  688. package/error/FindRelationsNotFoundError.js +1 -0
  689. package/error/FindRelationsNotFoundError.js.map +1 -1
  690. package/error/InitializedRelationError.js +1 -0
  691. package/error/InitializedRelationError.js.map +1 -1
  692. package/error/InsertValuesMissingError.js +1 -0
  693. package/error/InsertValuesMissingError.js.map +1 -1
  694. package/error/LimitOnUpdateNotSupportedError.js +1 -0
  695. package/error/LimitOnUpdateNotSupportedError.js.map +1 -1
  696. package/error/LockNotSupportedOnGivenDriverError.js +1 -0
  697. package/error/LockNotSupportedOnGivenDriverError.js.map +1 -1
  698. package/error/MetadataAlreadyExistsError.js +1 -0
  699. package/error/MetadataAlreadyExistsError.js.map +1 -1
  700. package/error/MetadataWithSuchNameAlreadyExistsError.js +1 -0
  701. package/error/MetadataWithSuchNameAlreadyExistsError.js.map +1 -1
  702. package/error/MissingDeleteDateColumnError.js +1 -0
  703. package/error/MissingDeleteDateColumnError.js.map +1 -1
  704. package/error/MissingDriverError.js +1 -0
  705. package/error/MissingDriverError.js.map +1 -1
  706. package/error/MissingJoinColumnError.js +1 -0
  707. package/error/MissingJoinColumnError.js.map +1 -1
  708. package/error/MissingJoinTableError.js +1 -0
  709. package/error/MissingJoinTableError.js.map +1 -1
  710. package/error/MissingPrimaryColumnError.js +1 -0
  711. package/error/MissingPrimaryColumnError.js.map +1 -1
  712. package/error/MustBeEntityError.js +1 -0
  713. package/error/MustBeEntityError.js.map +1 -1
  714. package/error/NamingStrategyNotFoundError.js +1 -0
  715. package/error/NamingStrategyNotFoundError.js.map +1 -1
  716. package/error/NoConnectionForRepositoryError.js +1 -0
  717. package/error/NoConnectionForRepositoryError.js.map +1 -1
  718. package/error/NoConnectionOptionError.js +1 -0
  719. package/error/NoConnectionOptionError.js.map +1 -1
  720. package/error/NoNeedToReleaseEntityManagerError.js +1 -0
  721. package/error/NoNeedToReleaseEntityManagerError.js.map +1 -1
  722. package/error/NoVersionOrUpdateDateColumnError.js +1 -0
  723. package/error/NoVersionOrUpdateDateColumnError.js.map +1 -1
  724. package/error/OffsetWithoutLimitNotSupportedError.js +1 -0
  725. package/error/OffsetWithoutLimitNotSupportedError.js.map +1 -1
  726. package/error/OptimisticLockCanNotBeUsedError.js +1 -0
  727. package/error/OptimisticLockCanNotBeUsedError.js.map +1 -1
  728. package/error/OptimisticLockVersionMismatchError.js +1 -0
  729. package/error/OptimisticLockVersionMismatchError.js.map +1 -1
  730. package/error/PersistedEntityNotFoundError.js +1 -0
  731. package/error/PersistedEntityNotFoundError.js.map +1 -1
  732. package/error/PessimisticLockTransactionRequiredError.js +1 -0
  733. package/error/PessimisticLockTransactionRequiredError.js.map +1 -1
  734. package/error/PrimaryColumnCannotBeNullableError.js +1 -0
  735. package/error/PrimaryColumnCannotBeNullableError.js.map +1 -1
  736. package/error/QueryFailedError.js +1 -0
  737. package/error/QueryFailedError.js.map +1 -1
  738. package/error/QueryRunnerAlreadyReleasedError.js +1 -0
  739. package/error/QueryRunnerAlreadyReleasedError.js.map +1 -1
  740. package/error/QueryRunnerProviderAlreadyReleasedError.js +1 -0
  741. package/error/QueryRunnerProviderAlreadyReleasedError.js.map +1 -1
  742. package/error/RepositoryNotFoundError.js +1 -0
  743. package/error/RepositoryNotFoundError.js.map +1 -1
  744. package/error/RepositoryNotTreeError.js +1 -0
  745. package/error/RepositoryNotTreeError.js.map +1 -1
  746. package/error/ReturningStatementNotSupportedError.js +1 -0
  747. package/error/ReturningStatementNotSupportedError.js.map +1 -1
  748. package/error/SubjectRemovedAndUpdatedError.js +1 -0
  749. package/error/SubjectRemovedAndUpdatedError.js.map +1 -1
  750. package/error/SubjectWithoutIdentifierError.js +1 -0
  751. package/error/SubjectWithoutIdentifierError.js.map +1 -1
  752. package/error/TransactionAlreadyStartedError.js +1 -0
  753. package/error/TransactionAlreadyStartedError.js.map +1 -1
  754. package/error/TransactionNotStartedError.js +1 -0
  755. package/error/TransactionNotStartedError.js.map +1 -1
  756. package/error/TreeRepositoryNotSupportedError.js +1 -0
  757. package/error/TreeRepositoryNotSupportedError.js.map +1 -1
  758. package/error/UpdateValuesMissingError.js +1 -0
  759. package/error/UpdateValuesMissingError.js.map +1 -1
  760. package/error/UsingJoinColumnIsNotAllowedError.js +1 -0
  761. package/error/UsingJoinColumnIsNotAllowedError.js.map +1 -1
  762. package/error/UsingJoinColumnOnlyOnOneSideAllowedError.js +1 -0
  763. package/error/UsingJoinColumnOnlyOnOneSideAllowedError.js.map +1 -1
  764. package/error/UsingJoinTableIsNotAllowedError.js +1 -0
  765. package/error/UsingJoinTableIsNotAllowedError.js.map +1 -1
  766. package/error/UsingJoinTableOnlyOnOneSideAllowedError.js +1 -0
  767. package/error/UsingJoinTableOnlyOnOneSideAllowedError.js.map +1 -1
  768. package/find-options/FindOneOptions.d.ts +4 -1
  769. package/find-options/FindOneOptions.js.map +1 -1
  770. package/find-options/FindOperator.d.ts +7 -7
  771. package/find-options/FindOperator.js +8 -7
  772. package/find-options/FindOperator.js.map +1 -1
  773. package/find-options/FindOptionsUtils.js +11 -1
  774. package/find-options/FindOptionsUtils.js.map +1 -1
  775. package/find-options/JoinOptions.d.ts +16 -4
  776. package/find-options/JoinOptions.js.map +1 -1
  777. package/find-options/operator/Any.js +1 -0
  778. package/find-options/operator/Any.js.map +1 -1
  779. package/find-options/operator/Between.js +1 -0
  780. package/find-options/operator/Between.js.map +1 -1
  781. package/find-options/operator/Equal.js +1 -0
  782. package/find-options/operator/Equal.js.map +1 -1
  783. package/find-options/operator/ILike.js +1 -0
  784. package/find-options/operator/ILike.js.map +1 -1
  785. package/find-options/operator/In.js +1 -0
  786. package/find-options/operator/In.js.map +1 -1
  787. package/find-options/operator/IsNull.js +1 -0
  788. package/find-options/operator/IsNull.js.map +1 -1
  789. package/find-options/operator/LessThan.js +1 -0
  790. package/find-options/operator/LessThan.js.map +1 -1
  791. package/find-options/operator/LessThanOrEqual.js +1 -0
  792. package/find-options/operator/LessThanOrEqual.js.map +1 -1
  793. package/find-options/operator/Like.js +1 -0
  794. package/find-options/operator/Like.js.map +1 -1
  795. package/find-options/operator/MoreThan.js +1 -0
  796. package/find-options/operator/MoreThan.js.map +1 -1
  797. package/find-options/operator/MoreThanOrEqual.js +1 -0
  798. package/find-options/operator/MoreThanOrEqual.js.map +1 -1
  799. package/find-options/operator/Not.js +1 -0
  800. package/find-options/operator/Not.js.map +1 -1
  801. package/find-options/operator/Raw.js +1 -0
  802. package/find-options/operator/Raw.js.map +1 -1
  803. package/index.js +42 -18
  804. package/index.js.map +1 -1
  805. package/logger/AdvancedConsoleLogger.d.ts +2 -1
  806. package/logger/AdvancedConsoleLogger.js +1 -0
  807. package/logger/AdvancedConsoleLogger.js.map +1 -1
  808. package/logger/DebugLogger.js +1 -0
  809. package/logger/DebugLogger.js.map +1 -1
  810. package/logger/FileLogger.d.ts +2 -2
  811. package/logger/FileLogger.js +1 -0
  812. package/logger/FileLogger.js.map +1 -1
  813. package/logger/LoggerFactory.js +1 -0
  814. package/logger/LoggerFactory.js.map +1 -1
  815. package/logger/SimpleConsoleLogger.d.ts +2 -1
  816. package/logger/SimpleConsoleLogger.js +1 -0
  817. package/logger/SimpleConsoleLogger.js.map +1 -1
  818. package/metadata/CheckMetadata.js +1 -0
  819. package/metadata/CheckMetadata.js.map +1 -1
  820. package/metadata/ColumnMetadata.d.ts +1 -1
  821. package/metadata/ColumnMetadata.js +7 -11
  822. package/metadata/ColumnMetadata.js.map +1 -1
  823. package/metadata/EmbeddedMetadata.js +2 -1
  824. package/metadata/EmbeddedMetadata.js.map +1 -1
  825. package/metadata/EntityListenerMetadata.js +1 -0
  826. package/metadata/EntityListenerMetadata.js.map +1 -1
  827. package/metadata/EntityMetadata.js +2 -1
  828. package/metadata/EntityMetadata.js.map +1 -1
  829. package/metadata/ExclusionMetadata.js +1 -0
  830. package/metadata/ExclusionMetadata.js.map +1 -1
  831. package/metadata/ForeignKeyMetadata.js +1 -0
  832. package/metadata/ForeignKeyMetadata.js.map +1 -1
  833. package/metadata/IndexMetadata.js +1 -0
  834. package/metadata/IndexMetadata.js.map +1 -1
  835. package/metadata/RelationCountMetadata.js +1 -0
  836. package/metadata/RelationCountMetadata.js.map +1 -1
  837. package/metadata/RelationIdMetadata.js +1 -0
  838. package/metadata/RelationIdMetadata.js.map +1 -1
  839. package/metadata/RelationMetadata.js +5 -4
  840. package/metadata/RelationMetadata.js.map +1 -1
  841. package/metadata/UniqueMetadata.js +1 -0
  842. package/metadata/UniqueMetadata.js.map +1 -1
  843. package/metadata/types/EventListenerTypes.js +1 -0
  844. package/metadata/types/EventListenerTypes.js.map +1 -1
  845. package/metadata-args/MetadataArgsStorage.js +1 -0
  846. package/metadata-args/MetadataArgsStorage.js.map +1 -1
  847. package/metadata-builder/ClosureJunctionEntityMetadataBuilder.js +3 -0
  848. package/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
  849. package/metadata-builder/EntityMetadataBuilder.js +7 -6
  850. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  851. package/metadata-builder/EntityMetadataValidator.js +3 -0
  852. package/metadata-builder/EntityMetadataValidator.js.map +1 -1
  853. package/metadata-builder/JunctionEntityMetadataBuilder.js +6 -1
  854. package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  855. package/metadata-builder/MetadataUtils.js +1 -0
  856. package/metadata-builder/MetadataUtils.js.map +1 -1
  857. package/metadata-builder/RelationJoinColumnBuilder.js +4 -1
  858. package/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  859. package/migration/Migration.js +1 -0
  860. package/migration/Migration.js.map +1 -1
  861. package/migration/MigrationExecutor.js +6 -5
  862. package/migration/MigrationExecutor.js.map +1 -1
  863. package/naming-strategy/DefaultNamingStrategy.d.ts +1 -1
  864. package/naming-strategy/DefaultNamingStrategy.js +9 -7
  865. package/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  866. package/naming-strategy/NamingStrategyInterface.d.ts +6 -1
  867. package/naming-strategy/NamingStrategyInterface.js.map +1 -1
  868. package/package.json +43 -42
  869. package/persistence/EntityPersistExecutor.js +1 -0
  870. package/persistence/EntityPersistExecutor.js.map +1 -1
  871. package/persistence/Subject.d.ts +4 -4
  872. package/persistence/Subject.js +6 -5
  873. package/persistence/Subject.js.map +1 -1
  874. package/persistence/SubjectChangedColumnsComputer.js +4 -1
  875. package/persistence/SubjectChangedColumnsComputer.js.map +1 -1
  876. package/persistence/SubjectDatabaseEntityLoader.js +2 -1
  877. package/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  878. package/persistence/SubjectExecutor.js +22 -21
  879. package/persistence/SubjectExecutor.js.map +1 -1
  880. package/persistence/SubjectTopoligicalSorter.js +6 -5
  881. package/persistence/SubjectTopoligicalSorter.js.map +1 -1
  882. package/persistence/subject-builder/CascadesSubjectBuilder.js +1 -0
  883. package/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  884. package/persistence/subject-builder/ManyToManySubjectBuilder.js +3 -0
  885. package/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  886. package/persistence/subject-builder/OneToManySubjectBuilder.js +1 -0
  887. package/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  888. package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +1 -0
  889. package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
  890. package/persistence/tree/ClosureSubjectExecutor.js +2 -1
  891. package/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  892. package/persistence/tree/MaterializedPathSubjectExecutor.js +1 -0
  893. package/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  894. package/persistence/tree/NestedSetSubjectExecutor.js +1 -0
  895. package/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
  896. package/platform/PlatformTools.js +5 -4
  897. package/platform/PlatformTools.js.map +1 -1
  898. package/query-builder/Alias.d.ts +4 -3
  899. package/query-builder/Alias.js +4 -3
  900. package/query-builder/Alias.js.map +1 -1
  901. package/query-builder/Brackets.js +1 -0
  902. package/query-builder/Brackets.js.map +1 -1
  903. package/query-builder/DeleteQueryBuilder.js +6 -1
  904. package/query-builder/DeleteQueryBuilder.js.map +1 -1
  905. package/query-builder/InsertQueryBuilder.js +2 -1
  906. package/query-builder/InsertQueryBuilder.js.map +1 -1
  907. package/query-builder/JoinAttribute.d.ts +10 -10
  908. package/query-builder/JoinAttribute.js +11 -10
  909. package/query-builder/JoinAttribute.js.map +1 -1
  910. package/query-builder/QueryBuilder.d.ts +1 -1
  911. package/query-builder/QueryBuilder.js +25 -24
  912. package/query-builder/QueryBuilder.js.map +1 -1
  913. package/query-builder/QueryBuilderUtils.js +1 -0
  914. package/query-builder/QueryBuilderUtils.js.map +1 -1
  915. package/query-builder/QueryExpressionMap.d.ts +6 -2
  916. package/query-builder/QueryExpressionMap.js +4 -2
  917. package/query-builder/QueryExpressionMap.js.map +1 -1
  918. package/query-builder/RelationIdLoader.js +1 -0
  919. package/query-builder/RelationIdLoader.js.map +1 -1
  920. package/query-builder/RelationLoader.js +3 -2
  921. package/query-builder/RelationLoader.js.map +1 -1
  922. package/query-builder/RelationQueryBuilder.js +2 -1
  923. package/query-builder/RelationQueryBuilder.js.map +1 -1
  924. package/query-builder/RelationRemover.js +11 -10
  925. package/query-builder/RelationRemover.js.map +1 -1
  926. package/query-builder/RelationUpdater.js +1 -0
  927. package/query-builder/RelationUpdater.js.map +1 -1
  928. package/query-builder/ReturningResultsEntityUpdator.js +1 -0
  929. package/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
  930. package/query-builder/SelectQueryBuilder.d.ts +2 -6
  931. package/query-builder/SelectQueryBuilder.js +35 -14
  932. package/query-builder/SelectQueryBuilder.js.map +1 -1
  933. package/query-builder/SoftDeleteQueryBuilder.js +1 -0
  934. package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  935. package/query-builder/UpdateQueryBuilder.js +5 -0
  936. package/query-builder/UpdateQueryBuilder.js.map +1 -1
  937. package/query-builder/relation-count/RelationCountAttribute.d.ts +7 -7
  938. package/query-builder/relation-count/RelationCountAttribute.js +8 -7
  939. package/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
  940. package/query-builder/relation-count/RelationCountLoader.js +3 -1
  941. package/query-builder/relation-count/RelationCountLoader.js.map +1 -1
  942. package/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js +1 -0
  943. package/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js.map +1 -1
  944. package/query-builder/relation-id/RelationIdAttribute.d.ts +8 -8
  945. package/query-builder/relation-id/RelationIdAttribute.js +9 -8
  946. package/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
  947. package/query-builder/relation-id/RelationIdLoader.js +62 -11
  948. package/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  949. package/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js +1 -0
  950. package/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js.map +1 -1
  951. package/query-builder/result/DeleteResult.js +1 -0
  952. package/query-builder/result/DeleteResult.js.map +1 -1
  953. package/query-builder/result/InsertResult.js +1 -0
  954. package/query-builder/result/InsertResult.js.map +1 -1
  955. package/query-builder/result/UpdateResult.js +1 -0
  956. package/query-builder/result/UpdateResult.js.map +1 -1
  957. package/query-builder/transformer/DocumentToEntityTransformer.js +1 -0
  958. package/query-builder/transformer/DocumentToEntityTransformer.js.map +1 -1
  959. package/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js +4 -3
  960. package/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
  961. package/query-builder/transformer/PlainObjectToNewEntityTransformer.js +1 -0
  962. package/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
  963. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js +4 -3
  964. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  965. package/query-runner/BaseQueryRunner.js +3 -2
  966. package/query-runner/BaseQueryRunner.js.map +1 -1
  967. package/repository/AbstractRepository.d.ts +2 -2
  968. package/repository/AbstractRepository.js +3 -2
  969. package/repository/AbstractRepository.js.map +1 -1
  970. package/repository/BaseEntity.d.ts +1 -1
  971. package/repository/BaseEntity.js +3 -2
  972. package/repository/BaseEntity.js.map +1 -1
  973. package/repository/MongoRepository.js +1 -0
  974. package/repository/MongoRepository.js.map +1 -1
  975. package/repository/Repository.d.ts +1 -1
  976. package/repository/Repository.js +3 -2
  977. package/repository/Repository.js.map +1 -1
  978. package/repository/RepositoryFactory.js +1 -0
  979. package/repository/RepositoryFactory.js.map +1 -1
  980. package/repository/TreeRepository.js +3 -2
  981. package/repository/TreeRepository.js.map +1 -1
  982. package/schema-builder/MongoSchemaBuilder.js +1 -0
  983. package/schema-builder/MongoSchemaBuilder.js.map +1 -1
  984. package/schema-builder/RdbmsSchemaBuilder.d.ts +2 -2
  985. package/schema-builder/RdbmsSchemaBuilder.js +79 -78
  986. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  987. package/schema-builder/table/Table.d.ts +1 -1
  988. package/schema-builder/table/Table.js +2 -1
  989. package/schema-builder/table/Table.js.map +1 -1
  990. package/schema-builder/table/TableCheck.js +2 -1
  991. package/schema-builder/table/TableCheck.js.map +1 -1
  992. package/schema-builder/table/TableColumn.js +1 -0
  993. package/schema-builder/table/TableColumn.js.map +1 -1
  994. package/schema-builder/table/TableExclusion.js +1 -0
  995. package/schema-builder/table/TableExclusion.js.map +1 -1
  996. package/schema-builder/table/TableForeignKey.js +3 -2
  997. package/schema-builder/table/TableForeignKey.js.map +1 -1
  998. package/schema-builder/table/TableIndex.js +2 -1
  999. package/schema-builder/table/TableIndex.js.map +1 -1
  1000. package/schema-builder/table/TableUnique.js +2 -1
  1001. package/schema-builder/table/TableUnique.js.map +1 -1
  1002. package/schema-builder/util/TableUtils.js +1 -0
  1003. package/schema-builder/util/TableUtils.js.map +1 -1
  1004. package/schema-builder/view/View.js +1 -0
  1005. package/schema-builder/view/View.js.map +1 -1
  1006. package/subscriber/Broadcaster.js +1 -0
  1007. package/subscriber/Broadcaster.js.map +1 -1
  1008. package/subscriber/BroadcasterResult.js +1 -0
  1009. package/subscriber/BroadcasterResult.js.map +1 -1
  1010. package/util/ApplyValueTransformers.js +1 -0
  1011. package/util/ApplyValueTransformers.js.map +1 -1
  1012. package/util/DateUtils.js +1 -0
  1013. package/util/DateUtils.js.map +1 -1
  1014. package/util/DepGraph.js +1 -0
  1015. package/util/DepGraph.js.map +1 -1
  1016. package/util/DirectoryExportedClassesLoader.js +1 -0
  1017. package/util/DirectoryExportedClassesLoader.js.map +1 -1
  1018. package/util/ObjectUtils.js +1 -0
  1019. package/util/ObjectUtils.js.map +1 -1
  1020. package/util/OrmUtils.d.ts +1 -1
  1021. package/util/OrmUtils.js +2 -1
  1022. package/util/OrmUtils.js.map +1 -1
  1023. package/util/RandomGenerator.js +1 -0
  1024. package/util/RandomGenerator.js.map +1 -1
  1025. package/util/StringUtils.js +1 -0
  1026. package/util/StringUtils.js.map +1 -1
  1027. package/util/VersionUtils.js +1 -0
  1028. package/util/VersionUtils.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/query-builder/RelationLoader.ts"],"names":[],"mappings":"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","file":"RelationLoader.js","sourcesContent":["import {Connection, ObjectLiteral, QueryRunner} from \"../\";\nimport {RelationMetadata} from \"../metadata/RelationMetadata\";\n\n/**\n * Wraps entities and creates getters/setters for their relations\n * to be able to lazily load relations when accessing these relations.\n */\nexport class RelationLoader {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(private connection: Connection) {\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Loads relation data for the given entity and its relation.\n */\n load(relation: RelationMetadata, entityOrEntities: ObjectLiteral|ObjectLiteral[], queryRunner?: QueryRunner): Promise<any[]> { // todo: check all places where it uses non array\n if (queryRunner && queryRunner.isReleased) queryRunner = undefined; // get new one if already closed\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n return this.loadManyToOneOrOneToOneOwner(relation, entityOrEntities, queryRunner);\n\n } else if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n return this.loadOneToManyOrOneToOneNotOwner(relation, entityOrEntities, queryRunner);\n\n } else if (relation.isManyToManyOwner) {\n return this.loadManyToManyOwner(relation, entityOrEntities, queryRunner);\n\n } else { // many-to-many non owner\n return this.loadManyToManyNotOwner(relation, entityOrEntities, queryRunner);\n }\n }\n\n /**\n * Loads data for many-to-one and one-to-one owner relations.\n *\n * (ow) post.category<=>category.post\n * loaded: category from post\n * example: SELECT category.id AS category_id, category.name AS category_name FROM category category\n * INNER JOIN post Post ON Post.category=category.id WHERE Post.id=1\n */\n loadManyToOneOrOneToOneOwner(relation: RelationMetadata, entityOrEntities: ObjectLiteral|ObjectLiteral[], queryRunner?: QueryRunner): Promise<any> {\n const entities = Array.isArray(entityOrEntities) ? entityOrEntities : [entityOrEntities];\n const columns = relation.entityMetadata.primaryColumns;\n const joinColumns = relation.isOwning ? relation.joinColumns : relation.inverseRelation!.joinColumns;\n const conditions = joinColumns.map(joinColumn => {\n return `${relation.entityMetadata.name}.${joinColumn.propertyName} = ${relation.propertyName}.${joinColumn.referencedColumn!.propertyName}`;\n }).join(\" AND \");\n\n const joinAliasName = relation.entityMetadata.name;\n const qb = this.connection\n .createQueryBuilder(queryRunner)\n .select(relation.propertyName) // category\n .from(relation.type, relation.propertyName) // Category, category\n .innerJoin(relation.entityMetadata.target as Function, joinAliasName, conditions);\n\n if (columns.length === 1) {\n qb.where(`${joinAliasName}.${columns[0].propertyPath} IN (:...${joinAliasName + \"_\" + columns[0].propertyName})`);\n qb.setParameter(joinAliasName + \"_\" + columns[0].propertyName, entities.map(entity => columns[0].getEntityValue(entity)));\n\n } else {\n const condition = entities.map((entity, entityIndex) => {\n return columns.map((column, columnIndex) => {\n const paramName = joinAliasName + \"_entity_\" + entityIndex + \"_\" + columnIndex;\n qb.setParameter(paramName, column.getEntityValue(entity));\n return joinAliasName + \".\" + column.propertyPath + \" = :\" + paramName;\n }).join(\" AND \");\n }).map(condition => \"(\" + condition + \")\").join(\" OR \");\n qb.where(condition);\n }\n\n return qb.getMany();\n // return qb.getOne(); todo: fix all usages\n }\n\n /**\n * Loads data for one-to-many and one-to-one not owner relations.\n *\n * SELECT post\n * FROM post post\n * WHERE post.[joinColumn.name] = entity[joinColumn.referencedColumn]\n */\n loadOneToManyOrOneToOneNotOwner(relation: RelationMetadata, entityOrEntities: ObjectLiteral|ObjectLiteral[], queryRunner?: QueryRunner): Promise<any> {\n const entities = Array.isArray(entityOrEntities) ? entityOrEntities : [entityOrEntities];\n const aliasName = relation.propertyName;\n const columns = relation.inverseRelation!.joinColumns;\n const qb = this.connection\n .createQueryBuilder(queryRunner)\n .select(aliasName)\n .from(relation.inverseRelation!.entityMetadata.target, aliasName);\n\n if (columns.length === 1) {\n qb.where(`${aliasName}.${columns[0].propertyPath} IN (:...${aliasName + \"_\" + columns[0].propertyName})`);\n qb.setParameter(aliasName + \"_\" + columns[0].propertyName, entities.map(entity => columns[0].referencedColumn!.getEntityValue(entity)));\n\n } else {\n const condition = entities.map((entity, entityIndex) => {\n return columns.map((column, columnIndex) => {\n const paramName = aliasName + \"_entity_\" + entityIndex + \"_\" + columnIndex;\n qb.setParameter(paramName, column.referencedColumn!.getEntityValue(entity));\n return aliasName + \".\" + column.propertyPath + \" = :\" + paramName;\n }).join(\" AND \");\n }).map(condition => \"(\" + condition + \")\").join(\" OR \");\n qb.where(condition);\n }\n return qb.getMany();\n // return relation.isOneToMany ? qb.getMany() : qb.getOne(); todo: fix all usages\n }\n\n /**\n * Loads data for many-to-many owner relations.\n *\n * SELECT category\n * FROM category category\n * INNER JOIN post_categories post_categories\n * ON post_categories.postId = :postId\n * AND post_categories.categoryId = category.id\n */\n loadManyToManyOwner(relation: RelationMetadata, entityOrEntities: ObjectLiteral|ObjectLiteral[], queryRunner?: QueryRunner): Promise<any> {\n const entities = Array.isArray(entityOrEntities) ? entityOrEntities : [entityOrEntities];\n const mainAlias = relation.propertyName;\n const joinAlias = relation.junctionEntityMetadata!.tableName;\n const joinColumnConditions = relation.joinColumns.map(joinColumn => {\n return `${joinAlias}.${joinColumn.propertyName} IN (:...${joinColumn.propertyName})`;\n });\n const inverseJoinColumnConditions = relation.inverseJoinColumns.map(inverseJoinColumn => {\n return `${joinAlias}.${inverseJoinColumn.propertyName}=${mainAlias}.${inverseJoinColumn.referencedColumn!.propertyName}`;\n });\n const parameters = relation.joinColumns.reduce((parameters, joinColumn) => {\n parameters[joinColumn.propertyName] = entities.map(entity => joinColumn.referencedColumn!.getEntityValue(entity));\n return parameters;\n }, {} as ObjectLiteral);\n\n return this.connection\n .createQueryBuilder(queryRunner)\n .select(mainAlias)\n .from(relation.type, mainAlias)\n .innerJoin(joinAlias, joinAlias, [...joinColumnConditions, ...inverseJoinColumnConditions].join(\" AND \"))\n .setParameters(parameters)\n .getMany();\n }\n\n /**\n * Loads data for many-to-many not owner relations.\n *\n * SELECT post\n * FROM post post\n * INNER JOIN post_categories post_categories\n * ON post_categories.postId = post.id\n * AND post_categories.categoryId = post_categories.categoryId\n */\n loadManyToManyNotOwner(relation: RelationMetadata, entityOrEntities: ObjectLiteral|ObjectLiteral[], queryRunner?: QueryRunner): Promise<any> {\n const entities = Array.isArray(entityOrEntities) ? entityOrEntities : [entityOrEntities];\n const mainAlias = relation.propertyName;\n const joinAlias = relation.junctionEntityMetadata!.tableName;\n const joinColumnConditions = relation.inverseRelation!.joinColumns.map(joinColumn => {\n return `${joinAlias}.${joinColumn.propertyName} = ${mainAlias}.${joinColumn.referencedColumn!.propertyName}`;\n });\n const inverseJoinColumnConditions = relation.inverseRelation!.inverseJoinColumns.map(inverseJoinColumn => {\n return `${joinAlias}.${inverseJoinColumn.propertyName} IN (:...${inverseJoinColumn.propertyName})`;\n });\n const parameters = relation.inverseRelation!.inverseJoinColumns.reduce((parameters, joinColumn) => {\n parameters[joinColumn.propertyName] = entities.map(entity => joinColumn.referencedColumn!.getEntityValue(entity));\n return parameters;\n }, {} as ObjectLiteral);\n\n return this.connection\n .createQueryBuilder(queryRunner)\n .select(mainAlias)\n .from(relation.type, mainAlias)\n .innerJoin(joinAlias, joinAlias, [...joinColumnConditions, ...inverseJoinColumnConditions].join(\" AND \"))\n .setParameters(parameters)\n .getMany();\n }\n\n /**\n * Wraps given entity and creates getters/setters for its given relation\n * to be able to lazily load data when accessing this relation.\n */\n enableLazyLoad(relation: RelationMetadata, entity: ObjectLiteral, queryRunner?: QueryRunner) {\n const relationLoader = this;\n const dataIndex = \"__\" + relation.propertyName + \"__\"; // in what property of the entity loaded data will be stored\n const promiseIndex = \"__promise_\" + relation.propertyName + \"__\"; // in what property of the entity loading promise will be stored\n const resolveIndex = \"__has_\" + relation.propertyName + \"__\"; // indicates if relation data already was loaded or not, we need this flag if loaded data is empty\n\n const setData = (entity: ObjectLiteral, value: any) => {\n entity[dataIndex] = value;\n entity[resolveIndex] = true;\n delete entity[promiseIndex];\n return value;\n };\n const setPromise = (entity: ObjectLiteral, value: Promise<any>) => {\n delete entity[resolveIndex];\n delete entity[dataIndex];\n entity[promiseIndex] = value;\n value.then(\n // ensure different value is not assigned yet\n result => entity[promiseIndex] === value ? setData(entity, result) : result\n );\n return value;\n };\n\n Object.defineProperty(entity, relation.propertyName, {\n get: function() {\n if (this[resolveIndex] === true || this[dataIndex] !== undefined) // if related data already was loaded then simply return it\n return Promise.resolve(this[dataIndex]);\n\n if (this[promiseIndex]) // if related data is loading then return a promise relationLoader loads it\n return this[promiseIndex];\n\n // nothing is loaded yet, load relation data and save it in the model once they are loaded\n const loader = relationLoader.load(relation, this, queryRunner).then(\n result => relation.isOneToOne || relation.isManyToOne ? (result.length === 0 ? null : result[0]) : result\n );\n return setPromise(this, loader);\n },\n set: function(value: any|Promise<any>) {\n if (value instanceof Promise) { // if set data is a promise then wait for its resolve and save in the object\n setPromise(this, value);\n } else { // if its direct data set (non promise, probably not safe-typed)\n setData(this, value);\n }\n },\n configurable: true\n });\n }\n\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/query-builder/RelationLoader.ts"],"names":[],"mappings":"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","file":"RelationLoader.js","sourcesContent":["import {Connection, ObjectLiteral, QueryRunner} from \"../\";\nimport {RelationMetadata} from \"../metadata/RelationMetadata\";\n\n/**\n * Wraps entities and creates getters/setters for their relations\n * to be able to lazily load relations when accessing these relations.\n */\nexport class RelationLoader {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(private connection: Connection) {\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Loads relation data for the given entity and its relation.\n */\n load(relation: RelationMetadata, entityOrEntities: ObjectLiteral|ObjectLiteral[], queryRunner?: QueryRunner): Promise<any[]> { // todo: check all places where it uses non array\n if (queryRunner && queryRunner.isReleased) queryRunner = undefined; // get new one if already closed\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n return this.loadManyToOneOrOneToOneOwner(relation, entityOrEntities, queryRunner);\n\n } else if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n return this.loadOneToManyOrOneToOneNotOwner(relation, entityOrEntities, queryRunner);\n\n } else if (relation.isManyToManyOwner) {\n return this.loadManyToManyOwner(relation, entityOrEntities, queryRunner);\n\n } else { // many-to-many non owner\n return this.loadManyToManyNotOwner(relation, entityOrEntities, queryRunner);\n }\n }\n\n /**\n * Loads data for many-to-one and one-to-one owner relations.\n *\n * (ow) post.category<=>category.post\n * loaded: category from post\n * example: SELECT category.id AS category_id, category.name AS category_name FROM category category\n * INNER JOIN post Post ON Post.category=category.id WHERE Post.id=1\n */\n loadManyToOneOrOneToOneOwner(relation: RelationMetadata, entityOrEntities: ObjectLiteral|ObjectLiteral[], queryRunner?: QueryRunner): Promise<any> {\n const entities = Array.isArray(entityOrEntities) ? entityOrEntities : [entityOrEntities];\n const columns = relation.entityMetadata.primaryColumns;\n const joinColumns = relation.isOwning ? relation.joinColumns : relation.inverseRelation!.joinColumns;\n const conditions = joinColumns.map(joinColumn => {\n return `${relation.entityMetadata.name}.${joinColumn.propertyName} = ${relation.propertyName}.${joinColumn.referencedColumn!.propertyName}`;\n }).join(\" AND \");\n\n const joinAliasName = relation.entityMetadata.name;\n const qb = this.connection\n .createQueryBuilder(queryRunner)\n .select(relation.propertyName) // category\n .from(relation.type, relation.propertyName) // Category, category\n .innerJoin(relation.entityMetadata.target as Function, joinAliasName, conditions);\n\n if (columns.length === 1) {\n qb.where(`${joinAliasName}.${columns[0].propertyPath} IN (:...${joinAliasName + \"_\" + columns[0].propertyName})`);\n qb.setParameter(joinAliasName + \"_\" + columns[0].propertyName, entities.map(entity => columns[0].getEntityValue(entity)));\n\n } else {\n const condition = entities.map((entity, entityIndex) => {\n return columns.map((column, columnIndex) => {\n const paramName = joinAliasName + \"_entity_\" + entityIndex + \"_\" + columnIndex;\n qb.setParameter(paramName, column.getEntityValue(entity));\n return joinAliasName + \".\" + column.propertyPath + \" = :\" + paramName;\n }).join(\" AND \");\n }).map(condition => \"(\" + condition + \")\").join(\" OR \");\n qb.where(condition);\n }\n\n return qb.getMany();\n // return qb.getOne(); todo: fix all usages\n }\n\n /**\n * Loads data for one-to-many and one-to-one not owner relations.\n *\n * SELECT post\n * FROM post post\n * WHERE post.[joinColumn.name] = entity[joinColumn.referencedColumn]\n */\n loadOneToManyOrOneToOneNotOwner(relation: RelationMetadata, entityOrEntities: ObjectLiteral|ObjectLiteral[], queryRunner?: QueryRunner): Promise<any> {\n const entities = Array.isArray(entityOrEntities) ? entityOrEntities : [entityOrEntities];\n const aliasName = relation.propertyName;\n const columns = relation.inverseRelation!.joinColumns;\n const qb = this.connection\n .createQueryBuilder(queryRunner)\n .select(aliasName)\n .from(relation.inverseRelation!.entityMetadata.target, aliasName);\n\n if (columns.length === 1) {\n qb.where(`${aliasName}.${columns[0].propertyPath} IN (:...${aliasName + \"_\" + columns[0].propertyName})`);\n qb.setParameter(aliasName + \"_\" + columns[0].propertyName, entities.map(entity => columns[0].referencedColumn!.getEntityValue(entity)));\n\n } else {\n const condition = entities.map((entity, entityIndex) => {\n return columns.map((column, columnIndex) => {\n const paramName = aliasName + \"_entity_\" + entityIndex + \"_\" + columnIndex;\n qb.setParameter(paramName, column.referencedColumn!.getEntityValue(entity));\n return aliasName + \".\" + column.propertyPath + \" = :\" + paramName;\n }).join(\" AND \");\n }).map(condition => \"(\" + condition + \")\").join(\" OR \");\n qb.where(condition);\n }\n return qb.getMany();\n // return relation.isOneToMany ? qb.getMany() : qb.getOne(); todo: fix all usages\n }\n\n /**\n * Loads data for many-to-many owner relations.\n *\n * SELECT category\n * FROM category category\n * INNER JOIN post_categories post_categories\n * ON post_categories.postId = :postId\n * AND post_categories.categoryId = category.id\n */\n loadManyToManyOwner(relation: RelationMetadata, entityOrEntities: ObjectLiteral|ObjectLiteral[], queryRunner?: QueryRunner): Promise<any> {\n const entities = Array.isArray(entityOrEntities) ? entityOrEntities : [entityOrEntities];\n const mainAlias = relation.propertyName;\n const joinAlias = relation.junctionEntityMetadata!.tableName;\n const joinColumnConditions = relation.joinColumns.map(joinColumn => {\n return `${joinAlias}.${joinColumn.propertyName} IN (:...${joinColumn.propertyName})`;\n });\n const inverseJoinColumnConditions = relation.inverseJoinColumns.map(inverseJoinColumn => {\n return `${joinAlias}.${inverseJoinColumn.propertyName}=${mainAlias}.${inverseJoinColumn.referencedColumn!.propertyName}`;\n });\n const parameters = relation.joinColumns.reduce((parameters, joinColumn) => {\n parameters[joinColumn.propertyName] = entities.map(entity => joinColumn.referencedColumn!.getEntityValue(entity));\n return parameters;\n }, {} as ObjectLiteral);\n\n return this.connection\n .createQueryBuilder(queryRunner)\n .select(mainAlias)\n .from(relation.type, mainAlias)\n .innerJoin(joinAlias, joinAlias, [...joinColumnConditions, ...inverseJoinColumnConditions].join(\" AND \"))\n .setParameters(parameters)\n .getMany();\n }\n\n /**\n * Loads data for many-to-many not owner relations.\n *\n * SELECT post\n * FROM post post\n * INNER JOIN post_categories post_categories\n * ON post_categories.postId = post.id\n * AND post_categories.categoryId = post_categories.categoryId\n */\n loadManyToManyNotOwner(relation: RelationMetadata, entityOrEntities: ObjectLiteral|ObjectLiteral[], queryRunner?: QueryRunner): Promise<any> {\n const entities = Array.isArray(entityOrEntities) ? entityOrEntities : [entityOrEntities];\n const mainAlias = relation.propertyName;\n const joinAlias = relation.junctionEntityMetadata!.tableName;\n const joinColumnConditions = relation.inverseRelation!.joinColumns.map(joinColumn => {\n return `${joinAlias}.${joinColumn.propertyName} = ${mainAlias}.${joinColumn.referencedColumn!.propertyName}`;\n });\n const inverseJoinColumnConditions = relation.inverseRelation!.inverseJoinColumns.map(inverseJoinColumn => {\n return `${joinAlias}.${inverseJoinColumn.propertyName} IN (:...${inverseJoinColumn.propertyName})`;\n });\n const parameters = relation.inverseRelation!.inverseJoinColumns.reduce((parameters, joinColumn) => {\n parameters[joinColumn.propertyName] = entities.map(entity => joinColumn.referencedColumn!.getEntityValue(entity));\n return parameters;\n }, {} as ObjectLiteral);\n\n return this.connection\n .createQueryBuilder(queryRunner)\n .select(mainAlias)\n .from(relation.type, mainAlias)\n .innerJoin(joinAlias, joinAlias, [...joinColumnConditions, ...inverseJoinColumnConditions].join(\" AND \"))\n .setParameters(parameters)\n .getMany();\n }\n\n /**\n * Wraps given entity and creates getters/setters for its given relation\n * to be able to lazily load data when accessing this relation.\n */\n enableLazyLoad(relation: RelationMetadata, entity: ObjectLiteral, queryRunner?: QueryRunner) {\n const relationLoader = this;\n const dataIndex = \"__\" + relation.propertyName + \"__\"; // in what property of the entity loaded data will be stored\n const promiseIndex = \"__promise_\" + relation.propertyName + \"__\"; // in what property of the entity loading promise will be stored\n const resolveIndex = \"__has_\" + relation.propertyName + \"__\"; // indicates if relation data already was loaded or not, we need this flag if loaded data is empty\n\n const setData = (entity: ObjectLiteral, value: any) => {\n entity[dataIndex] = value;\n entity[resolveIndex] = true;\n delete entity[promiseIndex];\n return value;\n };\n const setPromise = (entity: ObjectLiteral, value: Promise<any>) => {\n delete entity[resolveIndex];\n delete entity[dataIndex];\n entity[promiseIndex] = value;\n value.then(\n // ensure different value is not assigned yet\n result => entity[promiseIndex] === value ? setData(entity, result) : result\n );\n return value;\n };\n\n Object.defineProperty(entity, relation.propertyName, {\n get: function() {\n if (this[resolveIndex] === true || this[dataIndex] !== undefined) // if related data already was loaded then simply return it\n return Promise.resolve(this[dataIndex]);\n\n if (this[promiseIndex]) // if related data is loading then return a promise relationLoader loads it\n return this[promiseIndex];\n\n // nothing is loaded yet, load relation data and save it in the model once they are loaded\n const loader = relationLoader.load(relation, this, queryRunner).then(\n result => relation.isOneToOne || relation.isManyToOne ? (result.length === 0 ? null : result[0]) : result\n );\n return setPromise(this, loader);\n },\n set: function(value: any|Promise<any>) {\n if (value instanceof Promise) { // if set data is a promise then wait for its resolve and save in the object\n setPromise(this, value);\n } else { // if its direct data set (non promise, probably not safe-typed)\n setData(this, value);\n }\n },\n configurable: true\n });\n }\n\n}\n"],"sourceRoot":".."}
@@ -171,7 +171,7 @@ var RelationQueryBuilder = /** @class */ (function (_super) {
171
171
  throw new Error("Cannot load entity because only one primary key was specified, however entity contains multiple primary keys");
172
172
  of = metadata.primaryColumns[0].createValueMap(of);
173
173
  }
174
- return [2 /*return*/, this.connection.relationLoader.load(this.expressionMap.relationMetadata, of)];
174
+ return [2 /*return*/, this.connection.relationLoader.load(this.expressionMap.relationMetadata, of, this.queryRunner)];
175
175
  });
176
176
  });
177
177
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/query-builder/RelationQueryBuilder.ts"],"names":[],"mappings":"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","file":"RelationQueryBuilder.js","sourcesContent":["import {QueryBuilder} from \"./QueryBuilder\";\nimport {RelationUpdater} from \"./RelationUpdater\";\nimport {RelationRemover} from \"./RelationRemover\";\n\n/**\n * Allows to work with entity relations and perform specific operations with those relations.\n *\n * todo: add transactions everywhere\n */\nexport class RelationQueryBuilder<Entity> extends QueryBuilder<Entity> {\n\n // -------------------------------------------------------------------------\n // Public Implemented Methods\n // -------------------------------------------------------------------------\n\n /**\n * Gets generated sql query without parameters being replaced.\n */\n getQuery(): string {\n return \"\";\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Sets entity (target) which relations will be updated.\n */\n of(entity: any|any[]): this {\n this.expressionMap.of = entity;\n return this;\n }\n\n /**\n * Sets entity relation's value.\n * Value can be entity, entity id or entity id map (if entity has composite ids).\n * Works only for many-to-one and one-to-one relations.\n * For many-to-many and one-to-many relations use #add and #remove methods instead.\n */\n async set(value: any): Promise<void> {\n const relation = this.expressionMap.relationMetadata;\n\n if (!this.expressionMap.of) // todo: move this check before relation query builder creation?\n throw new Error(`Entity whose relation needs to be set is not set. Use .of method to define whose relation you want to set.`);\n\n if (relation.isManyToMany || relation.isOneToMany)\n throw new Error(`Set operation is only supported for many-to-one and one-to-one relations. ` +\n `However given \"${relation.propertyPath}\" has ${relation.relationType} relation. ` +\n `Use .add() method instead.`);\n\n // if there are multiple join columns then user must send id map as \"value\" argument. check if he really did it\n if (relation.joinColumns &&\n relation.joinColumns.length > 1 &&\n (!(value instanceof Object) || Object.keys(value).length < relation.joinColumns.length))\n throw new Error(`Value to be set into the relation must be a map of relation ids, for example: .set({ firstName: \"...\", lastName: \"...\" })`);\n\n const updater = new RelationUpdater(this, this.expressionMap);\n return updater.update(value);\n }\n\n /**\n * Adds (binds) given value to entity relation.\n * Value can be entity, entity id or entity id map (if entity has composite ids).\n * Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids).\n * Works only for many-to-many and one-to-many relations.\n * For many-to-one and one-to-one use #set method instead.\n */\n async add(value: any|any[]): Promise<void> {\n if (Array.isArray(value) && value.length === 0)\n return;\n\n const relation = this.expressionMap.relationMetadata;\n\n if (!this.expressionMap.of) // todo: move this check before relation query builder creation?\n throw new Error(`Entity whose relation needs to be set is not set. Use .of method to define whose relation you want to set.`);\n\n if (relation.isManyToOne || relation.isOneToOne)\n throw new Error(`Add operation is only supported for many-to-many and one-to-many relations. ` +\n `However given \"${relation.propertyPath}\" has ${relation.relationType} relation. ` +\n `Use .set() method instead.`);\n\n // if there are multiple join columns then user must send id map as \"value\" argument. check if he really did it\n if (relation.joinColumns &&\n relation.joinColumns.length > 1 &&\n (!(value instanceof Object) || Object.keys(value).length < relation.joinColumns.length))\n throw new Error(`Value to be set into the relation must be a map of relation ids, for example: .set({ firstName: \"...\", lastName: \"...\" })`);\n\n const updater = new RelationUpdater(this, this.expressionMap);\n return updater.update(value);\n }\n\n /**\n * Removes (unbinds) given value from entity relation.\n * Value can be entity, entity id or entity id map (if entity has composite ids).\n * Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids).\n * Works only for many-to-many and one-to-many relations.\n * For many-to-one and one-to-one use #set method instead.\n */\n async remove(value: any|any[]): Promise<void> {\n if (Array.isArray(value) && value.length === 0)\n return;\n\n const relation = this.expressionMap.relationMetadata;\n\n if (!this.expressionMap.of) // todo: move this check before relation query builder creation?\n throw new Error(`Entity whose relation needs to be set is not set. Use .of method to define whose relation you want to set.`);\n\n if (relation.isManyToOne || relation.isOneToOne)\n throw new Error(`Add operation is only supported for many-to-many and one-to-many relations. ` +\n `However given \"${relation.propertyPath}\" has ${relation.relationType} relation. ` +\n `Use .set(null) method instead.`);\n\n const remover = new RelationRemover(this, this.expressionMap);\n return remover.remove(value);\n }\n\n /**\n * Adds (binds) and removes (unbinds) given values to/from entity relation.\n * Value can be entity, entity id or entity id map (if entity has composite ids).\n * Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids).\n * Works only for many-to-many and one-to-many relations.\n * For many-to-one and one-to-one use #set method instead.\n */\n async addAndRemove(added: any|any[], removed: any|any[]): Promise<void> {\n await this.remove(removed);\n await this.add(added);\n }\n\n /**\n * Gets entity's relation id.\n async getId(): Promise<any> {\n\n }*/\n\n /**\n * Gets entity's relation ids.\n async getIds(): Promise<any[]> {\n return [];\n }*/\n\n /**\n * Loads a single entity (relational) from the relation.\n * You can also provide id of relational entity to filter by.\n */\n async loadOne<T = any>(): Promise<T|undefined> {\n return this.loadMany<T>().then(results => results[0]);\n }\n\n /**\n * Loads many entities (relational) from the relation.\n * You can also provide ids of relational entities to filter by.\n */\n async loadMany<T = any>(): Promise<T[]> {\n let of = this.expressionMap.of;\n if (!(of instanceof Object)) {\n const metadata = this.expressionMap.mainAlias!.metadata;\n if (metadata.hasMultiplePrimaryKeys)\n throw new Error(`Cannot load entity because only one primary key was specified, however entity contains multiple primary keys`);\n\n of = metadata.primaryColumns[0].createValueMap(of);\n }\n\n return this.connection.relationLoader.load(this.expressionMap.relationMetadata, of);\n }\n\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/query-builder/RelationQueryBuilder.ts"],"names":[],"mappings":"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","file":"RelationQueryBuilder.js","sourcesContent":["import {QueryBuilder} from \"./QueryBuilder\";\nimport {RelationUpdater} from \"./RelationUpdater\";\nimport {RelationRemover} from \"./RelationRemover\";\n\n/**\n * Allows to work with entity relations and perform specific operations with those relations.\n *\n * todo: add transactions everywhere\n */\nexport class RelationQueryBuilder<Entity> extends QueryBuilder<Entity> {\n\n // -------------------------------------------------------------------------\n // Public Implemented Methods\n // -------------------------------------------------------------------------\n\n /**\n * Gets generated sql query without parameters being replaced.\n */\n getQuery(): string {\n return \"\";\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Sets entity (target) which relations will be updated.\n */\n of(entity: any|any[]): this {\n this.expressionMap.of = entity;\n return this;\n }\n\n /**\n * Sets entity relation's value.\n * Value can be entity, entity id or entity id map (if entity has composite ids).\n * Works only for many-to-one and one-to-one relations.\n * For many-to-many and one-to-many relations use #add and #remove methods instead.\n */\n async set(value: any): Promise<void> {\n const relation = this.expressionMap.relationMetadata;\n\n if (!this.expressionMap.of) // todo: move this check before relation query builder creation?\n throw new Error(`Entity whose relation needs to be set is not set. Use .of method to define whose relation you want to set.`);\n\n if (relation.isManyToMany || relation.isOneToMany)\n throw new Error(`Set operation is only supported for many-to-one and one-to-one relations. ` +\n `However given \"${relation.propertyPath}\" has ${relation.relationType} relation. ` +\n `Use .add() method instead.`);\n\n // if there are multiple join columns then user must send id map as \"value\" argument. check if he really did it\n if (relation.joinColumns &&\n relation.joinColumns.length > 1 &&\n (!(value instanceof Object) || Object.keys(value).length < relation.joinColumns.length))\n throw new Error(`Value to be set into the relation must be a map of relation ids, for example: .set({ firstName: \"...\", lastName: \"...\" })`);\n\n const updater = new RelationUpdater(this, this.expressionMap);\n return updater.update(value);\n }\n\n /**\n * Adds (binds) given value to entity relation.\n * Value can be entity, entity id or entity id map (if entity has composite ids).\n * Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids).\n * Works only for many-to-many and one-to-many relations.\n * For many-to-one and one-to-one use #set method instead.\n */\n async add(value: any|any[]): Promise<void> {\n if (Array.isArray(value) && value.length === 0)\n return;\n\n const relation = this.expressionMap.relationMetadata;\n\n if (!this.expressionMap.of) // todo: move this check before relation query builder creation?\n throw new Error(`Entity whose relation needs to be set is not set. Use .of method to define whose relation you want to set.`);\n\n if (relation.isManyToOne || relation.isOneToOne)\n throw new Error(`Add operation is only supported for many-to-many and one-to-many relations. ` +\n `However given \"${relation.propertyPath}\" has ${relation.relationType} relation. ` +\n `Use .set() method instead.`);\n\n // if there are multiple join columns then user must send id map as \"value\" argument. check if he really did it\n if (relation.joinColumns &&\n relation.joinColumns.length > 1 &&\n (!(value instanceof Object) || Object.keys(value).length < relation.joinColumns.length))\n throw new Error(`Value to be set into the relation must be a map of relation ids, for example: .set({ firstName: \"...\", lastName: \"...\" })`);\n\n const updater = new RelationUpdater(this, this.expressionMap);\n return updater.update(value);\n }\n\n /**\n * Removes (unbinds) given value from entity relation.\n * Value can be entity, entity id or entity id map (if entity has composite ids).\n * Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids).\n * Works only for many-to-many and one-to-many relations.\n * For many-to-one and one-to-one use #set method instead.\n */\n async remove(value: any|any[]): Promise<void> {\n if (Array.isArray(value) && value.length === 0)\n return;\n\n const relation = this.expressionMap.relationMetadata;\n\n if (!this.expressionMap.of) // todo: move this check before relation query builder creation?\n throw new Error(`Entity whose relation needs to be set is not set. Use .of method to define whose relation you want to set.`);\n\n if (relation.isManyToOne || relation.isOneToOne)\n throw new Error(`Add operation is only supported for many-to-many and one-to-many relations. ` +\n `However given \"${relation.propertyPath}\" has ${relation.relationType} relation. ` +\n `Use .set(null) method instead.`);\n\n const remover = new RelationRemover(this, this.expressionMap);\n return remover.remove(value);\n }\n\n /**\n * Adds (binds) and removes (unbinds) given values to/from entity relation.\n * Value can be entity, entity id or entity id map (if entity has composite ids).\n * Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids).\n * Works only for many-to-many and one-to-many relations.\n * For many-to-one and one-to-one use #set method instead.\n */\n async addAndRemove(added: any|any[], removed: any|any[]): Promise<void> {\n await this.remove(removed);\n await this.add(added);\n }\n\n /**\n * Gets entity's relation id.\n async getId(): Promise<any> {\n\n }*/\n\n /**\n * Gets entity's relation ids.\n async getIds(): Promise<any[]> {\n return [];\n }*/\n\n /**\n * Loads a single entity (relational) from the relation.\n * You can also provide id of relational entity to filter by.\n */\n async loadOne<T = any>(): Promise<T|undefined> {\n return this.loadMany<T>().then(results => results[0]);\n }\n\n /**\n * Loads many entities (relational) from the relation.\n * You can also provide ids of relational entities to filter by.\n */\n async loadMany<T = any>(): Promise<T[]> {\n let of = this.expressionMap.of;\n if (!(of instanceof Object)) {\n const metadata = this.expressionMap.mainAlias!.metadata;\n if (metadata.hasMultiplePrimaryKeys)\n throw new Error(`Cannot load entity because only one primary key was specified, however entity contains multiple primary keys`);\n\n of = metadata.primaryColumns[0].createValueMap(of);\n }\n\n return this.connection.relationLoader.load(this.expressionMap.relationMetadata, of, this.queryRunner);\n }\n\n}\n"],"sourceRoot":".."}
@@ -1,4 +1,4 @@
1
- import { __awaiter, __generator, __read, __spread } from "tslib";
1
+ import { __awaiter, __generator, __read, __spreadArray } from "tslib";
2
2
  /**
3
3
  * Allows to work with entity relations and perform specific operations with those relations.
4
4
  *
@@ -35,17 +35,17 @@ var RelationRemover = /** @class */ (function () {
35
35
  parameters_1 = {};
36
36
  conditions_1 = [];
37
37
  ofs.forEach(function (of, ofIndex) {
38
- conditions_1.push.apply(conditions_1, __spread(values_1.map(function (value, valueIndex) {
39
- return __spread(relation.inverseRelation.joinColumns.map(function (column, columnIndex) {
38
+ conditions_1.push.apply(conditions_1, __spreadArray([], __read(values_1.map(function (value, valueIndex) {
39
+ return __spreadArray(__spreadArray([], __read(relation.inverseRelation.joinColumns.map(function (column, columnIndex) {
40
40
  var parameterName = "joinColumn_" + ofIndex + "_" + valueIndex + "_" + columnIndex;
41
41
  parameters_1[parameterName] = of instanceof Object ? column.referencedColumn.getEntityValue(of) : of;
42
42
  return column.propertyPath + " = :" + parameterName;
43
- }), relation.inverseRelation.entityMetadata.primaryColumns.map(function (column, columnIndex) {
43
+ }))), __read(relation.inverseRelation.entityMetadata.primaryColumns.map(function (column, columnIndex) {
44
44
  var parameterName = "primaryColumn_" + valueIndex + "_" + valueIndex + "_" + columnIndex;
45
45
  parameters_1[parameterName] = value instanceof Object ? column.getEntityValue(value) : value;
46
46
  return column.propertyPath + " = :" + parameterName;
47
- })).join(" AND ");
48
- })));
47
+ }))).join(" AND ");
48
+ }))));
49
49
  });
50
50
  condition = conditions_1.map(function (str) { return "(" + str + ")"; }).join(" OR ");
51
51
  if (!condition)
@@ -69,17 +69,17 @@ var RelationRemover = /** @class */ (function () {
69
69
  parameters_2 = {};
70
70
  conditions_2 = [];
71
71
  firstColumnValues.forEach(function (firstColumnVal, firstColumnValIndex) {
72
- conditions_2.push.apply(conditions_2, __spread(secondColumnValues_1.map(function (secondColumnVal, secondColumnValIndex) {
73
- return __spread(junctionMetadata_1.ownerColumns.map(function (column, columnIndex) {
72
+ conditions_2.push.apply(conditions_2, __spreadArray([], __read(secondColumnValues_1.map(function (secondColumnVal, secondColumnValIndex) {
73
+ return __spreadArray(__spreadArray([], __read(junctionMetadata_1.ownerColumns.map(function (column, columnIndex) {
74
74
  var parameterName = "firstValue_" + firstColumnValIndex + "_" + secondColumnValIndex + "_" + columnIndex;
75
75
  parameters_2[parameterName] = firstColumnVal instanceof Object ? column.referencedColumn.getEntityValue(firstColumnVal) : firstColumnVal;
76
76
  return column.databaseName + " = :" + parameterName;
77
- }), junctionMetadata_1.inverseColumns.map(function (column, columnIndex) {
77
+ }))), __read(junctionMetadata_1.inverseColumns.map(function (column, columnIndex) {
78
78
  var parameterName = "secondValue_" + firstColumnValIndex + "_" + secondColumnValIndex + "_" + columnIndex;
79
79
  parameters_2[parameterName] = secondColumnVal instanceof Object ? column.referencedColumn.getEntityValue(secondColumnVal) : secondColumnVal;
80
80
  return column.databaseName + " = :" + parameterName;
81
- })).join(" AND ");
82
- })));
81
+ }))).join(" AND ");
82
+ }))));
83
83
  });
84
84
  condition = conditions_2.map(function (str) { return "(" + str + ")"; }).join(" OR ");
85
85
  return [4 /*yield*/, this.queryBuilder
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/query-builder/RelationRemover.ts"],"names":[],"mappings":"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","file":"RelationRemover.js","sourcesContent":["import {QueryBuilder} from \"./QueryBuilder\";\nimport {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {QueryExpressionMap} from \"./QueryExpressionMap\";\n\n/**\n * Allows to work with entity relations and perform specific operations with those relations.\n *\n * todo: add transactions everywhere\n */\nexport class RelationRemover {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected queryBuilder: QueryBuilder<any>,\n protected expressionMap: QueryExpressionMap) {\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Performs remove operation on a relation.\n */\n async remove(value: any|any[]): Promise<void> {\n const relation = this.expressionMap.relationMetadata;\n\n if (relation.isOneToMany) {\n\n // if (this.expressionMap.of instanceof Array)\n // throw new Error(`You cannot update relations of multiple entities with the same related object. Provide a single entity into .of method.`);\n\n // DELETE FROM post WHERE post.categoryId = of AND post.id = id\n const ofs = Array.isArray(this.expressionMap.of) ? this.expressionMap.of : [this.expressionMap.of];\n const values = Array.isArray(value) ? value : [value];\n\n const updateSet: ObjectLiteral = {};\n relation.inverseRelation!.joinColumns.forEach(column => {\n updateSet[column.propertyName] = null;\n });\n\n const parameters: ObjectLiteral = {};\n const conditions: string[] = [];\n ofs.forEach((of, ofIndex) => {\n conditions.push(...values.map((value, valueIndex) => {\n return [\n ...relation.inverseRelation!.joinColumns.map((column, columnIndex) => {\n const parameterName = \"joinColumn_\" + ofIndex + \"_\" + valueIndex + \"_\" + columnIndex;\n parameters[parameterName] = of instanceof Object ? column.referencedColumn!.getEntityValue(of) : of;\n return `${column.propertyPath} = :${parameterName}`;\n }),\n ...relation.inverseRelation!.entityMetadata.primaryColumns.map((column, columnIndex) => {\n const parameterName = \"primaryColumn_\" + valueIndex + \"_\" + valueIndex + \"_\" + columnIndex;\n parameters[parameterName] = value instanceof Object ? column.getEntityValue(value) : value;\n return `${column.propertyPath} = :${parameterName}`;\n })\n ].join(\" AND \");\n }));\n });\n const condition = conditions.map(str => \"(\" + str + \")\").join(\" OR \");\n if (!condition) return;\n\n await this.queryBuilder\n .createQueryBuilder()\n .update(relation.inverseEntityMetadata.target)\n .set(updateSet)\n .where(condition)\n .setParameters(parameters)\n .execute();\n\n } else { // many to many\n\n const junctionMetadata = relation.junctionEntityMetadata!;\n const ofs = Array.isArray(this.expressionMap.of) ? this.expressionMap.of : [this.expressionMap.of];\n const values = Array.isArray(value) ? value : [value];\n const firstColumnValues = relation.isManyToManyOwner ? ofs : values;\n const secondColumnValues = relation.isManyToManyOwner ? values : ofs;\n\n const parameters: ObjectLiteral = {};\n const conditions: string[] = [];\n firstColumnValues.forEach((firstColumnVal, firstColumnValIndex) => {\n conditions.push(...secondColumnValues.map((secondColumnVal, secondColumnValIndex) => {\n return [\n ...junctionMetadata.ownerColumns.map((column, columnIndex) => {\n const parameterName = \"firstValue_\" + firstColumnValIndex + \"_\" + secondColumnValIndex + \"_\" + columnIndex;\n parameters[parameterName] = firstColumnVal instanceof Object ? column.referencedColumn!.getEntityValue(firstColumnVal) : firstColumnVal;\n return `${column.databaseName} = :${parameterName}`;\n }),\n ...junctionMetadata.inverseColumns.map((column, columnIndex) => {\n const parameterName = \"secondValue_\" + firstColumnValIndex + \"_\" + secondColumnValIndex + \"_\" + columnIndex;\n parameters[parameterName] = secondColumnVal instanceof Object ? column.referencedColumn!.getEntityValue(secondColumnVal) : secondColumnVal;\n return `${column.databaseName} = :${parameterName}`;\n })\n ].join(\" AND \");\n }));\n });\n const condition = conditions.map(str => \"(\" + str + \")\").join(\" OR \");\n\n await this.queryBuilder\n .createQueryBuilder()\n .delete()\n .from(junctionMetadata.tableName)\n .where(condition)\n .setParameters(parameters)\n .execute();\n }\n }\n\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/query-builder/RelationRemover.ts"],"names":[],"mappings":"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","file":"RelationRemover.js","sourcesContent":["import {QueryBuilder} from \"./QueryBuilder\";\nimport {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {QueryExpressionMap} from \"./QueryExpressionMap\";\n\n/**\n * Allows to work with entity relations and perform specific operations with those relations.\n *\n * todo: add transactions everywhere\n */\nexport class RelationRemover {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected queryBuilder: QueryBuilder<any>,\n protected expressionMap: QueryExpressionMap) {\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Performs remove operation on a relation.\n */\n async remove(value: any|any[]): Promise<void> {\n const relation = this.expressionMap.relationMetadata;\n\n if (relation.isOneToMany) {\n\n // if (this.expressionMap.of instanceof Array)\n // throw new Error(`You cannot update relations of multiple entities with the same related object. Provide a single entity into .of method.`);\n\n // DELETE FROM post WHERE post.categoryId = of AND post.id = id\n const ofs = Array.isArray(this.expressionMap.of) ? this.expressionMap.of : [this.expressionMap.of];\n const values = Array.isArray(value) ? value : [value];\n\n const updateSet: ObjectLiteral = {};\n relation.inverseRelation!.joinColumns.forEach(column => {\n updateSet[column.propertyName] = null;\n });\n\n const parameters: ObjectLiteral = {};\n const conditions: string[] = [];\n ofs.forEach((of, ofIndex) => {\n conditions.push(...values.map((value, valueIndex) => {\n return [\n ...relation.inverseRelation!.joinColumns.map((column, columnIndex) => {\n const parameterName = \"joinColumn_\" + ofIndex + \"_\" + valueIndex + \"_\" + columnIndex;\n parameters[parameterName] = of instanceof Object ? column.referencedColumn!.getEntityValue(of) : of;\n return `${column.propertyPath} = :${parameterName}`;\n }),\n ...relation.inverseRelation!.entityMetadata.primaryColumns.map((column, columnIndex) => {\n const parameterName = \"primaryColumn_\" + valueIndex + \"_\" + valueIndex + \"_\" + columnIndex;\n parameters[parameterName] = value instanceof Object ? column.getEntityValue(value) : value;\n return `${column.propertyPath} = :${parameterName}`;\n })\n ].join(\" AND \");\n }));\n });\n const condition = conditions.map(str => \"(\" + str + \")\").join(\" OR \");\n if (!condition) return;\n\n await this.queryBuilder\n .createQueryBuilder()\n .update(relation.inverseEntityMetadata.target)\n .set(updateSet)\n .where(condition)\n .setParameters(parameters)\n .execute();\n\n } else { // many to many\n\n const junctionMetadata = relation.junctionEntityMetadata!;\n const ofs = Array.isArray(this.expressionMap.of) ? this.expressionMap.of : [this.expressionMap.of];\n const values = Array.isArray(value) ? value : [value];\n const firstColumnValues = relation.isManyToManyOwner ? ofs : values;\n const secondColumnValues = relation.isManyToManyOwner ? values : ofs;\n\n const parameters: ObjectLiteral = {};\n const conditions: string[] = [];\n firstColumnValues.forEach((firstColumnVal, firstColumnValIndex) => {\n conditions.push(...secondColumnValues.map((secondColumnVal, secondColumnValIndex) => {\n return [\n ...junctionMetadata.ownerColumns.map((column, columnIndex) => {\n const parameterName = \"firstValue_\" + firstColumnValIndex + \"_\" + secondColumnValIndex + \"_\" + columnIndex;\n parameters[parameterName] = firstColumnVal instanceof Object ? column.referencedColumn!.getEntityValue(firstColumnVal) : firstColumnVal;\n return `${column.databaseName} = :${parameterName}`;\n }),\n ...junctionMetadata.inverseColumns.map((column, columnIndex) => {\n const parameterName = \"secondValue_\" + firstColumnValIndex + \"_\" + secondColumnValIndex + \"_\" + columnIndex;\n parameters[parameterName] = secondColumnVal instanceof Object ? column.referencedColumn!.getEntityValue(secondColumnVal) : secondColumnVal;\n return `${column.databaseName} = :${parameterName}`;\n })\n ].join(\" AND \");\n }));\n });\n const condition = conditions.map(str => \"(\" + str + \")\").join(\" OR \");\n\n await this.queryBuilder\n .createQueryBuilder()\n .delete()\n .from(junctionMetadata.tableName)\n .where(condition)\n .setParameters(parameters)\n .execute();\n }\n }\n\n}\n"],"sourceRoot":".."}
@@ -1,3 +1,3 @@
1
-
1
+ export {};
2
2
 
3
3
  //# sourceMappingURL=SelectQuery.js.map
@@ -481,15 +481,11 @@ export declare class SelectQueryBuilder<Entity> extends QueryBuilder<Entity> imp
481
481
  /**
482
482
  * Sets locking mode.
483
483
  */
484
- setLock(lockMode: "optimistic", lockVersion: number): this;
484
+ setLock(lockMode: "optimistic", lockVersion: number | Date): this;
485
485
  /**
486
486
  * Sets locking mode.
487
487
  */
488
- setLock(lockMode: "optimistic", lockVersion: Date): this;
489
- /**
490
- * Sets locking mode.
491
- */
492
- setLock(lockMode: "pessimistic_read" | "pessimistic_write" | "dirty_read" | "pessimistic_partial_write" | "pessimistic_write_or_fail" | "for_no_key_update"): this;
488
+ setLock(lockMode: "pessimistic_read" | "pessimistic_write" | "dirty_read" | "pessimistic_partial_write" | "pessimistic_write_or_fail" | "for_no_key_update", lockVersion?: undefined, lockTables?: string[]): this;
493
489
  /**
494
490
  * Disables the global condition of "non-deleted" for the entity with delete date columns.
495
491
  */
@@ -1,4 +1,4 @@
1
- import { __awaiter, __extends, __generator, __read, __spread } from "tslib";
1
+ import { __awaiter, __extends, __generator, __read, __spreadArray } from "tslib";
2
2
  import { SapDriver } from "../driver/sap/SapDriver";
3
3
  import { RawSqlResultsToEntityTransformer } from "./transformer/RawSqlResultsToEntityTransformer";
4
4
  import { SqlServerDriver } from "../driver/sqlserver/SqlServerDriver";
@@ -508,9 +508,10 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
508
508
  /**
509
509
  * Sets locking mode.
510
510
  */
511
- SelectQueryBuilder.prototype.setLock = function (lockMode, lockVersion) {
511
+ SelectQueryBuilder.prototype.setLock = function (lockMode, lockVersion, lockTables) {
512
512
  this.expressionMap.lockMode = lockMode;
513
513
  this.expressionMap.lockVersion = lockVersion;
514
+ this.expressionMap.lockTables = lockTables;
514
515
  return this;
515
516
  };
516
517
  /**
@@ -986,15 +987,15 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
986
987
  var excludedSelects = [];
987
988
  if (this.expressionMap.mainAlias.hasMetadata) {
988
989
  var metadata = this.expressionMap.mainAlias.metadata;
989
- allSelects.push.apply(allSelects, __spread(this.buildEscapedEntityColumnSelects(this.expressionMap.mainAlias.name, metadata)));
990
- excludedSelects.push.apply(excludedSelects, __spread(this.findEntityColumnSelects(this.expressionMap.mainAlias.name, metadata)));
990
+ allSelects.push.apply(allSelects, __spreadArray([], __read(this.buildEscapedEntityColumnSelects(this.expressionMap.mainAlias.name, metadata))));
991
+ excludedSelects.push.apply(excludedSelects, __spreadArray([], __read(this.findEntityColumnSelects(this.expressionMap.mainAlias.name, metadata))));
991
992
  }
992
993
  // add selects from joins
993
994
  this.expressionMap.joinAttributes
994
995
  .forEach(function (join) {
995
996
  if (join.metadata) {
996
- allSelects.push.apply(allSelects, __spread(_this.buildEscapedEntityColumnSelects(join.alias.name, join.metadata)));
997
- excludedSelects.push.apply(excludedSelects, __spread(_this.findEntityColumnSelects(join.alias.name, join.metadata)));
997
+ allSelects.push.apply(allSelects, __spreadArray([], __read(_this.buildEscapedEntityColumnSelects(join.alias.name, join.metadata))));
998
+ excludedSelects.push.apply(excludedSelects, __spreadArray([], __read(_this.findEntityColumnSelects(join.alias.name, join.metadata))));
998
999
  }
999
1000
  else {
1000
1001
  var hasMainAlias = _this.expressionMap.selects.some(function (select) { return select.selection === join.alias.name; });
@@ -1224,13 +1225,23 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
1224
1225
  */
1225
1226
  SelectQueryBuilder.prototype.createLockExpression = function () {
1226
1227
  var driver = this.connection.driver;
1228
+ var lockTablesClause = "";
1229
+ if (this.expressionMap.lockTables) {
1230
+ if (!(driver instanceof PostgresDriver)) {
1231
+ throw new Error("Lock tables not supported in selected driver");
1232
+ }
1233
+ if (this.expressionMap.lockTables.length < 1) {
1234
+ throw new Error("lockTables cannot be an empty array");
1235
+ }
1236
+ lockTablesClause = " OF " + this.expressionMap.lockTables.join(", ");
1237
+ }
1227
1238
  switch (this.expressionMap.lockMode) {
1228
1239
  case "pessimistic_read":
1229
1240
  if (driver instanceof MysqlDriver || driver instanceof AuroraDataApiDriver) {
1230
1241
  return " LOCK IN SHARE MODE";
1231
1242
  }
1232
1243
  else if (driver instanceof PostgresDriver) {
1233
- return " FOR SHARE";
1244
+ return " FOR SHARE" + lockTablesClause;
1234
1245
  }
1235
1246
  else if (driver instanceof OracleDriver) {
1236
1247
  return " FOR UPDATE";
@@ -1242,9 +1253,12 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
1242
1253
  throw new LockNotSupportedOnGivenDriverError();
1243
1254
  }
1244
1255
  case "pessimistic_write":
1245
- if (driver instanceof MysqlDriver || driver instanceof AuroraDataApiDriver || driver instanceof PostgresDriver || driver instanceof OracleDriver) {
1256
+ if (driver instanceof MysqlDriver || driver instanceof AuroraDataApiDriver || driver instanceof OracleDriver) {
1246
1257
  return " FOR UPDATE";
1247
1258
  }
1259
+ else if (driver instanceof PostgresDriver) {
1260
+ return " FOR UPDATE" + lockTablesClause;
1261
+ }
1248
1262
  else if (driver instanceof SqlServerDriver) {
1249
1263
  return "";
1250
1264
  }
@@ -1252,14 +1266,20 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
1252
1266
  throw new LockNotSupportedOnGivenDriverError();
1253
1267
  }
1254
1268
  case "pessimistic_partial_write":
1255
- if (driver instanceof PostgresDriver || driver instanceof MysqlDriver) {
1269
+ if (driver instanceof PostgresDriver) {
1270
+ return " FOR UPDATE" + lockTablesClause + " SKIP LOCKED";
1271
+ }
1272
+ else if (driver instanceof MysqlDriver) {
1256
1273
  return " FOR UPDATE SKIP LOCKED";
1257
1274
  }
1258
1275
  else {
1259
1276
  throw new LockNotSupportedOnGivenDriverError();
1260
1277
  }
1261
1278
  case "pessimistic_write_or_fail":
1262
- if (driver instanceof PostgresDriver || driver instanceof MysqlDriver) {
1279
+ if (driver instanceof PostgresDriver) {
1280
+ return " FOR UPDATE" + lockTablesClause + " NOWAIT";
1281
+ }
1282
+ else if (driver instanceof MysqlDriver) {
1263
1283
  return " FOR UPDATE NOWAIT";
1264
1284
  }
1265
1285
  else {
@@ -1267,7 +1287,7 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
1267
1287
  }
1268
1288
  case "for_no_key_update":
1269
1289
  if (driver instanceof PostgresDriver) {
1270
- return " FOR NO KEY UPDATE";
1290
+ return " FOR NO KEY UPDATE" + lockTablesClause;
1271
1291
  }
1272
1292
  else {
1273
1293
  throw new LockNotSupportedOnGivenDriverError();
@@ -1302,18 +1322,18 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
1302
1322
  var hasMainAlias = this.expressionMap.selects.some(function (select) { return select.selection === aliasName; });
1303
1323
  var columns = [];
1304
1324
  if (hasMainAlias) {
1305
- columns.push.apply(columns, __spread(metadata.columns.filter(function (column) { return column.isSelect === true; })));
1325
+ columns.push.apply(columns, __spreadArray([], __read(metadata.columns.filter(function (column) { return column.isSelect === true; }))));
1306
1326
  }
1307
- columns.push.apply(columns, __spread(metadata.columns.filter(function (column) {
1327
+ columns.push.apply(columns, __spreadArray([], __read(metadata.columns.filter(function (column) {
1308
1328
  return _this.expressionMap.selects.some(function (select) { return select.selection === aliasName + "." + column.propertyPath; });
1309
- })));
1329
+ }))));
1310
1330
  // if user used partial selection and did not select some primary columns which are required to be selected
1311
1331
  // we select those primary columns and mark them as "virtual". Later virtual column values will be removed from final entity
1312
1332
  // to make entity contain exactly what user selected
1313
1333
  if (columns.length === 0) // however not in the case when nothing (even partial) was selected from this target (for example joins without selection)
1314
1334
  return [];
1315
1335
  var nonSelectedPrimaryColumns = this.expressionMap.queryEntity ? metadata.primaryColumns.filter(function (primaryColumn) { return columns.indexOf(primaryColumn) === -1; }) : [];
1316
- var allColumns = __spread(columns, nonSelectedPrimaryColumns);
1336
+ var allColumns = __spreadArray(__spreadArray([], __read(columns)), __read(nonSelectedPrimaryColumns));
1317
1337
  return allColumns.map(function (column) {
1318
1338
  var selection = _this.expressionMap.selects.find(function (select) { return select.selection === aliasName + "." + column.propertyPath; });
1319
1339
  var selectionPath = _this.escape(aliasName) + "." + _this.escape(column.databaseName);