typeorm 0.2.27 → 0.2.31

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 (907) hide show
  1. package/README.md +9 -4
  2. package/browser/common/EntityFieldsNames.d.ts +6 -0
  3. package/browser/common/EntityFieldsNames.js +3 -0
  4. package/browser/common/EntityFieldsNames.js.map +1 -0
  5. package/browser/connection/Connection.d.ts +2 -2
  6. package/browser/connection/Connection.js +2 -2
  7. package/browser/connection/ConnectionMetadataBuilder.js.map +1 -1
  8. package/browser/connection/ConnectionOptionsReader.d.ts +3 -3
  9. package/browser/connection/ConnectionOptionsReader.js +30 -30
  10. package/browser/connection/ConnectionOptionsReader.js.map +1 -1
  11. package/browser/connection/options-reader/ConnectionOptionsEnvReader.js +1 -1
  12. package/browser/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
  13. package/browser/decorator/columns/PrimaryColumn.d.ts +9 -2
  14. package/browser/decorator/columns/PrimaryColumn.js.map +1 -1
  15. package/browser/decorator/entity/ChildEntity.js +1 -1
  16. package/browser/decorator/entity/ChildEntity.js.map +1 -1
  17. package/browser/decorator/options/RelationOptions.d.ts +10 -0
  18. package/browser/decorator/options/RelationOptions.js.map +1 -1
  19. package/browser/decorator/relations/ManyToOne.d.ts +6 -6
  20. package/browser/decorator/relations/ManyToOne.js +5 -5
  21. package/browser/decorator/relations/ManyToOne.js.map +1 -1
  22. package/browser/decorator/relations/OneToMany.d.ts +3 -2
  23. package/browser/decorator/relations/OneToMany.js +4 -3
  24. package/browser/decorator/relations/OneToMany.js.map +1 -1
  25. package/browser/decorator/transaction/Transaction.d.ts +1 -1
  26. package/browser/decorator/transaction/Transaction.js +2 -2
  27. package/browser/decorator/transaction/Transaction.js.map +1 -1
  28. package/browser/decorator/tree/Tree.d.ts +2 -1
  29. package/browser/decorator/tree/Tree.js +3 -2
  30. package/browser/decorator/tree/Tree.js.map +1 -1
  31. package/browser/driver/DriverFactory.js.map +1 -1
  32. package/browser/driver/DriverUtils.js +20 -12
  33. package/browser/driver/DriverUtils.js.map +1 -1
  34. package/browser/driver/aurora-data-api/AuroraDataApiDriver.d.ts +0 -1
  35. package/browser/driver/aurora-data-api/AuroraDataApiDriver.js +2 -3
  36. package/browser/driver/aurora-data-api/AuroraDataApiDriver.js.map +1 -1
  37. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.d.ts +2 -1
  38. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js +57 -9
  39. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  40. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.d.ts +1 -2
  41. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js +3 -3
  42. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js.map +1 -1
  43. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.d.ts +2 -1
  44. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js +59 -11
  45. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js.map +1 -1
  46. package/browser/driver/cockroachdb/CockroachDriver.js +3 -3
  47. package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
  48. package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +4 -0
  49. package/browser/driver/cockroachdb/CockroachQueryRunner.js +112 -42
  50. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  51. package/browser/driver/expo/ExpoQueryRunner.js +72 -14
  52. package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
  53. package/browser/driver/mongodb/MongoConnectionOptions.d.ts +4 -0
  54. package/browser/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  55. package/browser/driver/mongodb/MongoDriver.d.ts +7 -3
  56. package/browser/driver/mongodb/MongoDriver.js +19 -14
  57. package/browser/driver/mongodb/MongoDriver.js.map +1 -1
  58. package/browser/driver/mongodb/MongoQueryRunner.d.ts +3 -3
  59. package/browser/driver/mongodb/MongoQueryRunner.js.map +1 -1
  60. package/browser/driver/mysql/MysqlDriver.js +4 -4
  61. package/browser/driver/mysql/MysqlDriver.js.map +1 -1
  62. package/browser/driver/mysql/MysqlQueryRunner.d.ts +4 -0
  63. package/browser/driver/mysql/MysqlQueryRunner.js +117 -42
  64. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  65. package/browser/driver/oracle/OracleConnectionOptions.d.ts +4 -0
  66. package/browser/driver/oracle/OracleConnectionOptions.js.map +1 -1
  67. package/browser/driver/oracle/OracleDriver.js +3 -0
  68. package/browser/driver/oracle/OracleDriver.js.map +1 -1
  69. package/browser/driver/oracle/OracleQueryRunner.js +52 -6
  70. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  71. package/browser/driver/postgres/PostgresConnectionOptions.d.ts +4 -0
  72. package/browser/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  73. package/browser/driver/postgres/PostgresDriver.d.ts +1 -1
  74. package/browser/driver/postgres/PostgresDriver.js +11 -8
  75. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  76. package/browser/driver/postgres/PostgresQueryRunner.d.ts +8 -0
  77. package/browser/driver/postgres/PostgresQueryRunner.js +154 -60
  78. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  79. package/browser/driver/react-native/ReactNativeDriver.js +1 -2
  80. package/browser/driver/react-native/ReactNativeDriver.js.map +1 -1
  81. package/browser/driver/sap/SapQueryRunner.js +56 -8
  82. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  83. package/browser/driver/sqlite/SqliteQueryRunner.js +4 -0
  84. package/browser/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  85. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +55 -7
  86. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  87. package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
  88. package/browser/driver/sqlserver/SqlServerQueryRunner.js +140 -67
  89. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  90. package/browser/driver/types/ColumnTypes.d.ts +1 -1
  91. package/browser/driver/types/ColumnTypes.js.map +1 -1
  92. package/browser/entity-manager/EntityManager.d.ts +13 -13
  93. package/browser/entity-manager/EntityManager.js +5 -16
  94. package/browser/entity-manager/EntityManager.js.map +1 -1
  95. package/browser/entity-manager/MongoEntityManager.d.ts +1 -1
  96. package/browser/entity-manager/MongoEntityManager.js +15 -4
  97. package/browser/entity-manager/MongoEntityManager.js.map +1 -1
  98. package/browser/error/index.d.ts +61 -0
  99. package/browser/error/index.js +63 -0
  100. package/browser/error/index.js.map +1 -0
  101. package/browser/find-options/FindOneOptions.d.ts +6 -1
  102. package/browser/find-options/FindOneOptions.js.map +1 -1
  103. package/browser/find-options/FindOperator.d.ts +25 -6
  104. package/browser/find-options/FindOperator.js +32 -6
  105. package/browser/find-options/FindOperator.js.map +1 -1
  106. package/browser/find-options/FindOperatorType.d.ts +1 -1
  107. package/browser/find-options/FindOperatorType.js.map +1 -1
  108. package/browser/find-options/FindOptionsUtils.d.ts +2 -2
  109. package/browser/find-options/FindOptionsUtils.js +5 -1
  110. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  111. package/browser/find-options/operator/ILike.d.ts +6 -0
  112. package/browser/find-options/operator/ILike.js +10 -0
  113. package/browser/find-options/operator/ILike.js.map +1 -0
  114. package/browser/find-options/operator/Raw.d.ts +14 -2
  115. package/browser/find-options/operator/Raw.js +5 -6
  116. package/browser/find-options/operator/Raw.js.map +1 -1
  117. package/browser/index.d.ts +3 -1
  118. package/browser/index.js +2 -23
  119. package/browser/index.js.map +1 -1
  120. package/browser/logger/Logger.d.ts +1 -1
  121. package/browser/logger/Logger.js.map +1 -1
  122. package/browser/metadata/ColumnMetadata.js +16 -3
  123. package/browser/metadata/ColumnMetadata.js.map +1 -1
  124. package/browser/metadata/EntityMetadata.d.ts +5 -0
  125. package/browser/metadata/EntityMetadata.js +1 -0
  126. package/browser/metadata/EntityMetadata.js.map +1 -1
  127. package/browser/metadata/RelationMetadata.d.ts +15 -0
  128. package/browser/metadata/RelationMetadata.js +18 -2
  129. package/browser/metadata/RelationMetadata.js.map +1 -1
  130. package/browser/metadata/types/ClosureTreeOptions.d.ts +10 -0
  131. package/browser/metadata/types/ClosureTreeOptions.js +3 -0
  132. package/browser/metadata/types/ClosureTreeOptions.js.map +1 -0
  133. package/browser/metadata/types/EventListenerTypes.d.ts +7 -7
  134. package/browser/metadata/types/EventListenerTypes.js.map +1 -1
  135. package/browser/metadata-args/TreeMetadataArgs.d.ts +5 -0
  136. package/browser/metadata-args/TreeMetadataArgs.js.map +1 -1
  137. package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js +3 -3
  138. package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
  139. package/browser/metadata-builder/EntityMetadataBuilder.js +19 -9
  140. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  141. package/browser/metadata-builder/EntityMetadataValidator.js +8 -5
  142. package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
  143. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +2 -2
  144. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  145. package/browser/metadata-builder/RelationJoinColumnBuilder.d.ts +1 -0
  146. package/browser/metadata-builder/RelationJoinColumnBuilder.js +5 -5
  147. package/browser/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  148. package/browser/persistence/EntityPersistExecutor.js +55 -52
  149. package/browser/persistence/EntityPersistExecutor.js.map +1 -1
  150. package/browser/persistence/Subject.d.ts +4 -4
  151. package/browser/persistence/Subject.js +6 -5
  152. package/browser/persistence/Subject.js.map +1 -1
  153. package/browser/persistence/SubjectExecutor.js +9 -5
  154. package/browser/persistence/SubjectExecutor.js.map +1 -1
  155. package/browser/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  156. package/browser/persistence/subject-builder/OneToManySubjectBuilder.js +9 -4
  157. package/browser/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  158. package/browser/persistence/tree/ClosureSubjectExecutor.d.ts +1 -1
  159. package/browser/persistence/tree/ClosureSubjectExecutor.js +5 -5
  160. package/browser/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  161. package/browser/query-builder/Alias.d.ts +3 -4
  162. package/browser/query-builder/Alias.js +3 -3
  163. package/browser/query-builder/DeleteQueryBuilder.js +2 -1
  164. package/browser/query-builder/DeleteQueryBuilder.js.map +1 -1
  165. package/browser/query-builder/InsertQueryBuilder.d.ts +6 -0
  166. package/browser/query-builder/InsertQueryBuilder.js +62 -13
  167. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  168. package/browser/query-builder/JoinAttribute.d.ts +10 -10
  169. package/browser/query-builder/JoinAttribute.js +10 -10
  170. package/browser/query-builder/QueryBuilder.d.ts +8 -1
  171. package/browser/query-builder/QueryBuilder.js +168 -33
  172. package/browser/query-builder/QueryBuilder.js.map +1 -1
  173. package/browser/query-builder/QueryBuilderUtils.js.map +1 -1
  174. package/browser/query-builder/QueryExpressionMap.d.ts +6 -2
  175. package/browser/query-builder/QueryExpressionMap.js +3 -2
  176. package/browser/query-builder/QueryExpressionMap.js.map +1 -1
  177. package/browser/query-builder/RelationLoader.js +1 -1
  178. package/browser/query-builder/RelationLoader.js.map +1 -1
  179. package/browser/query-builder/SelectQueryBuilder.d.ts +5 -0
  180. package/browser/query-builder/SelectQueryBuilder.js +98 -56
  181. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  182. package/browser/query-builder/UpdateQueryBuilder.js +2 -1
  183. package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
  184. package/browser/query-builder/relation-count/RelationCountAttribute.d.ts +7 -7
  185. package/browser/query-builder/relation-count/RelationCountAttribute.js +7 -7
  186. package/browser/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
  187. package/browser/query-builder/relation-id/RelationIdAttribute.d.ts +8 -8
  188. package/browser/query-builder/relation-id/RelationIdAttribute.js +8 -8
  189. package/browser/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
  190. package/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js +3 -3
  191. package/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
  192. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js +6 -3
  193. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  194. package/browser/query-runner/QueryRunner.d.ts +1 -1
  195. package/browser/query-runner/QueryRunner.js.map +1 -1
  196. package/browser/repository/AbstractRepository.d.ts +2 -2
  197. package/browser/repository/AbstractRepository.js +2 -2
  198. package/browser/repository/BaseEntity.d.ts +1 -1
  199. package/browser/repository/BaseEntity.js +1 -1
  200. package/browser/repository/Repository.d.ts +4 -4
  201. package/browser/repository/Repository.js +1 -1
  202. package/browser/repository/Repository.js.map +1 -1
  203. package/browser/repository/TreeRepository.js +2 -2
  204. package/browser/repository/TreeRepository.js.map +1 -1
  205. package/browser/schema-builder/RdbmsSchemaBuilder.d.ts +2 -2
  206. package/browser/schema-builder/RdbmsSchemaBuilder.js +4 -3
  207. package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  208. package/browser/schema-builder/options/TableForeignKeyOptions.js.map +1 -1
  209. package/browser/schema-builder/table/Table.d.ts +1 -1
  210. package/browser/schema-builder/table/Table.js +1 -1
  211. package/browser/subscriber/Broadcaster.d.ts +24 -0
  212. package/browser/subscriber/Broadcaster.js +120 -0
  213. package/browser/subscriber/Broadcaster.js.map +1 -1
  214. package/browser/subscriber/EntitySubscriberInterface.d.ts +27 -0
  215. package/browser/subscriber/EntitySubscriberInterface.js.map +1 -1
  216. package/browser/subscriber/event/TransactionCommitEvent.d.ts +22 -0
  217. package/browser/subscriber/event/TransactionCommitEvent.js +3 -0
  218. package/browser/subscriber/event/TransactionCommitEvent.js.map +1 -0
  219. package/browser/subscriber/event/TransactionRollbackEvent.d.ts +22 -0
  220. package/browser/subscriber/event/TransactionRollbackEvent.js +3 -0
  221. package/browser/subscriber/event/TransactionRollbackEvent.js.map +1 -0
  222. package/browser/subscriber/event/TransactionStartEvent.d.ts +22 -0
  223. package/browser/subscriber/event/TransactionStartEvent.js +3 -0
  224. package/browser/subscriber/event/TransactionStartEvent.js.map +1 -0
  225. package/browser/util/DateUtils.d.ts +1 -1
  226. package/browser/util/DateUtils.js +1 -7
  227. package/browser/util/DateUtils.js.map +1 -1
  228. package/browser/util/StringUtils.js.map +1 -1
  229. package/cache/DbQueryResultCache.js +0 -1
  230. package/cache/DbQueryResultCache.js.map +1 -1
  231. package/cache/QueryResultCacheFactory.js +0 -1
  232. package/cache/QueryResultCacheFactory.js.map +1 -1
  233. package/cache/RedisQueryResultCache.js +0 -1
  234. package/cache/RedisQueryResultCache.js.map +1 -1
  235. package/cli.js +2 -2
  236. package/cli.js.map +1 -1
  237. package/commands/CacheClearCommand.js +0 -1
  238. package/commands/CacheClearCommand.js.map +1 -1
  239. package/commands/CommandUtils.js +0 -1
  240. package/commands/CommandUtils.js.map +1 -1
  241. package/commands/EntityCreateCommand.js +5 -3
  242. package/commands/EntityCreateCommand.js.map +1 -1
  243. package/commands/InitCommand.js +1 -2
  244. package/commands/InitCommand.js.map +1 -1
  245. package/commands/MigrationCreateCommand.d.ts +6 -0
  246. package/commands/MigrationCreateCommand.js +22 -5
  247. package/commands/MigrationCreateCommand.js.map +1 -1
  248. package/commands/MigrationGenerateCommand.d.ts +6 -0
  249. package/commands/MigrationGenerateCommand.js +44 -31
  250. package/commands/MigrationGenerateCommand.js.map +1 -1
  251. package/commands/MigrationRevertCommand.js +0 -1
  252. package/commands/MigrationRevertCommand.js.map +1 -1
  253. package/commands/MigrationRunCommand.js +0 -1
  254. package/commands/MigrationRunCommand.js.map +1 -1
  255. package/commands/MigrationShowCommand.js +0 -1
  256. package/commands/MigrationShowCommand.js.map +1 -1
  257. package/commands/QueryCommand.d.ts +2 -0
  258. package/commands/QueryCommand.js +16 -7
  259. package/commands/QueryCommand.js.map +1 -1
  260. package/commands/SchemaDropCommand.js +0 -1
  261. package/commands/SchemaDropCommand.js.map +1 -1
  262. package/commands/SchemaLogCommand.js +0 -1
  263. package/commands/SchemaLogCommand.js.map +1 -1
  264. package/commands/SchemaSyncCommand.js +0 -1
  265. package/commands/SchemaSyncCommand.js.map +1 -1
  266. package/commands/SubscriberCreateCommand.js +5 -3
  267. package/commands/SubscriberCreateCommand.js.map +1 -1
  268. package/commands/VersionCommand.js +0 -1
  269. package/commands/VersionCommand.js.map +1 -1
  270. package/common/EntityFieldsNames.d.ts +6 -0
  271. package/common/EntityFieldsNames.js +4 -0
  272. package/common/EntityFieldsNames.js.map +1 -0
  273. package/connection/Connection.d.ts +2 -2
  274. package/connection/Connection.js +2 -3
  275. package/connection/Connection.js.map +1 -1
  276. package/connection/ConnectionManager.js +0 -1
  277. package/connection/ConnectionManager.js.map +1 -1
  278. package/connection/ConnectionMetadataBuilder.js +0 -1
  279. package/connection/ConnectionMetadataBuilder.js.map +1 -1
  280. package/connection/ConnectionOptionsReader.d.ts +3 -3
  281. package/connection/ConnectionOptionsReader.js +30 -31
  282. package/connection/ConnectionOptionsReader.js.map +1 -1
  283. package/connection/options-reader/ConnectionOptionsEnvReader.js +1 -2
  284. package/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
  285. package/connection/options-reader/ConnectionOptionsXmlReader.js +0 -1
  286. package/connection/options-reader/ConnectionOptionsXmlReader.js.map +1 -1
  287. package/connection/options-reader/ConnectionOptionsYmlReader.js +0 -1
  288. package/connection/options-reader/ConnectionOptionsYmlReader.js.map +1 -1
  289. package/container.js +0 -1
  290. package/container.js.map +1 -1
  291. package/decorator/Check.js +0 -1
  292. package/decorator/Check.js.map +1 -1
  293. package/decorator/EntityRepository.js +0 -1
  294. package/decorator/EntityRepository.js.map +1 -1
  295. package/decorator/Exclusion.js +0 -1
  296. package/decorator/Exclusion.js.map +1 -1
  297. package/decorator/Generated.js +0 -1
  298. package/decorator/Generated.js.map +1 -1
  299. package/decorator/Index.js +0 -1
  300. package/decorator/Index.js.map +1 -1
  301. package/decorator/Unique.js +0 -1
  302. package/decorator/Unique.js.map +1 -1
  303. package/decorator/columns/Column.js +0 -1
  304. package/decorator/columns/Column.js.map +1 -1
  305. package/decorator/columns/CreateDateColumn.js +0 -1
  306. package/decorator/columns/CreateDateColumn.js.map +1 -1
  307. package/decorator/columns/DeleteDateColumn.js +0 -1
  308. package/decorator/columns/DeleteDateColumn.js.map +1 -1
  309. package/decorator/columns/ObjectIdColumn.js +0 -1
  310. package/decorator/columns/ObjectIdColumn.js.map +1 -1
  311. package/decorator/columns/PrimaryColumn.d.ts +9 -2
  312. package/decorator/columns/PrimaryColumn.js +0 -1
  313. package/decorator/columns/PrimaryColumn.js.map +1 -1
  314. package/decorator/columns/PrimaryGeneratedColumn.js +0 -1
  315. package/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
  316. package/decorator/columns/UpdateDateColumn.js +0 -1
  317. package/decorator/columns/UpdateDateColumn.js.map +1 -1
  318. package/decorator/columns/VersionColumn.js +0 -1
  319. package/decorator/columns/VersionColumn.js.map +1 -1
  320. package/decorator/columns/ViewColumn.js +0 -1
  321. package/decorator/columns/ViewColumn.js.map +1 -1
  322. package/decorator/entity/ChildEntity.js +1 -2
  323. package/decorator/entity/ChildEntity.js.map +1 -1
  324. package/decorator/entity/Entity.js +0 -1
  325. package/decorator/entity/Entity.js.map +1 -1
  326. package/decorator/entity/TableInheritance.js +0 -1
  327. package/decorator/entity/TableInheritance.js.map +1 -1
  328. package/decorator/entity-view/ViewEntity.js +0 -1
  329. package/decorator/entity-view/ViewEntity.js.map +1 -1
  330. package/decorator/listeners/AfterInsert.js +0 -1
  331. package/decorator/listeners/AfterInsert.js.map +1 -1
  332. package/decorator/listeners/AfterLoad.js +0 -1
  333. package/decorator/listeners/AfterLoad.js.map +1 -1
  334. package/decorator/listeners/AfterRemove.js +0 -1
  335. package/decorator/listeners/AfterRemove.js.map +1 -1
  336. package/decorator/listeners/AfterUpdate.js +0 -1
  337. package/decorator/listeners/AfterUpdate.js.map +1 -1
  338. package/decorator/listeners/BeforeInsert.js +0 -1
  339. package/decorator/listeners/BeforeInsert.js.map +1 -1
  340. package/decorator/listeners/BeforeRemove.js +0 -1
  341. package/decorator/listeners/BeforeRemove.js.map +1 -1
  342. package/decorator/listeners/BeforeUpdate.js +0 -1
  343. package/decorator/listeners/BeforeUpdate.js.map +1 -1
  344. package/decorator/listeners/EventSubscriber.js +0 -1
  345. package/decorator/listeners/EventSubscriber.js.map +1 -1
  346. package/decorator/options/RelationOptions.d.ts +10 -0
  347. package/decorator/options/RelationOptions.js.map +1 -1
  348. package/decorator/relations/JoinColumn.js +0 -1
  349. package/decorator/relations/JoinColumn.js.map +1 -1
  350. package/decorator/relations/JoinTable.js +0 -1
  351. package/decorator/relations/JoinTable.js.map +1 -1
  352. package/decorator/relations/ManyToMany.js +0 -1
  353. package/decorator/relations/ManyToMany.js.map +1 -1
  354. package/decorator/relations/ManyToOne.d.ts +6 -6
  355. package/decorator/relations/ManyToOne.js +5 -6
  356. package/decorator/relations/ManyToOne.js.map +1 -1
  357. package/decorator/relations/OneToMany.d.ts +3 -2
  358. package/decorator/relations/OneToMany.js +4 -4
  359. package/decorator/relations/OneToMany.js.map +1 -1
  360. package/decorator/relations/OneToOne.js +0 -1
  361. package/decorator/relations/OneToOne.js.map +1 -1
  362. package/decorator/relations/RelationCount.js +0 -1
  363. package/decorator/relations/RelationCount.js.map +1 -1
  364. package/decorator/relations/RelationId.js +0 -1
  365. package/decorator/relations/RelationId.js.map +1 -1
  366. package/decorator/transaction/Transaction.d.ts +1 -1
  367. package/decorator/transaction/Transaction.js +2 -3
  368. package/decorator/transaction/Transaction.js.map +1 -1
  369. package/decorator/transaction/TransactionManager.js +0 -1
  370. package/decorator/transaction/TransactionManager.js.map +1 -1
  371. package/decorator/transaction/TransactionRepository.js +0 -1
  372. package/decorator/transaction/TransactionRepository.js.map +1 -1
  373. package/decorator/tree/Tree.d.ts +2 -1
  374. package/decorator/tree/Tree.js +3 -3
  375. package/decorator/tree/Tree.js.map +1 -1
  376. package/decorator/tree/TreeChildren.js +0 -1
  377. package/decorator/tree/TreeChildren.js.map +1 -1
  378. package/decorator/tree/TreeLevelColumn.js +0 -1
  379. package/decorator/tree/TreeLevelColumn.js.map +1 -1
  380. package/decorator/tree/TreeParent.js +0 -1
  381. package/decorator/tree/TreeParent.js.map +1 -1
  382. package/driver/DriverFactory.js +0 -1
  383. package/driver/DriverFactory.js.map +1 -1
  384. package/driver/DriverUtils.js +19 -12
  385. package/driver/DriverUtils.js.map +1 -1
  386. package/driver/Query.js +0 -1
  387. package/driver/Query.js.map +1 -1
  388. package/driver/SqlInMemory.js +0 -1
  389. package/driver/SqlInMemory.js.map +1 -1
  390. package/driver/aurora-data-api/AuroraDataApiConnection.js +0 -1
  391. package/driver/aurora-data-api/AuroraDataApiConnection.js.map +1 -1
  392. package/driver/aurora-data-api/AuroraDataApiDriver.d.ts +0 -1
  393. package/driver/aurora-data-api/AuroraDataApiDriver.js +2 -4
  394. package/driver/aurora-data-api/AuroraDataApiDriver.js.map +1 -1
  395. package/driver/aurora-data-api/AuroraDataApiQueryRunner.d.ts +2 -1
  396. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js +57 -10
  397. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  398. package/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.d.ts +1 -2
  399. package/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js +3 -4
  400. package/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js.map +1 -1
  401. package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.d.ts +2 -1
  402. package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js +59 -12
  403. package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js.map +1 -1
  404. package/driver/better-sqlite3/BetterSqlite3Driver.js +0 -1
  405. package/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  406. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js +0 -1
  407. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  408. package/driver/cockroachdb/CockroachDriver.js +3 -4
  409. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  410. package/driver/cockroachdb/CockroachQueryRunner.d.ts +4 -0
  411. package/driver/cockroachdb/CockroachQueryRunner.js +112 -43
  412. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  413. package/driver/cordova/CordovaDriver.js +0 -1
  414. package/driver/cordova/CordovaDriver.js.map +1 -1
  415. package/driver/cordova/CordovaQueryRunner.js +0 -1
  416. package/driver/cordova/CordovaQueryRunner.js.map +1 -1
  417. package/driver/expo/ExpoDriver.js +0 -1
  418. package/driver/expo/ExpoDriver.js.map +1 -1
  419. package/driver/expo/ExpoQueryRunner.js +72 -15
  420. package/driver/expo/ExpoQueryRunner.js.map +1 -1
  421. package/driver/mongodb/MongoConnectionOptions.d.ts +4 -0
  422. package/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  423. package/driver/mongodb/MongoDriver.d.ts +7 -3
  424. package/driver/mongodb/MongoDriver.js +19 -15
  425. package/driver/mongodb/MongoDriver.js.map +1 -1
  426. package/driver/mongodb/MongoQueryRunner.d.ts +3 -3
  427. package/driver/mongodb/MongoQueryRunner.js +0 -1
  428. package/driver/mongodb/MongoQueryRunner.js.map +1 -1
  429. package/driver/mysql/MysqlDriver.js +4 -5
  430. package/driver/mysql/MysqlDriver.js.map +1 -1
  431. package/driver/mysql/MysqlQueryRunner.d.ts +4 -0
  432. package/driver/mysql/MysqlQueryRunner.js +117 -43
  433. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  434. package/driver/nativescript/NativescriptDriver.js +0 -1
  435. package/driver/nativescript/NativescriptDriver.js.map +1 -1
  436. package/driver/nativescript/NativescriptQueryRunner.js +0 -1
  437. package/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  438. package/driver/oracle/OracleConnectionOptions.d.ts +4 -0
  439. package/driver/oracle/OracleConnectionOptions.js.map +1 -1
  440. package/driver/oracle/OracleDriver.js +3 -1
  441. package/driver/oracle/OracleDriver.js.map +1 -1
  442. package/driver/oracle/OracleQueryRunner.js +52 -7
  443. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  444. package/driver/postgres/PostgresConnectionOptions.d.ts +4 -0
  445. package/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  446. package/driver/postgres/PostgresDriver.d.ts +1 -1
  447. package/driver/postgres/PostgresDriver.js +11 -9
  448. package/driver/postgres/PostgresDriver.js.map +1 -1
  449. package/driver/postgres/PostgresQueryRunner.d.ts +8 -0
  450. package/driver/postgres/PostgresQueryRunner.js +155 -61
  451. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  452. package/driver/react-native/ReactNativeDriver.js +1 -3
  453. package/driver/react-native/ReactNativeDriver.js.map +1 -1
  454. package/driver/react-native/ReactNativeQueryRunner.js +0 -1
  455. package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  456. package/driver/sap/SapDriver.js +0 -1
  457. package/driver/sap/SapDriver.js.map +1 -1
  458. package/driver/sap/SapQueryRunner.js +56 -9
  459. package/driver/sap/SapQueryRunner.js.map +1 -1
  460. package/driver/sqlite/SqliteDriver.js +0 -1
  461. package/driver/sqlite/SqliteDriver.js.map +1 -1
  462. package/driver/sqlite/SqliteQueryRunner.js +4 -1
  463. package/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  464. package/driver/sqlite-abstract/AbstractSqliteDriver.js +0 -1
  465. package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  466. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +55 -8
  467. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  468. package/driver/sqljs/SqljsDriver.js +0 -1
  469. package/driver/sqljs/SqljsDriver.js.map +1 -1
  470. package/driver/sqljs/SqljsQueryRunner.js +0 -1
  471. package/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  472. package/driver/sqlserver/MssqlParameter.js +0 -1
  473. package/driver/sqlserver/MssqlParameter.js.map +1 -1
  474. package/driver/sqlserver/SqlServerDriver.js +0 -1
  475. package/driver/sqlserver/SqlServerDriver.js.map +1 -1
  476. package/driver/sqlserver/SqlServerQueryRunner.js +140 -68
  477. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  478. package/driver/types/ColumnTypes.d.ts +1 -1
  479. package/driver/types/ColumnTypes.js.map +1 -1
  480. package/entity-manager/EntityManager.d.ts +13 -13
  481. package/entity-manager/EntityManager.js +5 -17
  482. package/entity-manager/EntityManager.js.map +1 -1
  483. package/entity-manager/EntityManagerFactory.js +0 -1
  484. package/entity-manager/EntityManagerFactory.js.map +1 -1
  485. package/entity-manager/MongoEntityManager.d.ts +1 -1
  486. package/entity-manager/MongoEntityManager.js +15 -5
  487. package/entity-manager/MongoEntityManager.js.map +1 -1
  488. package/entity-manager/SqljsEntityManager.js +0 -1
  489. package/entity-manager/SqljsEntityManager.js.map +1 -1
  490. package/entity-schema/EntitySchema.js +0 -1
  491. package/entity-schema/EntitySchema.js.map +1 -1
  492. package/entity-schema/EntitySchemaOptions.js +0 -1
  493. package/entity-schema/EntitySchemaOptions.js.map +1 -1
  494. package/entity-schema/EntitySchemaTransformer.js +0 -1
  495. package/entity-schema/EntitySchemaTransformer.js.map +1 -1
  496. package/error/AlreadyHasActiveConnectionError.js +0 -1
  497. package/error/AlreadyHasActiveConnectionError.js.map +1 -1
  498. package/error/CannotAttachTreeChildrenEntityError.js +0 -1
  499. package/error/CannotAttachTreeChildrenEntityError.js.map +1 -1
  500. package/error/CannotConnectAlreadyConnectedError.js +0 -1
  501. package/error/CannotConnectAlreadyConnectedError.js.map +1 -1
  502. package/error/CannotCreateEntityIdMapError.js +0 -1
  503. package/error/CannotCreateEntityIdMapError.js.map +1 -1
  504. package/error/CannotDetermineEntityError.js +0 -1
  505. package/error/CannotDetermineEntityError.js.map +1 -1
  506. package/error/CannotExecuteNotConnectedError.js +0 -1
  507. package/error/CannotExecuteNotConnectedError.js.map +1 -1
  508. package/error/CannotGetEntityManagerNotConnectedError.js +0 -1
  509. package/error/CannotGetEntityManagerNotConnectedError.js.map +1 -1
  510. package/error/CannotReflectMethodParameterTypeError.js +0 -1
  511. package/error/CannotReflectMethodParameterTypeError.js.map +1 -1
  512. package/error/CircularRelationsError.js +0 -1
  513. package/error/CircularRelationsError.js.map +1 -1
  514. package/error/ColumnTypeUndefinedError.js +0 -1
  515. package/error/ColumnTypeUndefinedError.js.map +1 -1
  516. package/error/ConnectionIsNotSetError.js +0 -1
  517. package/error/ConnectionIsNotSetError.js.map +1 -1
  518. package/error/ConnectionNotFoundError.js +0 -1
  519. package/error/ConnectionNotFoundError.js.map +1 -1
  520. package/error/CustomRepositoryCannotInheritRepositoryError.js +0 -1
  521. package/error/CustomRepositoryCannotInheritRepositoryError.js.map +1 -1
  522. package/error/CustomRepositoryDoesNotHaveEntityError.js +0 -1
  523. package/error/CustomRepositoryDoesNotHaveEntityError.js.map +1 -1
  524. package/error/CustomRepositoryNotFoundError.js +0 -1
  525. package/error/CustomRepositoryNotFoundError.js.map +1 -1
  526. package/error/DataTypeNotSupportedError.js +0 -1
  527. package/error/DataTypeNotSupportedError.js.map +1 -1
  528. package/error/DriverOptionNotSetError.js +0 -1
  529. package/error/DriverOptionNotSetError.js.map +1 -1
  530. package/error/DriverPackageNotInstalledError.js +0 -1
  531. package/error/DriverPackageNotInstalledError.js.map +1 -1
  532. package/error/EntityColumnNotFound.js +0 -1
  533. package/error/EntityColumnNotFound.js.map +1 -1
  534. package/error/EntityMetadataNotFoundError.js +0 -1
  535. package/error/EntityMetadataNotFoundError.js.map +1 -1
  536. package/error/EntityNotFoundError.js +0 -1
  537. package/error/EntityNotFoundError.js.map +1 -1
  538. package/error/FindRelationsNotFoundError.js +0 -1
  539. package/error/FindRelationsNotFoundError.js.map +1 -1
  540. package/error/InitializedRelationError.js +0 -1
  541. package/error/InitializedRelationError.js.map +1 -1
  542. package/error/InsertValuesMissingError.js +0 -1
  543. package/error/InsertValuesMissingError.js.map +1 -1
  544. package/error/LimitOnUpdateNotSupportedError.js +0 -1
  545. package/error/LimitOnUpdateNotSupportedError.js.map +1 -1
  546. package/error/LockNotSupportedOnGivenDriverError.js +0 -1
  547. package/error/LockNotSupportedOnGivenDriverError.js.map +1 -1
  548. package/error/MetadataAlreadyExistsError.js +0 -1
  549. package/error/MetadataAlreadyExistsError.js.map +1 -1
  550. package/error/MetadataWithSuchNameAlreadyExistsError.js +0 -1
  551. package/error/MetadataWithSuchNameAlreadyExistsError.js.map +1 -1
  552. package/error/MissingDeleteDateColumnError.js +0 -1
  553. package/error/MissingDeleteDateColumnError.js.map +1 -1
  554. package/error/MissingDriverError.js +0 -1
  555. package/error/MissingDriverError.js.map +1 -1
  556. package/error/MissingJoinColumnError.js +0 -1
  557. package/error/MissingJoinColumnError.js.map +1 -1
  558. package/error/MissingJoinTableError.js +0 -1
  559. package/error/MissingJoinTableError.js.map +1 -1
  560. package/error/MissingPrimaryColumnError.js +0 -1
  561. package/error/MissingPrimaryColumnError.js.map +1 -1
  562. package/error/MustBeEntityError.js +0 -1
  563. package/error/MustBeEntityError.js.map +1 -1
  564. package/error/NamingStrategyNotFoundError.js +0 -1
  565. package/error/NamingStrategyNotFoundError.js.map +1 -1
  566. package/error/NoConnectionForRepositoryError.js +0 -1
  567. package/error/NoConnectionForRepositoryError.js.map +1 -1
  568. package/error/NoConnectionOptionError.js +0 -1
  569. package/error/NoConnectionOptionError.js.map +1 -1
  570. package/error/NoNeedToReleaseEntityManagerError.js +0 -1
  571. package/error/NoNeedToReleaseEntityManagerError.js.map +1 -1
  572. package/error/NoVersionOrUpdateDateColumnError.js +0 -1
  573. package/error/NoVersionOrUpdateDateColumnError.js.map +1 -1
  574. package/error/OffsetWithoutLimitNotSupportedError.js +0 -1
  575. package/error/OffsetWithoutLimitNotSupportedError.js.map +1 -1
  576. package/error/OptimisticLockCanNotBeUsedError.js +0 -1
  577. package/error/OptimisticLockCanNotBeUsedError.js.map +1 -1
  578. package/error/OptimisticLockVersionMismatchError.js +0 -1
  579. package/error/OptimisticLockVersionMismatchError.js.map +1 -1
  580. package/error/PersistedEntityNotFoundError.js +0 -1
  581. package/error/PersistedEntityNotFoundError.js.map +1 -1
  582. package/error/PessimisticLockTransactionRequiredError.js +0 -1
  583. package/error/PessimisticLockTransactionRequiredError.js.map +1 -1
  584. package/error/PrimaryColumnCannotBeNullableError.js +0 -1
  585. package/error/PrimaryColumnCannotBeNullableError.js.map +1 -1
  586. package/error/QueryFailedError.js +0 -1
  587. package/error/QueryFailedError.js.map +1 -1
  588. package/error/QueryRunnerAlreadyReleasedError.js +0 -1
  589. package/error/QueryRunnerAlreadyReleasedError.js.map +1 -1
  590. package/error/QueryRunnerProviderAlreadyReleasedError.js +0 -1
  591. package/error/QueryRunnerProviderAlreadyReleasedError.js.map +1 -1
  592. package/error/RepositoryNotFoundError.js +0 -1
  593. package/error/RepositoryNotFoundError.js.map +1 -1
  594. package/error/RepositoryNotTreeError.js +0 -1
  595. package/error/RepositoryNotTreeError.js.map +1 -1
  596. package/error/ReturningStatementNotSupportedError.js +0 -1
  597. package/error/ReturningStatementNotSupportedError.js.map +1 -1
  598. package/error/SubjectRemovedAndUpdatedError.js +0 -1
  599. package/error/SubjectRemovedAndUpdatedError.js.map +1 -1
  600. package/error/SubjectWithoutIdentifierError.js +0 -1
  601. package/error/SubjectWithoutIdentifierError.js.map +1 -1
  602. package/error/TransactionAlreadyStartedError.js +0 -1
  603. package/error/TransactionAlreadyStartedError.js.map +1 -1
  604. package/error/TransactionNotStartedError.js +0 -1
  605. package/error/TransactionNotStartedError.js.map +1 -1
  606. package/error/TreeRepositoryNotSupportedError.js +0 -1
  607. package/error/TreeRepositoryNotSupportedError.js.map +1 -1
  608. package/error/UpdateValuesMissingError.js +0 -1
  609. package/error/UpdateValuesMissingError.js.map +1 -1
  610. package/error/UsingJoinColumnIsNotAllowedError.js +0 -1
  611. package/error/UsingJoinColumnIsNotAllowedError.js.map +1 -1
  612. package/error/UsingJoinColumnOnlyOnOneSideAllowedError.js +0 -1
  613. package/error/UsingJoinColumnOnlyOnOneSideAllowedError.js.map +1 -1
  614. package/error/UsingJoinTableIsNotAllowedError.js +0 -1
  615. package/error/UsingJoinTableIsNotAllowedError.js.map +1 -1
  616. package/error/UsingJoinTableOnlyOnOneSideAllowedError.js +0 -1
  617. package/error/UsingJoinTableOnlyOnOneSideAllowedError.js.map +1 -1
  618. package/error/index.d.ts +61 -0
  619. package/error/index.js +66 -0
  620. package/error/index.js.map +1 -0
  621. package/find-options/FindOneOptions.d.ts +6 -1
  622. package/find-options/FindOneOptions.js.map +1 -1
  623. package/find-options/FindOperator.d.ts +25 -6
  624. package/find-options/FindOperator.js +32 -7
  625. package/find-options/FindOperator.js.map +1 -1
  626. package/find-options/FindOperatorType.d.ts +1 -1
  627. package/find-options/FindOperatorType.js.map +1 -1
  628. package/find-options/FindOptionsUtils.d.ts +2 -2
  629. package/find-options/FindOptionsUtils.js +5 -2
  630. package/find-options/FindOptionsUtils.js.map +1 -1
  631. package/find-options/operator/Any.js +0 -1
  632. package/find-options/operator/Any.js.map +1 -1
  633. package/find-options/operator/Between.js +0 -1
  634. package/find-options/operator/Between.js.map +1 -1
  635. package/find-options/operator/Equal.js +0 -1
  636. package/find-options/operator/Equal.js.map +1 -1
  637. package/find-options/operator/ILike.d.ts +6 -0
  638. package/find-options/operator/ILike.js +13 -0
  639. package/find-options/operator/ILike.js.map +1 -0
  640. package/find-options/operator/In.js +0 -1
  641. package/find-options/operator/In.js.map +1 -1
  642. package/find-options/operator/IsNull.js +0 -1
  643. package/find-options/operator/IsNull.js.map +1 -1
  644. package/find-options/operator/LessThan.js +0 -1
  645. package/find-options/operator/LessThan.js.map +1 -1
  646. package/find-options/operator/LessThanOrEqual.js +0 -1
  647. package/find-options/operator/LessThanOrEqual.js.map +1 -1
  648. package/find-options/operator/Like.js +0 -1
  649. package/find-options/operator/Like.js.map +1 -1
  650. package/find-options/operator/MoreThan.js +0 -1
  651. package/find-options/operator/MoreThan.js.map +1 -1
  652. package/find-options/operator/MoreThanOrEqual.js +0 -1
  653. package/find-options/operator/MoreThanOrEqual.js.map +1 -1
  654. package/find-options/operator/Not.js +0 -1
  655. package/find-options/operator/Not.js.map +1 -1
  656. package/find-options/operator/Raw.d.ts +14 -2
  657. package/find-options/operator/Raw.js +5 -7
  658. package/find-options/operator/Raw.js.map +1 -1
  659. package/index.d.ts +3 -1
  660. package/index.js +20 -42
  661. package/index.js.map +1 -1
  662. package/logger/AdvancedConsoleLogger.js +0 -1
  663. package/logger/AdvancedConsoleLogger.js.map +1 -1
  664. package/logger/DebugLogger.js +0 -1
  665. package/logger/DebugLogger.js.map +1 -1
  666. package/logger/FileLogger.js +0 -1
  667. package/logger/FileLogger.js.map +1 -1
  668. package/logger/Logger.d.ts +1 -1
  669. package/logger/Logger.js.map +1 -1
  670. package/logger/LoggerFactory.js +0 -1
  671. package/logger/LoggerFactory.js.map +1 -1
  672. package/logger/SimpleConsoleLogger.js +0 -1
  673. package/logger/SimpleConsoleLogger.js.map +1 -1
  674. package/metadata/CheckMetadata.js +0 -1
  675. package/metadata/CheckMetadata.js.map +1 -1
  676. package/metadata/ColumnMetadata.js +16 -4
  677. package/metadata/ColumnMetadata.js.map +1 -1
  678. package/metadata/EmbeddedMetadata.js +0 -1
  679. package/metadata/EmbeddedMetadata.js.map +1 -1
  680. package/metadata/EntityListenerMetadata.js +0 -1
  681. package/metadata/EntityListenerMetadata.js.map +1 -1
  682. package/metadata/EntityMetadata.d.ts +5 -0
  683. package/metadata/EntityMetadata.js +1 -1
  684. package/metadata/EntityMetadata.js.map +1 -1
  685. package/metadata/ExclusionMetadata.js +0 -1
  686. package/metadata/ExclusionMetadata.js.map +1 -1
  687. package/metadata/ForeignKeyMetadata.js +0 -1
  688. package/metadata/ForeignKeyMetadata.js.map +1 -1
  689. package/metadata/IndexMetadata.js +0 -1
  690. package/metadata/IndexMetadata.js.map +1 -1
  691. package/metadata/RelationCountMetadata.js +0 -1
  692. package/metadata/RelationCountMetadata.js.map +1 -1
  693. package/metadata/RelationIdMetadata.js +0 -1
  694. package/metadata/RelationIdMetadata.js.map +1 -1
  695. package/metadata/RelationMetadata.d.ts +15 -0
  696. package/metadata/RelationMetadata.js +18 -3
  697. package/metadata/RelationMetadata.js.map +1 -1
  698. package/metadata/UniqueMetadata.js +0 -1
  699. package/metadata/UniqueMetadata.js.map +1 -1
  700. package/metadata/types/ClosureTreeOptions.d.ts +10 -0
  701. package/metadata/types/ClosureTreeOptions.js +4 -0
  702. package/metadata/types/ClosureTreeOptions.js.map +1 -0
  703. package/metadata/types/EventListenerTypes.d.ts +7 -7
  704. package/metadata/types/EventListenerTypes.js +0 -1
  705. package/metadata/types/EventListenerTypes.js.map +1 -1
  706. package/metadata-args/MetadataArgsStorage.js +0 -1
  707. package/metadata-args/MetadataArgsStorage.js.map +1 -1
  708. package/metadata-args/TreeMetadataArgs.d.ts +5 -0
  709. package/metadata-args/TreeMetadataArgs.js.map +1 -1
  710. package/metadata-builder/ClosureJunctionEntityMetadataBuilder.js +3 -4
  711. package/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
  712. package/metadata-builder/EntityMetadataBuilder.js +19 -10
  713. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  714. package/metadata-builder/EntityMetadataValidator.js +8 -6
  715. package/metadata-builder/EntityMetadataValidator.js.map +1 -1
  716. package/metadata-builder/JunctionEntityMetadataBuilder.js +2 -3
  717. package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  718. package/metadata-builder/MetadataUtils.js +0 -1
  719. package/metadata-builder/MetadataUtils.js.map +1 -1
  720. package/metadata-builder/RelationJoinColumnBuilder.d.ts +1 -0
  721. package/metadata-builder/RelationJoinColumnBuilder.js +5 -6
  722. package/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  723. package/migration/Migration.js +0 -1
  724. package/migration/Migration.js.map +1 -1
  725. package/migration/MigrationExecutor.js +0 -1
  726. package/migration/MigrationExecutor.js.map +1 -1
  727. package/naming-strategy/DefaultNamingStrategy.js +0 -1
  728. package/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  729. package/package.json +7 -5
  730. package/persistence/EntityPersistExecutor.js +55 -53
  731. package/persistence/EntityPersistExecutor.js.map +1 -1
  732. package/persistence/Subject.d.ts +4 -4
  733. package/persistence/Subject.js +6 -6
  734. package/persistence/Subject.js.map +1 -1
  735. package/persistence/SubjectChangedColumnsComputer.js +0 -1
  736. package/persistence/SubjectChangedColumnsComputer.js.map +1 -1
  737. package/persistence/SubjectDatabaseEntityLoader.js +0 -1
  738. package/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  739. package/persistence/SubjectExecutor.js +9 -6
  740. package/persistence/SubjectExecutor.js.map +1 -1
  741. package/persistence/SubjectTopoligicalSorter.js +0 -1
  742. package/persistence/SubjectTopoligicalSorter.js.map +1 -1
  743. package/persistence/subject-builder/CascadesSubjectBuilder.js +0 -1
  744. package/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  745. package/persistence/subject-builder/ManyToManySubjectBuilder.js +0 -1
  746. package/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  747. package/persistence/subject-builder/OneToManySubjectBuilder.js +9 -5
  748. package/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  749. package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +0 -1
  750. package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
  751. package/persistence/tree/ClosureSubjectExecutor.d.ts +1 -1
  752. package/persistence/tree/ClosureSubjectExecutor.js +5 -6
  753. package/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  754. package/persistence/tree/MaterializedPathSubjectExecutor.js +0 -1
  755. package/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  756. package/persistence/tree/NestedSetSubjectExecutor.js +0 -1
  757. package/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
  758. package/platform/PlatformTools.js +4 -5
  759. package/platform/PlatformTools.js.map +1 -1
  760. package/query-builder/Alias.d.ts +3 -4
  761. package/query-builder/Alias.js +3 -4
  762. package/query-builder/Alias.js.map +1 -1
  763. package/query-builder/Brackets.js +0 -1
  764. package/query-builder/Brackets.js.map +1 -1
  765. package/query-builder/DeleteQueryBuilder.js +2 -2
  766. package/query-builder/DeleteQueryBuilder.js.map +1 -1
  767. package/query-builder/InsertQueryBuilder.d.ts +6 -0
  768. package/query-builder/InsertQueryBuilder.js +62 -14
  769. package/query-builder/InsertQueryBuilder.js.map +1 -1
  770. package/query-builder/JoinAttribute.d.ts +10 -10
  771. package/query-builder/JoinAttribute.js +10 -11
  772. package/query-builder/JoinAttribute.js.map +1 -1
  773. package/query-builder/QueryBuilder.d.ts +8 -1
  774. package/query-builder/QueryBuilder.js +167 -33
  775. package/query-builder/QueryBuilder.js.map +1 -1
  776. package/query-builder/QueryBuilderUtils.js +0 -1
  777. package/query-builder/QueryBuilderUtils.js.map +1 -1
  778. package/query-builder/QueryExpressionMap.d.ts +6 -2
  779. package/query-builder/QueryExpressionMap.js +3 -3
  780. package/query-builder/QueryExpressionMap.js.map +1 -1
  781. package/query-builder/RelationIdLoader.js +0 -1
  782. package/query-builder/RelationIdLoader.js.map +1 -1
  783. package/query-builder/RelationLoader.js +1 -2
  784. package/query-builder/RelationLoader.js.map +1 -1
  785. package/query-builder/RelationQueryBuilder.js +0 -1
  786. package/query-builder/RelationQueryBuilder.js.map +1 -1
  787. package/query-builder/RelationRemover.js +0 -1
  788. package/query-builder/RelationRemover.js.map +1 -1
  789. package/query-builder/RelationUpdater.js +0 -1
  790. package/query-builder/RelationUpdater.js.map +1 -1
  791. package/query-builder/ReturningResultsEntityUpdator.js +0 -1
  792. package/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
  793. package/query-builder/SelectQueryBuilder.d.ts +5 -0
  794. package/query-builder/SelectQueryBuilder.js +98 -57
  795. package/query-builder/SelectQueryBuilder.js.map +1 -1
  796. package/query-builder/SoftDeleteQueryBuilder.js +0 -1
  797. package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  798. package/query-builder/UpdateQueryBuilder.js +2 -2
  799. package/query-builder/UpdateQueryBuilder.js.map +1 -1
  800. package/query-builder/relation-count/RelationCountAttribute.d.ts +7 -7
  801. package/query-builder/relation-count/RelationCountAttribute.js +7 -8
  802. package/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
  803. package/query-builder/relation-count/RelationCountLoader.js +0 -1
  804. package/query-builder/relation-count/RelationCountLoader.js.map +1 -1
  805. package/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js +0 -1
  806. package/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js.map +1 -1
  807. package/query-builder/relation-id/RelationIdAttribute.d.ts +8 -8
  808. package/query-builder/relation-id/RelationIdAttribute.js +8 -9
  809. package/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
  810. package/query-builder/relation-id/RelationIdLoader.js +0 -1
  811. package/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  812. package/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js +0 -1
  813. package/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js.map +1 -1
  814. package/query-builder/result/DeleteResult.js +0 -1
  815. package/query-builder/result/DeleteResult.js.map +1 -1
  816. package/query-builder/result/InsertResult.js +0 -1
  817. package/query-builder/result/InsertResult.js.map +1 -1
  818. package/query-builder/result/UpdateResult.js +0 -1
  819. package/query-builder/result/UpdateResult.js.map +1 -1
  820. package/query-builder/transformer/DocumentToEntityTransformer.js +0 -1
  821. package/query-builder/transformer/DocumentToEntityTransformer.js.map +1 -1
  822. package/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js +3 -4
  823. package/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
  824. package/query-builder/transformer/PlainObjectToNewEntityTransformer.js +0 -1
  825. package/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
  826. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js +6 -4
  827. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  828. package/query-runner/BaseQueryRunner.js +0 -1
  829. package/query-runner/BaseQueryRunner.js.map +1 -1
  830. package/query-runner/QueryRunner.d.ts +1 -1
  831. package/query-runner/QueryRunner.js.map +1 -1
  832. package/repository/AbstractRepository.d.ts +2 -2
  833. package/repository/AbstractRepository.js +2 -3
  834. package/repository/AbstractRepository.js.map +1 -1
  835. package/repository/BaseEntity.d.ts +1 -1
  836. package/repository/BaseEntity.js +1 -2
  837. package/repository/BaseEntity.js.map +1 -1
  838. package/repository/MongoRepository.js +0 -1
  839. package/repository/MongoRepository.js.map +1 -1
  840. package/repository/Repository.d.ts +4 -4
  841. package/repository/Repository.js +1 -2
  842. package/repository/Repository.js.map +1 -1
  843. package/repository/RepositoryFactory.js +0 -1
  844. package/repository/RepositoryFactory.js.map +1 -1
  845. package/repository/TreeRepository.js +2 -3
  846. package/repository/TreeRepository.js.map +1 -1
  847. package/schema-builder/MongoSchemaBuilder.js +0 -1
  848. package/schema-builder/MongoSchemaBuilder.js.map +1 -1
  849. package/schema-builder/RdbmsSchemaBuilder.d.ts +2 -2
  850. package/schema-builder/RdbmsSchemaBuilder.js +4 -4
  851. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  852. package/schema-builder/options/TableForeignKeyOptions.js.map +1 -1
  853. package/schema-builder/table/Table.d.ts +1 -1
  854. package/schema-builder/table/Table.js +1 -2
  855. package/schema-builder/table/Table.js.map +1 -1
  856. package/schema-builder/table/TableCheck.js +0 -1
  857. package/schema-builder/table/TableCheck.js.map +1 -1
  858. package/schema-builder/table/TableColumn.js +0 -1
  859. package/schema-builder/table/TableColumn.js.map +1 -1
  860. package/schema-builder/table/TableExclusion.js +0 -1
  861. package/schema-builder/table/TableExclusion.js.map +1 -1
  862. package/schema-builder/table/TableForeignKey.js +0 -1
  863. package/schema-builder/table/TableForeignKey.js.map +1 -1
  864. package/schema-builder/table/TableIndex.js +0 -1
  865. package/schema-builder/table/TableIndex.js.map +1 -1
  866. package/schema-builder/table/TableUnique.js +0 -1
  867. package/schema-builder/table/TableUnique.js.map +1 -1
  868. package/schema-builder/util/TableUtils.js +0 -1
  869. package/schema-builder/util/TableUtils.js.map +1 -1
  870. package/schema-builder/view/View.js +0 -1
  871. package/schema-builder/view/View.js.map +1 -1
  872. package/subscriber/Broadcaster.d.ts +24 -0
  873. package/subscriber/Broadcaster.js +120 -1
  874. package/subscriber/Broadcaster.js.map +1 -1
  875. package/subscriber/BroadcasterResult.js +0 -1
  876. package/subscriber/BroadcasterResult.js.map +1 -1
  877. package/subscriber/EntitySubscriberInterface.d.ts +27 -0
  878. package/subscriber/EntitySubscriberInterface.js.map +1 -1
  879. package/subscriber/event/TransactionCommitEvent.d.ts +22 -0
  880. package/subscriber/event/TransactionCommitEvent.js +4 -0
  881. package/subscriber/event/TransactionCommitEvent.js.map +1 -0
  882. package/subscriber/event/TransactionRollbackEvent.d.ts +22 -0
  883. package/subscriber/event/TransactionRollbackEvent.js +4 -0
  884. package/subscriber/event/TransactionRollbackEvent.js.map +1 -0
  885. package/subscriber/event/TransactionStartEvent.d.ts +22 -0
  886. package/subscriber/event/TransactionStartEvent.js +4 -0
  887. package/subscriber/event/TransactionStartEvent.js.map +1 -0
  888. package/typeorm-model-shim.js +145 -128
  889. package/util/ApplyValueTransformers.js +0 -1
  890. package/util/ApplyValueTransformers.js.map +1 -1
  891. package/util/DateUtils.d.ts +1 -1
  892. package/util/DateUtils.js +1 -8
  893. package/util/DateUtils.js.map +1 -1
  894. package/util/DepGraph.js +0 -1
  895. package/util/DepGraph.js.map +1 -1
  896. package/util/DirectoryExportedClassesLoader.js +0 -1
  897. package/util/DirectoryExportedClassesLoader.js.map +1 -1
  898. package/util/ObjectUtils.js +0 -1
  899. package/util/ObjectUtils.js.map +1 -1
  900. package/util/OrmUtils.js +0 -1
  901. package/util/OrmUtils.js.map +1 -1
  902. package/util/RandomGenerator.js +0 -1
  903. package/util/RandomGenerator.js.map +1 -1
  904. package/util/StringUtils.js +0 -1
  905. package/util/StringUtils.js.map +1 -1
  906. package/util/VersionUtils.js +0 -1
  907. package/util/VersionUtils.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/query-builder/RelationLoader.ts"],"names":[],"mappings":";AAGA;;;GAGG;AACH;IAEI,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,wBAAoB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAC1C,CAAC;IAED,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E;;OAEG;IACH,6BAAI,GAAJ,UAAK,QAA0B,EAAE,gBAA+C,EAAE,WAAyB;QACvG,IAAI,WAAW,IAAI,WAAW,CAAC,UAAU;YAAE,WAAW,GAAG,SAAS,CAAC,CAAC,gCAAgC;QACpG,IAAI,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,eAAe,EAAE;YAClD,OAAO,IAAI,CAAC,4BAA4B,CAAC,QAAQ,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAC;SAErF;aAAM,IAAI,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,kBAAkB,EAAE;YAC5D,OAAO,IAAI,CAAC,+BAA+B,CAAC,QAAQ,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAC;SAExF;aAAM,IAAI,QAAQ,CAAC,iBAAiB,EAAE;YACnC,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAC;SAE5E;aAAM,EAAE,yBAAyB;YAC9B,OAAO,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAC;SAC/E;IACL,CAAC;IAED;;;;;;;OAOG;IACH,qDAA4B,GAA5B,UAA6B,QAA0B,EAAE,gBAA+C,EAAE,WAAyB;QAC/H,IAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;QACzF,IAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC;QACvD,IAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAgB,CAAC,WAAW,CAAC;QACrG,IAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,UAAA,UAAU;YACzC,OAAU,QAAQ,CAAC,cAAc,CAAC,IAAI,SAAI,UAAU,CAAC,YAAY,WAAM,QAAQ,CAAC,YAAY,SAAI,UAAU,CAAC,gBAAiB,CAAC,YAAc,CAAC;QAChJ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEjB,IAAM,aAAa,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC;QACnD,IAAM,EAAE,GAAG,IAAI,CAAC,UAAU;aACrB,kBAAkB,CAAC,WAAW,CAAC;aAC/B,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,WAAW;aACzC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,qBAAqB;aAChE,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAkB,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;QAEtF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACtB,EAAE,CAAC,KAAK,CAAI,aAAa,SAAI,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,kBAAY,aAAa,GAAG,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,OAAG,CAAC,CAAC;YAClH,EAAE,CAAC,YAAY,CAAC,aAAa,GAAG,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG,CAAC,UAAA,MAAM,IAAI,OAAA,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,EAAjC,CAAiC,CAAC,CAAC,CAAC;SAE7H;aAAM;YACH,IAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAC,MAAM,EAAE,WAAW;gBAC/C,OAAO,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM,EAAE,WAAW;oBACnC,IAAM,SAAS,GAAG,aAAa,GAAG,UAAU,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW,CAAC;oBAC/E,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC1D,OAAO,aAAa,GAAG,GAAG,GAAG,MAAM,CAAC,YAAY,GAAG,MAAM,GAAG,SAAS,CAAC;gBAC1E,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC,GAAG,CAAC,UAAA,SAAS,IAAI,OAAA,GAAG,GAAG,SAAS,GAAG,GAAG,EAArB,CAAqB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACxD,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;SACvB;QAED,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC;QACpB,2CAA2C;IAC/C,CAAC;IAED;;;;;;OAMG;IACH,wDAA+B,GAA/B,UAAgC,QAA0B,EAAE,gBAA+C,EAAE,WAAyB;QAClI,IAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;QACzF,IAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC;QACxC,IAAM,OAAO,GAAG,QAAQ,CAAC,eAAgB,CAAC,WAAW,CAAC;QACtD,IAAM,EAAE,GAAG,IAAI,CAAC,UAAU;aACrB,kBAAkB,CAAC,WAAW,CAAC;aAC/B,MAAM,CAAC,SAAS,CAAC;aACjB,IAAI,CAAC,QAAQ,CAAC,eAAgB,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAEtE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACtB,EAAE,CAAC,KAAK,CAAI,SAAS,SAAI,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,kBAAY,SAAS,GAAG,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,OAAG,CAAC,CAAC;YAC1G,EAAE,CAAC,YAAY,CAAC,SAAS,GAAG,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG,CAAC,UAAA,MAAM,IAAI,OAAA,OAAO,CAAC,CAAC,CAAC,CAAC,gBAAiB,CAAC,cAAc,CAAC,MAAM,CAAC,EAAnD,CAAmD,CAAC,CAAC,CAAC;SAE3I;aAAM;YACH,IAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAC,MAAM,EAAE,WAAW;gBAC/C,OAAO,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM,EAAE,WAAW;oBACnC,IAAM,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW,CAAC;oBAC3E,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,gBAAiB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC5E,OAAO,SAAS,GAAG,GAAG,GAAG,MAAM,CAAC,YAAY,GAAG,MAAM,GAAG,SAAS,CAAC;gBACtE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC,GAAG,CAAC,UAAA,SAAS,IAAI,OAAA,GAAG,GAAG,SAAS,GAAG,GAAG,EAArB,CAAqB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACxD,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;SACvB;QACD,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC;QACpB,iFAAiF;IACrF,CAAC;IAED;;;;;;;;OAQG;IACH,4CAAmB,GAAnB,UAAoB,QAA0B,EAAE,gBAA+C,EAAE,WAAyB;QACtH,IAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;QACzF,IAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC;QACxC,IAAM,SAAS,GAAG,QAAQ,CAAC,sBAAuB,CAAC,SAAS,CAAC;QAC7D,IAAM,oBAAoB,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,UAAA,UAAU;YAC5D,OAAU,SAAS,SAAI,UAAU,CAAC,YAAY,iBAAY,UAAU,CAAC,YAAY,MAAG,CAAC;QACzF,CAAC,CAAC,CAAC;QACH,IAAM,2BAA2B,GAAG,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAA,iBAAiB;YACjF,OAAU,SAAS,SAAI,iBAAiB,CAAC,YAAY,SAAI,SAAS,SAAI,iBAAiB,CAAC,gBAAiB,CAAC,YAAc,CAAC;QAC7H,CAAC,CAAC,CAAC;QACH,IAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,UAAC,UAAU,EAAE,UAAU;YAClE,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAA,MAAM,IAAI,OAAA,UAAU,CAAC,gBAAiB,CAAC,cAAc,CAAC,MAAM,CAAC,EAAnD,CAAmD,CAAC,CAAC;YAClH,OAAO,UAAU,CAAC;QACtB,CAAC,EAAE,EAAmB,CAAC,CAAC;QAExB,OAAO,IAAI,CAAC,UAAU;aACjB,kBAAkB,CAAC,WAAW,CAAC;aAC/B,MAAM,CAAC,SAAS,CAAC;aACjB,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;aAC9B,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,SAAI,oBAAoB,EAAK,2BAA2B,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;aACxG,aAAa,CAAC,UAAU,CAAC;aACzB,OAAO,EAAE,CAAC;IACnB,CAAC;IAED;;;;;;;;OAQG;IACH,+CAAsB,GAAtB,UAAuB,QAA0B,EAAE,gBAA+C,EAAE,WAAyB;QACzH,IAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;QACzF,IAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC;QACxC,IAAM,SAAS,GAAG,QAAQ,CAAC,sBAAuB,CAAC,SAAS,CAAC;QAC7D,IAAM,oBAAoB,GAAG,QAAQ,CAAC,eAAgB,CAAC,WAAW,CAAC,GAAG,CAAC,UAAA,UAAU;YAC7E,OAAU,SAAS,SAAI,UAAU,CAAC,YAAY,WAAM,SAAS,SAAI,UAAU,CAAC,gBAAiB,CAAC,YAAc,CAAC;QACjH,CAAC,CAAC,CAAC;QACH,IAAM,2BAA2B,GAAG,QAAQ,CAAC,eAAgB,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAA,iBAAiB;YAClG,OAAU,SAAS,SAAI,iBAAiB,CAAC,YAAY,iBAAY,iBAAiB,CAAC,YAAY,MAAG,CAAC;QACvG,CAAC,CAAC,CAAC;QACH,IAAM,UAAU,GAAG,QAAQ,CAAC,eAAgB,CAAC,kBAAkB,CAAC,MAAM,CAAC,UAAC,UAAU,EAAE,UAAU;YAC1F,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAA,MAAM,IAAI,OAAA,UAAU,CAAC,gBAAiB,CAAC,cAAc,CAAC,MAAM,CAAC,EAAnD,CAAmD,CAAC,CAAC;YAClH,OAAO,UAAU,CAAC;QACtB,CAAC,EAAE,EAAmB,CAAC,CAAC;QAExB,OAAO,IAAI,CAAC,UAAU;aACjB,kBAAkB,CAAC,WAAW,CAAC;aAC/B,MAAM,CAAC,SAAS,CAAC;aACjB,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;aAC9B,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,SAAI,oBAAoB,EAAK,2BAA2B,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;aACxG,aAAa,CAAC,UAAU,CAAC;aACzB,OAAO,EAAE,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,uCAAc,GAAd,UAAe,QAA0B,EAAE,MAAqB,EAAE,WAAyB;QACvF,IAAM,cAAc,GAAG,IAAI,CAAC;QAC5B,IAAM,SAAS,GAAG,IAAI,GAAG,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,4DAA4D;QACnH,IAAM,YAAY,GAAG,YAAY,GAAG,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,gEAAgE;QAClI,IAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,kGAAkG;QAEhK,IAAM,OAAO,GAAG,UAAC,MAAqB,EAAE,KAAU;YAC9C,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;YAC1B,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;YAC5B,OAAO,MAAM,CAAC,YAAY,CAAC,CAAC;YAC5B,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC;QACF,IAAM,UAAU,GAAG,UAAC,MAAqB,EAAE,KAAmB;YAC1D,OAAO,MAAM,CAAC,YAAY,CAAC,CAAC;YAC5B,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;YACzB,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC;YAC7B,KAAK,CAAC,IAAI;YACR,6CAA6C;YAC7C,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,YAAY,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAjE,CAAiE,CAC5E,CAAC;YACF,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC;QAEF,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,EAAE;YACjD,GAAG,EAAE;gBACD,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE,2DAA2D;oBACzH,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gBAE5C,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,2EAA2E;oBAC/F,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC;gBAE9B,0FAA0F;gBAC1F,IAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,IAAI,CAChE,UAAA,MAAM,IAAI,OAAA,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAhE,CAAgE,CAC7E,CAAC;gBACF,OAAO,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACpC,CAAC;YACD,GAAG,EAAE,UAAS,KAAuB;gBACjC,IAAI,KAAK,YAAY,OAAO,EAAE,EAAE,4EAA4E;oBACxG,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;iBAC3B;qBAAM,EAAE,gEAAgE;oBACrE,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;iBACxB;YACL,CAAC;YACD,YAAY,EAAE,IAAI;SACrB,CAAC,CAAC;IACP,CAAC;IAEL,qBAAC;AAAD,CAlOA,AAkOC,IAAA","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[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":".."}
@@ -513,6 +513,10 @@ export declare class SelectQueryBuilder<Entity> extends QueryBuilder<Entity> imp
513
513
  * Gets single entity returned by execution of generated query builder sql.
514
514
  */
515
515
  getOne(): Promise<Entity | undefined>;
516
+ /**
517
+ * Gets the first entity returned by execution of generated query builder sql or rejects the returned promise on error.
518
+ */
519
+ getOneOrFail(): Promise<Entity>;
516
520
  /**
517
521
  * Gets entities returned by execution of generated query builder sql.
518
522
  */
@@ -583,6 +587,7 @@ export declare class SelectQueryBuilder<Entity> extends QueryBuilder<Entity> imp
583
587
  protected createHavingExpression(): string;
584
588
  protected buildEscapedEntityColumnSelects(aliasName: string, metadata: EntityMetadata): SelectQuery[];
585
589
  protected findEntityColumnSelects(aliasName: string, metadata: EntityMetadata): SelectQuery[];
590
+ private computeCountExpression;
586
591
  protected executeCountQuery(queryRunner: QueryRunner): Promise<number>;
587
592
  /**
588
593
  * Executes sql generated by query builder and returns object with raw results and entities created from them.
@@ -25,6 +25,7 @@ import { ObjectUtils } from "../util/ObjectUtils";
25
25
  import { DriverUtils } from "../driver/DriverUtils";
26
26
  import { AuroraDataApiDriver } from "../driver/aurora-data-api/AuroraDataApiDriver";
27
27
  import { CockroachDriver } from "../driver/cockroachdb/CockroachDriver";
28
+ import { EntityNotFoundError } from "../error/EntityNotFoundError";
28
29
  /**
29
30
  * Allows to build complex sql queries in a fashion way and execute those queries.
30
31
  */
@@ -40,7 +41,8 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
40
41
  * Gets generated sql query without parameters being replaced.
41
42
  */
42
43
  SelectQueryBuilder.prototype.getQuery = function () {
43
- var sql = this.createSelectExpression();
44
+ var sql = this.createComment();
45
+ sql += this.createSelectExpression();
44
46
  sql += this.createJoinExpression();
45
47
  sql += this.createWhereExpression();
46
48
  sql += this.createGroupByExpression();
@@ -676,6 +678,25 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
676
678
  });
677
679
  });
678
680
  };
681
+ /**
682
+ * Gets the first entity returned by execution of generated query builder sql or rejects the returned promise on error.
683
+ */
684
+ SelectQueryBuilder.prototype.getOneOrFail = function () {
685
+ return __awaiter(this, void 0, void 0, function () {
686
+ var entity;
687
+ return __generator(this, function (_a) {
688
+ switch (_a.label) {
689
+ case 0: return [4 /*yield*/, this.getOne()];
690
+ case 1:
691
+ entity = _a.sent();
692
+ if (!entity) {
693
+ throw new EntityNotFoundError(this.expressionMap.mainAlias.target, this);
694
+ }
695
+ return [2 /*return*/, entity];
696
+ }
697
+ });
698
+ });
699
+ };
679
700
  /**
680
701
  * Gets entities returned by execution of generated query builder sql.
681
702
  */
@@ -836,7 +857,7 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
836
857
  transactionStartedByUs = false;
837
858
  _b.label = 1;
838
859
  case 1:
839
- _b.trys.push([1, 6, 11, 14]);
860
+ _b.trys.push([1, 6, , 11]);
840
861
  if (!(this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false)) return [3 /*break*/, 3];
841
862
  return [4 /*yield*/, queryRunner.startTransaction()];
842
863
  case 2:
@@ -870,14 +891,7 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
870
891
  rollbackError_5 = _b.sent();
871
892
  return [3 /*break*/, 10];
872
893
  case 10: throw error_5;
873
- case 11:
874
- if (!(queryRunner !== this.queryRunner)) return [3 /*break*/, 13];
875
- return [4 /*yield*/, queryRunner.release()];
876
- case 12:
877
- _b.sent();
878
- _b.label = 13;
879
- case 13: return [7 /*endfinally*/];
880
- case 14: return [2 /*return*/];
894
+ case 11: return [2 /*return*/];
881
895
  }
882
896
  });
883
897
  });
@@ -923,6 +937,10 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
923
937
  // joinAttribute.junctionAlias = joinAttribute.relation.isOwning ? parentAlias + "_" + destinationTableAlias : destinationTableAlias + "_" + parentAlias;
924
938
  this.expressionMap.joinAttributes.push(joinAttribute);
925
939
  if (joinAttribute.metadata) {
940
+ if (joinAttribute.metadata.deleteDateColumn && !this.expressionMap.withDeleted) {
941
+ var conditionDeleteColumn = aliasName + "." + joinAttribute.metadata.deleteDateColumn.propertyName + " IS NULL";
942
+ joinAttribute.condition += joinAttribute.condition ? " AND " + conditionDeleteColumn : "" + conditionDeleteColumn;
943
+ }
926
944
  // todo: find and set metadata right there?
927
945
  joinAttribute.alias = this.expressionMap.createAlias({
928
946
  type: "join",
@@ -1074,6 +1092,9 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
1074
1092
  else if (relation.isOneToMany || relation.isOneToOneNotOwner) {
1075
1093
  // JOIN `post` `post` ON `post`.`categoryId` = `category`.`id`
1076
1094
  var condition = relation.inverseRelation.joinColumns.map(function (joinColumn) {
1095
+ if (relation.inverseEntityMetadata.tableType === "entity-child" && relation.inverseEntityMetadata.discriminatorColumn) {
1096
+ appendedCondition += " AND " + destinationTableAlias + "." + relation.inverseEntityMetadata.discriminatorColumn.databaseName + "='" + relation.inverseEntityMetadata.discriminatorValue + "'";
1097
+ }
1077
1098
  return destinationTableAlias + "." + relation.inverseRelation.propertyPath + "." + joinColumn.referencedColumn.propertyPath + "=" +
1078
1099
  parentAlias + "." + joinColumn.referencedColumn.propertyPath;
1079
1100
  }).join(" AND ");
@@ -1231,14 +1252,14 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
1231
1252
  throw new LockNotSupportedOnGivenDriverError();
1232
1253
  }
1233
1254
  case "pessimistic_partial_write":
1234
- if (driver instanceof PostgresDriver) {
1255
+ if (driver instanceof PostgresDriver || driver instanceof MysqlDriver) {
1235
1256
  return " FOR UPDATE SKIP LOCKED";
1236
1257
  }
1237
1258
  else {
1238
1259
  throw new LockNotSupportedOnGivenDriverError();
1239
1260
  }
1240
1261
  case "pessimistic_write_or_fail":
1241
- if (driver instanceof PostgresDriver) {
1262
+ if (driver instanceof PostgresDriver || driver instanceof MysqlDriver) {
1242
1263
  return " FOR UPDATE NOWAIT";
1243
1264
  }
1244
1265
  else {
@@ -1304,7 +1325,12 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
1304
1325
  }
1305
1326
  if (_this.connection.driver instanceof PostgresDriver)
1306
1327
  // cast to JSON to trigger parsing in the driver
1307
- selectionPath = "ST_AsGeoJSON(" + selectionPath + ")::json";
1328
+ if (column.precision) {
1329
+ selectionPath = "ST_AsGeoJSON(" + selectionPath + ", " + column.precision + ")::json";
1330
+ }
1331
+ else {
1332
+ selectionPath = "ST_AsGeoJSON(" + selectionPath + ")::json";
1333
+ }
1308
1334
  if (_this.connection.driver instanceof SqlServerDriver)
1309
1335
  selectionPath = selectionPath + ".ToString()";
1310
1336
  }
@@ -1324,49 +1350,61 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
1324
1350
  return metadata.columns.some(function (column) { return select.selection === aliasName + "." + column.propertyPath; });
1325
1351
  });
1326
1352
  };
1353
+ SelectQueryBuilder.prototype.computeCountExpression = function () {
1354
+ var _this = this;
1355
+ var mainAlias = this.expressionMap.mainAlias.name; // todo: will this work with "fromTableName"?
1356
+ var metadata = this.expressionMap.mainAlias.metadata;
1357
+ var primaryColumns = metadata.primaryColumns;
1358
+ var distinctAlias = this.escape(mainAlias);
1359
+ // If we aren't doing anything that will create a join, we can use a simpler `COUNT` instead
1360
+ // so we prevent poor query patterns in the most likely cases
1361
+ if (this.expressionMap.joinAttributes.length === 0 &&
1362
+ this.expressionMap.relationIdAttributes.length === 0 &&
1363
+ this.expressionMap.relationCountAttributes.length === 0) {
1364
+ return "COUNT(1)";
1365
+ }
1366
+ // For everything else, we'll need to do some hackery to get the correct count values.
1367
+ if (this.connection.driver instanceof CockroachDriver || this.connection.driver instanceof PostgresDriver) {
1368
+ // Postgres and CockroachDB can pass multiple parameters to the `DISTINCT` function
1369
+ // https://www.postgresql.org/docs/9.5/sql-select.html#SQL-DISTINCT
1370
+ return "COUNT(DISTINCT(" +
1371
+ primaryColumns.map(function (c) { return distinctAlias + "." + _this.escape(c.databaseName); }).join(", ") +
1372
+ "))";
1373
+ }
1374
+ if (this.connection.driver instanceof MysqlDriver) {
1375
+ // MySQL & MariaDB can pass multiple parameters to the `DISTINCT` language construct
1376
+ // https://mariadb.com/kb/en/count-distinct/
1377
+ return "COUNT(DISTINCT " +
1378
+ primaryColumns.map(function (c) { return distinctAlias + "." + _this.escape(c.databaseName); }).join(", ") +
1379
+ ")";
1380
+ }
1381
+ if (this.connection.driver instanceof SqlServerDriver) {
1382
+ // SQL Server has gotta be different from everyone else. They don't support
1383
+ // distinct counting multiple columns & they don't have the same operator
1384
+ // characteristic for concatenating, so we gotta use the `CONCAT` function.
1385
+ // However, If it's exactly 1 column we can omit the `CONCAT` for better performance.
1386
+ var columnsExpression = primaryColumns.map(function (primaryColumn) { return distinctAlias + "." + _this.escape(primaryColumn.databaseName); }).join(", '|;|', ");
1387
+ if (primaryColumns.length === 1) {
1388
+ return "COUNT(DISTINCT(" + columnsExpression + "))";
1389
+ }
1390
+ return "COUNT(DISTINCT(CONCAT(" + columnsExpression + ")))";
1391
+ }
1392
+ // If all else fails, fall back to a `COUNT` and `DISTINCT` across all the primary columns concatenated.
1393
+ // Per the SQL spec, this is the canonical string concatenation mechanism which is most
1394
+ // likely to work across servers implementing the SQL standard.
1395
+ // Please note, if there is only one primary column that the concatenation does not occur in this
1396
+ // query and the query is a standard `COUNT DISTINCT` in that case.
1397
+ return "COUNT(DISTINCT(" +
1398
+ primaryColumns.map(function (c) { return distinctAlias + "." + _this.escape(c.databaseName); }).join(" || '|;|' || ") +
1399
+ "))";
1400
+ };
1327
1401
  SelectQueryBuilder.prototype.executeCountQuery = function (queryRunner) {
1328
1402
  return __awaiter(this, void 0, void 0, function () {
1329
- var mainAlias, metadata, distinctAlias, countSql, results;
1330
- var _this = this;
1403
+ var countSql, results;
1331
1404
  return __generator(this, function (_a) {
1332
1405
  switch (_a.label) {
1333
1406
  case 0:
1334
- mainAlias = this.expressionMap.mainAlias.name;
1335
- metadata = this.expressionMap.mainAlias.metadata;
1336
- distinctAlias = this.escape(mainAlias);
1337
- countSql = "";
1338
- if (metadata.hasMultiplePrimaryKeys) {
1339
- if (this.connection.driver instanceof AbstractSqliteDriver) {
1340
- countSql = "COUNT(DISTINCT(" + metadata.primaryColumns.map(function (primaryColumn, index) {
1341
- var propertyName = _this.escape(primaryColumn.databaseName);
1342
- return distinctAlias + "." + propertyName;
1343
- }).join(" || ") + ")) as \"cnt\"";
1344
- }
1345
- else if (this.connection.driver instanceof CockroachDriver) {
1346
- countSql = "COUNT(DISTINCT(CONCAT(" + metadata.primaryColumns.map(function (primaryColumn, index) {
1347
- var propertyName = _this.escape(primaryColumn.databaseName);
1348
- return distinctAlias + "." + propertyName + "::text";
1349
- }).join(", ") + "))) as \"cnt\"";
1350
- }
1351
- else if (this.connection.driver instanceof OracleDriver) {
1352
- countSql = "COUNT(DISTINCT(" + metadata.primaryColumns.map(function (primaryColumn, index) {
1353
- var propertyName = _this.escape(primaryColumn.databaseName);
1354
- return distinctAlias + "." + propertyName;
1355
- }).join(" || ") + ")) as \"cnt\"";
1356
- }
1357
- else {
1358
- countSql = "COUNT(DISTINCT(CONCAT(" + metadata.primaryColumns.map(function (primaryColumn, index) {
1359
- var propertyName = _this.escape(primaryColumn.databaseName);
1360
- return distinctAlias + "." + propertyName;
1361
- }).join(", ") + "))) as \"cnt\"";
1362
- }
1363
- }
1364
- else {
1365
- countSql = "COUNT(DISTINCT(" + metadata.primaryColumns.map(function (primaryColumn, index) {
1366
- var propertyName = _this.escape(primaryColumn.databaseName);
1367
- return distinctAlias + "." + propertyName;
1368
- }).join(", ") + ")) as \"cnt\"";
1369
- }
1407
+ countSql = this.computeCountExpression();
1370
1408
  return [4 /*yield*/, this.clone()
1371
1409
  .orderBy()
1372
1410
  .groupBy()
@@ -1374,7 +1412,7 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
1374
1412
  .limit(undefined)
1375
1413
  .skip(undefined)
1376
1414
  .take(undefined)
1377
- .select(countSql)
1415
+ .select(countSql, "cnt")
1378
1416
  .setOption("disable-global-order")
1379
1417
  .loadRawResults(queryRunner)];
1380
1418
  case 1:
@@ -1507,9 +1545,11 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
1507
1545
  var selectString = Object.keys(orderBys)
1508
1546
  .map(function (orderCriteria) {
1509
1547
  if (orderCriteria.indexOf(".") !== -1) {
1510
- var _a = __read(orderCriteria.split("."), 2), aliasName = _a[0], propertyPath = _a[1];
1548
+ var criteriaParts = orderCriteria.split(".");
1549
+ var aliasName = criteriaParts[0];
1550
+ var propertyPath = criteriaParts.slice(1).join(".");
1511
1551
  var alias = _this.expressionMap.findAliasByName(aliasName);
1512
- var column = alias.metadata.findColumnWithPropertyName(propertyPath);
1552
+ var column = alias.metadata.findColumnWithPropertyPath(propertyPath);
1513
1553
  return _this.escape(parentAlias) + "." + _this.escape(DriverUtils.buildColumnAlias(_this.connection.driver, aliasName, column.databaseName));
1514
1554
  }
1515
1555
  else {
@@ -1522,9 +1562,11 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
1522
1562
  var orderByObject = {};
1523
1563
  Object.keys(orderBys).forEach(function (orderCriteria) {
1524
1564
  if (orderCriteria.indexOf(".") !== -1) {
1525
- var _a = __read(orderCriteria.split("."), 2), aliasName = _a[0], propertyPath = _a[1];
1565
+ var criteriaParts = orderCriteria.split(".");
1566
+ var aliasName = criteriaParts[0];
1567
+ var propertyPath = criteriaParts.slice(1).join(".");
1526
1568
  var alias = _this.expressionMap.findAliasByName(aliasName);
1527
- var column = alias.metadata.findColumnWithPropertyName(propertyPath);
1569
+ var column = alias.metadata.findColumnWithPropertyPath(propertyPath);
1528
1570
  orderByObject[_this.escape(parentAlias) + "." + _this.escape(DriverUtils.buildColumnAlias(_this.connection.driver, aliasName, column.databaseName))] = orderBys[orderCriteria];
1529
1571
  }
1530
1572
  else {