typeorm 0.3.21 → 0.3.22-dev.04ca83a

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 (1026) hide show
  1. package/README.md +1315 -1315
  2. package/browser/cache/DbQueryResultCache.js.map +1 -1
  3. package/browser/cache/QueryResultCache.js.map +1 -1
  4. package/browser/cache/QueryResultCacheFactory.js.map +1 -1
  5. package/browser/cache/QueryResultCacheOptions.js.map +1 -1
  6. package/browser/cache/RedisQueryResultCache.js.map +1 -1
  7. package/browser/cli-ts-node-commonjs.js.map +1 -1
  8. package/browser/cli-ts-node-esm.js.map +1 -1
  9. package/browser/common/DeepPartial.js.map +1 -1
  10. package/browser/common/EntityTarget.js.map +1 -1
  11. package/browser/common/MixedList.js.map +1 -1
  12. package/browser/common/NonNever.js.map +1 -1
  13. package/browser/common/ObjectLiteral.js.map +1 -1
  14. package/browser/common/ObjectType.js.map +1 -1
  15. package/browser/common/PickKeysByType.js.map +1 -1
  16. package/browser/common/RelationType.js.map +1 -1
  17. package/browser/connection/BaseConnectionOptions.js.map +1 -1
  18. package/browser/connection/Connection.js.map +1 -1
  19. package/browser/connection/ConnectionManager.js.map +1 -1
  20. package/browser/connection/ConnectionMetadataBuilder.js.map +1 -1
  21. package/browser/connection/ConnectionOptions.js.map +1 -1
  22. package/browser/connection/ConnectionOptionsReader.js.map +1 -1
  23. package/browser/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
  24. package/browser/container.js.map +1 -1
  25. package/browser/data-source/BaseDataSourceOptions.js.map +1 -1
  26. package/browser/data-source/DataSource.js.map +1 -1
  27. package/browser/data-source/DataSourceOptions.js.map +1 -1
  28. package/browser/data-source/index.js.map +1 -1
  29. package/browser/decorator/Check.js.map +1 -1
  30. package/browser/decorator/EntityRepository.js.map +1 -1
  31. package/browser/decorator/Exclusion.js.map +1 -1
  32. package/browser/decorator/Generated.js.map +1 -1
  33. package/browser/decorator/Index.js.map +1 -1
  34. package/browser/decorator/Unique.js.map +1 -1
  35. package/browser/decorator/columns/Column.js.map +1 -1
  36. package/browser/decorator/columns/CreateDateColumn.js.map +1 -1
  37. package/browser/decorator/columns/DeleteDateColumn.js.map +1 -1
  38. package/browser/decorator/columns/ObjectIdColumn.js.map +1 -1
  39. package/browser/decorator/columns/PrimaryColumn.js.map +1 -1
  40. package/browser/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
  41. package/browser/decorator/columns/UpdateDateColumn.js.map +1 -1
  42. package/browser/decorator/columns/VersionColumn.js.map +1 -1
  43. package/browser/decorator/columns/ViewColumn.js.map +1 -1
  44. package/browser/decorator/columns/VirtualColumn.js.map +1 -1
  45. package/browser/decorator/entity/ChildEntity.js.map +1 -1
  46. package/browser/decorator/entity/Entity.js.map +1 -1
  47. package/browser/decorator/entity/TableInheritance.js.map +1 -1
  48. package/browser/decorator/entity-view/ViewEntity.js.map +1 -1
  49. package/browser/decorator/listeners/AfterInsert.js.map +1 -1
  50. package/browser/decorator/listeners/AfterLoad.js.map +1 -1
  51. package/browser/decorator/listeners/AfterRecover.js.map +1 -1
  52. package/browser/decorator/listeners/AfterRemove.js.map +1 -1
  53. package/browser/decorator/listeners/AfterSoftRemove.js.map +1 -1
  54. package/browser/decorator/listeners/AfterUpdate.js.map +1 -1
  55. package/browser/decorator/listeners/BeforeInsert.js.map +1 -1
  56. package/browser/decorator/listeners/BeforeRecover.js.map +1 -1
  57. package/browser/decorator/listeners/BeforeRemove.js.map +1 -1
  58. package/browser/decorator/listeners/BeforeSoftRemove.js.map +1 -1
  59. package/browser/decorator/listeners/BeforeUpdate.js.map +1 -1
  60. package/browser/decorator/listeners/EventSubscriber.js.map +1 -1
  61. package/browser/decorator/options/ColumnCommonOptions.js.map +1 -1
  62. package/browser/decorator/options/ColumnEmbeddedOptions.js.map +1 -1
  63. package/browser/decorator/options/ColumnEnumOptions.js.map +1 -1
  64. package/browser/decorator/options/ColumnHstoreOptions.js.map +1 -1
  65. package/browser/decorator/options/ColumnNumericOptions.js.map +1 -1
  66. package/browser/decorator/options/ColumnOptions.js.map +1 -1
  67. package/browser/decorator/options/ColumnWithLengthOptions.js.map +1 -1
  68. package/browser/decorator/options/ColumnWithWidthOptions.js.map +1 -1
  69. package/browser/decorator/options/EntityOptions.js.map +1 -1
  70. package/browser/decorator/options/IndexOptions.js.map +1 -1
  71. package/browser/decorator/options/JoinColumnOptions.js.map +1 -1
  72. package/browser/decorator/options/JoinTableMultipleColumnsOptions.js.map +1 -1
  73. package/browser/decorator/options/JoinTableOptions.js.map +1 -1
  74. package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -1
  75. package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
  76. package/browser/decorator/options/PrimaryGeneratedColumnUUIDOptions.js.map +1 -1
  77. package/browser/decorator/options/RelationOptions.js.map +1 -1
  78. package/browser/decorator/options/SpatialColumnOptions.js.map +1 -1
  79. package/browser/decorator/options/TransactionOptions.js.map +1 -1
  80. package/browser/decorator/options/UniqueOptions.js.map +1 -1
  81. package/browser/decorator/options/ValueTransformer.js.map +1 -1
  82. package/browser/decorator/options/ViewColumnOptions.js.map +1 -1
  83. package/browser/decorator/options/ViewEntityOptions.js.map +1 -1
  84. package/browser/decorator/options/VirtualColumnOptions.js.map +1 -1
  85. package/browser/decorator/relations/JoinColumn.js.map +1 -1
  86. package/browser/decorator/relations/JoinTable.js.map +1 -1
  87. package/browser/decorator/relations/ManyToMany.js.map +1 -1
  88. package/browser/decorator/relations/ManyToOne.js.map +1 -1
  89. package/browser/decorator/relations/OneToMany.js.map +1 -1
  90. package/browser/decorator/relations/OneToOne.js.map +1 -1
  91. package/browser/decorator/relations/RelationCount.js.map +1 -1
  92. package/browser/decorator/relations/RelationId.js.map +1 -1
  93. package/browser/decorator/tree/Tree.js.map +1 -1
  94. package/browser/decorator/tree/TreeChildren.js.map +1 -1
  95. package/browser/decorator/tree/TreeLevelColumn.js.map +1 -1
  96. package/browser/decorator/tree/TreeParent.js.map +1 -1
  97. package/browser/driver/Driver.js.map +1 -1
  98. package/browser/driver/DriverFactory.js.map +1 -1
  99. package/browser/driver/DriverUtils.js.map +1 -1
  100. package/browser/driver/Query.js.map +1 -1
  101. package/browser/driver/SqlInMemory.js.map +1 -1
  102. package/browser/driver/aurora-mysql/AuroraMysqlConnection.js.map +1 -1
  103. package/browser/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.js.map +1 -1
  104. package/browser/driver/aurora-mysql/AuroraMysqlConnectionOptions.js.map +1 -1
  105. package/browser/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  106. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js +6 -9
  107. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
  108. package/browser/driver/aurora-postgres/AuroraPostgresConnectionOptions.js.map +1 -1
  109. package/browser/driver/aurora-postgres/AuroraPostgresDriver.js.map +1 -1
  110. package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.js +6 -9
  111. package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
  112. package/browser/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js.map +1 -1
  113. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  114. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  115. package/browser/driver/capacitor/CapacitorConnectionOptions.js.map +1 -1
  116. package/browser/driver/capacitor/CapacitorDriver.js.map +1 -1
  117. package/browser/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
  118. package/browser/driver/cockroachdb/CockroachConnectionCredentialsOptions.js.map +1 -1
  119. package/browser/driver/cockroachdb/CockroachConnectionOptions.js.map +1 -1
  120. package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
  121. package/browser/driver/cockroachdb/CockroachQueryRunner.js +7 -11
  122. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  123. package/browser/driver/cordova/CordovaConnectionOptions.js.map +1 -1
  124. package/browser/driver/cordova/CordovaDriver.js.map +1 -1
  125. package/browser/driver/cordova/CordovaQueryRunner.js.map +1 -1
  126. package/browser/driver/expo/ExpoConnectionOptions.js.map +1 -1
  127. package/browser/driver/expo/ExpoDriver.js.map +1 -1
  128. package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
  129. package/browser/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  130. package/browser/driver/mongodb/MongoDriver.js.map +1 -1
  131. package/browser/driver/mongodb/MongoQueryRunner.js.map +1 -1
  132. package/browser/driver/mongodb/bson.typings.js.map +1 -1
  133. package/browser/driver/mongodb/typings.js.map +1 -1
  134. package/browser/driver/mysql/MysqlConnectionCredentialsOptions.js.map +1 -1
  135. package/browser/driver/mysql/MysqlConnectionOptions.js.map +1 -1
  136. package/browser/driver/mysql/MysqlDriver.js.map +1 -1
  137. package/browser/driver/mysql/MysqlQueryRunner.js +77 -80
  138. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  139. package/browser/driver/nativescript/NativescriptConnectionOptions.js.map +1 -1
  140. package/browser/driver/nativescript/NativescriptDriver.js.map +1 -1
  141. package/browser/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  142. package/browser/driver/oracle/OracleConnectionCredentialsOptions.js.map +1 -1
  143. package/browser/driver/oracle/OracleConnectionOptions.js.map +1 -1
  144. package/browser/driver/oracle/OracleDriver.js.map +1 -1
  145. package/browser/driver/oracle/OracleQueryRunner.js +4 -6
  146. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  147. package/browser/driver/postgres/PostgresConnectionCredentialsOptions.js.map +1 -1
  148. package/browser/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  149. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  150. package/browser/driver/postgres/PostgresQueryRunner.js +6 -9
  151. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  152. package/browser/driver/react-native/ReactNativeConnectionOptions.js.map +1 -1
  153. package/browser/driver/react-native/ReactNativeDriver.js.map +1 -1
  154. package/browser/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  155. package/browser/driver/sap/SapConnectionCredentialsOptions.js.map +1 -1
  156. package/browser/driver/sap/SapConnectionOptions.js.map +1 -1
  157. package/browser/driver/sap/SapDriver.js +2 -0
  158. package/browser/driver/sap/SapDriver.js.map +1 -1
  159. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  160. package/browser/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -1
  161. package/browser/driver/spanner/SpannerConnectionOptions.js.map +1 -1
  162. package/browser/driver/spanner/SpannerDriver.js.map +1 -1
  163. package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -1
  164. package/browser/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
  165. package/browser/driver/sqlite/SqliteDriver.js.map +1 -1
  166. package/browser/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  167. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  168. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +6 -9
  169. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  170. package/browser/driver/sqljs/SqljsConnectionOptions.js.map +1 -1
  171. package/browser/driver/sqljs/SqljsDriver.js.map +1 -1
  172. package/browser/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  173. package/browser/driver/sqlserver/MssqlParameter.js.map +1 -1
  174. package/browser/driver/sqlserver/SqlServerConnectionCredentialsOptions.js.map +1 -1
  175. package/browser/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
  176. package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
  177. package/browser/driver/sqlserver/SqlServerQueryRunner.js +31 -32
  178. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  179. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js.map +1 -1
  180. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryDefaultAuthentication.js.map +1 -1
  181. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js.map +1 -1
  182. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js.map +1 -1
  183. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js.map +1 -1
  184. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.js.map +1 -1
  185. package/browser/driver/sqlserver/authentication/DefaultAuthentication.js.map +1 -1
  186. package/browser/driver/sqlserver/authentication/NtlmAuthentication.js.map +1 -1
  187. package/browser/driver/types/ColumnTypes.js.map +1 -1
  188. package/browser/driver/types/CteCapabilities.js.map +1 -1
  189. package/browser/driver/types/DataTypeDefaults.js.map +1 -1
  190. package/browser/driver/types/DatabaseType.js.map +1 -1
  191. package/browser/driver/types/GeoJsonTypes.js.map +1 -1
  192. package/browser/driver/types/IsolationLevel.js.map +1 -1
  193. package/browser/driver/types/MappedColumnTypes.js.map +1 -1
  194. package/browser/driver/types/MetadataTableType.js.map +1 -1
  195. package/browser/driver/types/ReplicationMode.js.map +1 -1
  196. package/browser/driver/types/UpsertType.js.map +1 -1
  197. package/browser/entity-manager/EntityManager.js.map +1 -1
  198. package/browser/entity-manager/EntityManagerFactory.js.map +1 -1
  199. package/browser/entity-manager/MongoEntityManager.js.map +1 -1
  200. package/browser/entity-manager/SqljsEntityManager.js.map +1 -1
  201. package/browser/entity-schema/EntitySchema.js.map +1 -1
  202. package/browser/entity-schema/EntitySchemaCheckOptions.js.map +1 -1
  203. package/browser/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
  204. package/browser/entity-schema/EntitySchemaEmbeddedColumnOptions.js.map +1 -1
  205. package/browser/entity-schema/EntitySchemaEmbeddedError.js.map +1 -1
  206. package/browser/entity-schema/EntitySchemaExclusionOptions.js.map +1 -1
  207. package/browser/entity-schema/EntitySchemaIndexOptions.js.map +1 -1
  208. package/browser/entity-schema/EntitySchemaInheritanceOptions.js.map +1 -1
  209. package/browser/entity-schema/EntitySchemaOptions.js.map +1 -1
  210. package/browser/entity-schema/EntitySchemaRelationIdOptions.js.map +1 -1
  211. package/browser/entity-schema/EntitySchemaRelationOptions.js.map +1 -1
  212. package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
  213. package/browser/entity-schema/EntitySchemaUniqueOptions.js.map +1 -1
  214. package/browser/error/AlreadyHasActiveConnectionError.js.map +1 -1
  215. package/browser/error/CannotAttachTreeChildrenEntityError.js.map +1 -1
  216. package/browser/error/CannotConnectAlreadyConnectedError.js.map +1 -1
  217. package/browser/error/CannotCreateEntityIdMapError.js.map +1 -1
  218. package/browser/error/CannotDetermineEntityError.js.map +1 -1
  219. package/browser/error/CannotExecuteNotConnectedError.js.map +1 -1
  220. package/browser/error/CannotGetEntityManagerNotConnectedError.js.map +1 -1
  221. package/browser/error/CannotReflectMethodParameterTypeError.js.map +1 -1
  222. package/browser/error/CircularRelationsError.js.map +1 -1
  223. package/browser/error/ColumnTypeUndefinedError.js.map +1 -1
  224. package/browser/error/ConnectionIsNotSetError.js.map +1 -1
  225. package/browser/error/ConnectionNotFoundError.js.map +1 -1
  226. package/browser/error/CustomRepositoryCannotInheritRepositoryError.js.map +1 -1
  227. package/browser/error/CustomRepositoryDoesNotHaveEntityError.js.map +1 -1
  228. package/browser/error/CustomRepositoryNotFoundError.js.map +1 -1
  229. package/browser/error/DataTypeNotSupportedError.js.map +1 -1
  230. package/browser/error/DriverOptionNotSetError.js.map +1 -1
  231. package/browser/error/DriverPackageNotInstalledError.js.map +1 -1
  232. package/browser/error/EntityMetadataNotFoundError.js.map +1 -1
  233. package/browser/error/EntityNotFoundError.js.map +1 -1
  234. package/browser/error/EntityPropertyNotFoundError.js.map +1 -1
  235. package/browser/error/FindRelationsNotFoundError.js.map +1 -1
  236. package/browser/error/ForbiddenTransactionModeOverrideError.js.map +1 -1
  237. package/browser/error/InitializedRelationError.js.map +1 -1
  238. package/browser/error/InsertValuesMissingError.js.map +1 -1
  239. package/browser/error/LimitOnUpdateNotSupportedError.js.map +1 -1
  240. package/browser/error/LockNotSupportedOnGivenDriverError.js.map +1 -1
  241. package/browser/error/MetadataAlreadyExistsError.js.map +1 -1
  242. package/browser/error/MetadataWithSuchNameAlreadyExistsError.js.map +1 -1
  243. package/browser/error/MissingDeleteDateColumnError.js.map +1 -1
  244. package/browser/error/MissingDriverError.js.map +1 -1
  245. package/browser/error/MissingJoinColumnError.js.map +1 -1
  246. package/browser/error/MissingJoinTableError.js.map +1 -1
  247. package/browser/error/MissingPrimaryColumnError.js.map +1 -1
  248. package/browser/error/MustBeEntityError.js.map +1 -1
  249. package/browser/error/NamingStrategyNotFoundError.js.map +1 -1
  250. package/browser/error/NestedSetMultipleRootError.js.map +1 -1
  251. package/browser/error/NoConnectionForRepositoryError.js.map +1 -1
  252. package/browser/error/NoConnectionOptionError.js.map +1 -1
  253. package/browser/error/NoNeedToReleaseEntityManagerError.js.map +1 -1
  254. package/browser/error/NoVersionOrUpdateDateColumnError.js.map +1 -1
  255. package/browser/error/OffsetWithoutLimitNotSupportedError.js.map +1 -1
  256. package/browser/error/OptimisticLockCanNotBeUsedError.js.map +1 -1
  257. package/browser/error/OptimisticLockVersionMismatchError.js.map +1 -1
  258. package/browser/error/PersistedEntityNotFoundError.js.map +1 -1
  259. package/browser/error/PessimisticLockTransactionRequiredError.js.map +1 -1
  260. package/browser/error/PrimaryColumnCannotBeNullableError.js.map +1 -1
  261. package/browser/error/QueryFailedError.js.map +1 -1
  262. package/browser/error/QueryRunnerAlreadyReleasedError.js.map +1 -1
  263. package/browser/error/QueryRunnerProviderAlreadyReleasedError.js.map +1 -1
  264. package/browser/error/RepositoryNotTreeError.js.map +1 -1
  265. package/browser/error/ReturningStatementNotSupportedError.js.map +1 -1
  266. package/browser/error/SubjectRemovedAndUpdatedError.js.map +1 -1
  267. package/browser/error/SubjectWithoutIdentifierError.js.map +1 -1
  268. package/browser/error/TransactionAlreadyStartedError.js.map +1 -1
  269. package/browser/error/TransactionNotStartedError.js.map +1 -1
  270. package/browser/error/TreeRepositoryNotSupportedError.js.map +1 -1
  271. package/browser/error/TypeORMError.js.map +1 -1
  272. package/browser/error/UpdateValuesMissingError.js.map +1 -1
  273. package/browser/error/UsingJoinColumnIsNotAllowedError.js.map +1 -1
  274. package/browser/error/UsingJoinColumnOnlyOnOneSideAllowedError.js.map +1 -1
  275. package/browser/error/UsingJoinTableIsNotAllowedError.js.map +1 -1
  276. package/browser/error/UsingJoinTableOnlyOnOneSideAllowedError.js.map +1 -1
  277. package/browser/error/index.js.map +1 -1
  278. package/browser/find-options/EqualOperator.js.map +1 -1
  279. package/browser/find-options/FindManyOptions.js.map +1 -1
  280. package/browser/find-options/FindOneOptions.js.map +1 -1
  281. package/browser/find-options/FindOperator.js.map +1 -1
  282. package/browser/find-options/FindOperatorType.js.map +1 -1
  283. package/browser/find-options/FindOptionsOrder.js.map +1 -1
  284. package/browser/find-options/FindOptionsRelations.js.map +1 -1
  285. package/browser/find-options/FindOptionsSelect.js.map +1 -1
  286. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  287. package/browser/find-options/FindOptionsWhere.js.map +1 -1
  288. package/browser/find-options/FindTreeOptions.js.map +1 -1
  289. package/browser/find-options/JoinOptions.js.map +1 -1
  290. package/browser/find-options/OrderByCondition.js.map +1 -1
  291. package/browser/find-options/mongodb/MongoFindManyOptions.js.map +1 -1
  292. package/browser/find-options/mongodb/MongoFindOneOptions.js.map +1 -1
  293. package/browser/find-options/operator/And.js.map +1 -1
  294. package/browser/find-options/operator/Any.js.map +1 -1
  295. package/browser/find-options/operator/ArrayContainedBy.js.map +1 -1
  296. package/browser/find-options/operator/ArrayContains.js.map +1 -1
  297. package/browser/find-options/operator/ArrayOverlap.js.map +1 -1
  298. package/browser/find-options/operator/Between.js.map +1 -1
  299. package/browser/find-options/operator/Equal.js.map +1 -1
  300. package/browser/find-options/operator/ILike.js.map +1 -1
  301. package/browser/find-options/operator/In.js.map +1 -1
  302. package/browser/find-options/operator/IsNull.js.map +1 -1
  303. package/browser/find-options/operator/JsonContains.js.map +1 -1
  304. package/browser/find-options/operator/LessThan.js.map +1 -1
  305. package/browser/find-options/operator/LessThanOrEqual.js.map +1 -1
  306. package/browser/find-options/operator/Like.js.map +1 -1
  307. package/browser/find-options/operator/MoreThan.js.map +1 -1
  308. package/browser/find-options/operator/MoreThanOrEqual.js.map +1 -1
  309. package/browser/find-options/operator/Not.js.map +1 -1
  310. package/browser/find-options/operator/Or.js.map +1 -1
  311. package/browser/find-options/operator/Raw.js.map +1 -1
  312. package/browser/globals.js.map +1 -1
  313. package/browser/index.js.map +1 -1
  314. package/browser/logger/AbstractLogger.js.map +1 -1
  315. package/browser/logger/AdvancedConsoleLogger.js.map +1 -1
  316. package/browser/logger/DebugLogger.js.map +1 -1
  317. package/browser/logger/FileLogger.js.map +1 -1
  318. package/browser/logger/Logger.js.map +1 -1
  319. package/browser/logger/LoggerFactory.js.map +1 -1
  320. package/browser/logger/LoggerOptions.js.map +1 -1
  321. package/browser/logger/SimpleConsoleLogger.js.map +1 -1
  322. package/browser/metadata/CheckMetadata.js.map +1 -1
  323. package/browser/metadata/ColumnMetadata.js.map +1 -1
  324. package/browser/metadata/EmbeddedMetadata.js.map +1 -1
  325. package/browser/metadata/EntityListenerMetadata.js.map +1 -1
  326. package/browser/metadata/EntityMetadata.js.map +1 -1
  327. package/browser/metadata/ExclusionMetadata.js.map +1 -1
  328. package/browser/metadata/ForeignKeyMetadata.js.map +1 -1
  329. package/browser/metadata/IndexMetadata.js.map +1 -1
  330. package/browser/metadata/RelationCountMetadata.js.map +1 -1
  331. package/browser/metadata/RelationIdMetadata.js.map +1 -1
  332. package/browser/metadata/RelationMetadata.js.map +1 -1
  333. package/browser/metadata/UniqueMetadata.js.map +1 -1
  334. package/browser/metadata/types/ClosureTreeOptions.js.map +1 -1
  335. package/browser/metadata/types/DeferrableType.js.map +1 -1
  336. package/browser/metadata/types/EventListenerTypes.js.map +1 -1
  337. package/browser/metadata/types/OnDeleteType.js.map +1 -1
  338. package/browser/metadata/types/OnUpdateType.js.map +1 -1
  339. package/browser/metadata/types/PropertyTypeInFunction.js.map +1 -1
  340. package/browser/metadata/types/RelationTypeInFunction.js.map +1 -1
  341. package/browser/metadata/types/RelationTypes.js.map +1 -1
  342. package/browser/metadata/types/TableTypes.js.map +1 -1
  343. package/browser/metadata/types/TreeTypes.js.map +1 -1
  344. package/browser/metadata-args/CheckMetadataArgs.js.map +1 -1
  345. package/browser/metadata-args/ColumnMetadataArgs.js.map +1 -1
  346. package/browser/metadata-args/DiscriminatorValueMetadataArgs.js.map +1 -1
  347. package/browser/metadata-args/EmbeddedMetadataArgs.js.map +1 -1
  348. package/browser/metadata-args/EntityListenerMetadataArgs.js.map +1 -1
  349. package/browser/metadata-args/EntityRepositoryMetadataArgs.js.map +1 -1
  350. package/browser/metadata-args/EntitySubscriberMetadataArgs.js.map +1 -1
  351. package/browser/metadata-args/ExclusionMetadataArgs.js.map +1 -1
  352. package/browser/metadata-args/GeneratedMetadataArgs.js.map +1 -1
  353. package/browser/metadata-args/IndexMetadataArgs.js.map +1 -1
  354. package/browser/metadata-args/InheritanceMetadataArgs.js.map +1 -1
  355. package/browser/metadata-args/JoinColumnMetadataArgs.js.map +1 -1
  356. package/browser/metadata-args/JoinTableMetadataArgs.js.map +1 -1
  357. package/browser/metadata-args/MetadataArgsStorage.js.map +1 -1
  358. package/browser/metadata-args/NamingStrategyMetadataArgs.js.map +1 -1
  359. package/browser/metadata-args/RelationCountMetadataArgs.js.map +1 -1
  360. package/browser/metadata-args/RelationIdMetadataArgs.js.map +1 -1
  361. package/browser/metadata-args/RelationMetadataArgs.js.map +1 -1
  362. package/browser/metadata-args/TableMetadataArgs.js.map +1 -1
  363. package/browser/metadata-args/TransactionEntityMetadataArgs.js.map +1 -1
  364. package/browser/metadata-args/TransactionRepositoryMetadataArgs.js.map +1 -1
  365. package/browser/metadata-args/TreeMetadataArgs.js.map +1 -1
  366. package/browser/metadata-args/UniqueMetadataArgs.js.map +1 -1
  367. package/browser/metadata-args/types/ColumnMode.js.map +1 -1
  368. package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
  369. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  370. package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
  371. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  372. package/browser/metadata-builder/MetadataUtils.js.map +1 -1
  373. package/browser/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  374. package/browser/migration/Migration.js.map +1 -1
  375. package/browser/migration/MigrationExecutor.js.map +1 -1
  376. package/browser/migration/MigrationInterface.js.map +1 -1
  377. package/browser/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  378. package/browser/naming-strategy/LegacyOracleNamingStrategy.js.map +1 -1
  379. package/browser/naming-strategy/NamingStrategyInterface.js.map +1 -1
  380. package/browser/persistence/EntityPersistExecutor.js.map +1 -1
  381. package/browser/persistence/Subject.js.map +1 -1
  382. package/browser/persistence/SubjectChangeMap.js.map +1 -1
  383. package/browser/persistence/SubjectChangedColumnsComputer.js.map +1 -1
  384. package/browser/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  385. package/browser/persistence/SubjectExecutor.js.map +1 -1
  386. package/browser/persistence/SubjectTopologicalSorter.js.map +1 -1
  387. package/browser/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  388. package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  389. package/browser/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  390. package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
  391. package/browser/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  392. package/browser/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  393. package/browser/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
  394. package/browser/platform/BrowserConnectionOptionsReaderDummy.js.map +1 -1
  395. package/browser/platform/BrowserDirectoryExportedClassesLoader.js.map +1 -1
  396. package/browser/platform/BrowserDisabledDriversDummy.js.map +1 -1
  397. package/browser/platform/BrowserFileLoggerDummy.js.map +1 -1
  398. package/browser/platform/BrowserPlatformTools.js.map +1 -1
  399. package/browser/platform/PlatformTools.js.map +1 -1
  400. package/browser/query-builder/Alias.js.map +1 -1
  401. package/browser/query-builder/Brackets.js.map +1 -1
  402. package/browser/query-builder/DeleteQueryBuilder.js.map +1 -1
  403. package/browser/query-builder/InsertOrUpdateOptions.js.map +1 -1
  404. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  405. package/browser/query-builder/JoinAttribute.js.map +1 -1
  406. package/browser/query-builder/JoinOptions.js.map +1 -1
  407. package/browser/query-builder/NotBrackets.js.map +1 -1
  408. package/browser/query-builder/QueryBuilder.js.map +1 -1
  409. package/browser/query-builder/QueryBuilderCte.js.map +1 -1
  410. package/browser/query-builder/QueryBuilderUtils.js.map +1 -1
  411. package/browser/query-builder/QueryExpressionMap.js.map +1 -1
  412. package/browser/query-builder/QueryPartialEntity.js.map +1 -1
  413. package/browser/query-builder/RelationIdLoader.js +3 -2
  414. package/browser/query-builder/RelationIdLoader.js.map +1 -1
  415. package/browser/query-builder/RelationLoader.js.map +1 -1
  416. package/browser/query-builder/RelationQueryBuilder.js.map +1 -1
  417. package/browser/query-builder/RelationRemover.js.map +1 -1
  418. package/browser/query-builder/RelationUpdater.js.map +1 -1
  419. package/browser/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
  420. package/browser/query-builder/SelectQuery.js.map +1 -1
  421. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  422. package/browser/query-builder/SelectQueryBuilderOption.js.map +1 -1
  423. package/browser/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  424. package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
  425. package/browser/query-builder/WhereClause.js.map +1 -1
  426. package/browser/query-builder/WhereExpressionBuilder.js.map +1 -1
  427. package/browser/query-builder/index.js.map +1 -1
  428. package/browser/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
  429. package/browser/query-builder/relation-count/RelationCountLoadResult.js.map +1 -1
  430. package/browser/query-builder/relation-count/RelationCountLoader.js.map +1 -1
  431. package/browser/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js.map +1 -1
  432. package/browser/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
  433. package/browser/query-builder/relation-id/RelationIdLoadResult.js.map +1 -1
  434. package/browser/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  435. package/browser/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js.map +1 -1
  436. package/browser/query-builder/result/DeleteResult.js.map +1 -1
  437. package/browser/query-builder/result/InsertResult.js.map +1 -1
  438. package/browser/query-builder/result/UpdateResult.js.map +1 -1
  439. package/browser/query-builder/transformer/DocumentToEntityTransformer.js.map +1 -1
  440. package/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
  441. package/browser/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
  442. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  443. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  444. package/browser/query-runner/QueryLock.js.map +1 -1
  445. package/browser/query-runner/QueryResult.js.map +1 -1
  446. package/browser/query-runner/QueryRunner.js.map +1 -1
  447. package/browser/repository/AbstractRepository.js.map +1 -1
  448. package/browser/repository/BaseEntity.js.map +1 -1
  449. package/browser/repository/EntityId.js.map +1 -1
  450. package/browser/repository/FindTreesOptions.js.map +1 -1
  451. package/browser/repository/MongoRepository.js.map +1 -1
  452. package/browser/repository/RemoveOptions.js.map +1 -1
  453. package/browser/repository/Repository.js.map +1 -1
  454. package/browser/repository/SaveOptions.js.map +1 -1
  455. package/browser/repository/TreeRepository.js.map +1 -1
  456. package/browser/repository/UpsertOptions.js.map +1 -1
  457. package/browser/schema-builder/MongoSchemaBuilder.js.map +1 -1
  458. package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  459. package/browser/schema-builder/SchemaBuilder.js.map +1 -1
  460. package/browser/schema-builder/options/TableCheckOptions.js.map +1 -1
  461. package/browser/schema-builder/options/TableColumnOptions.js.map +1 -1
  462. package/browser/schema-builder/options/TableExclusionOptions.js.map +1 -1
  463. package/browser/schema-builder/options/TableForeignKeyOptions.js.map +1 -1
  464. package/browser/schema-builder/options/TableIndexOptions.js.map +1 -1
  465. package/browser/schema-builder/options/TableOptions.js.map +1 -1
  466. package/browser/schema-builder/options/TableUniqueOptions.js.map +1 -1
  467. package/browser/schema-builder/options/ViewOptions.js.map +1 -1
  468. package/browser/schema-builder/table/Table.js.map +1 -1
  469. package/browser/schema-builder/table/TableCheck.js.map +1 -1
  470. package/browser/schema-builder/table/TableColumn.js.map +1 -1
  471. package/browser/schema-builder/table/TableExclusion.js.map +1 -1
  472. package/browser/schema-builder/table/TableForeignKey.js.map +1 -1
  473. package/browser/schema-builder/table/TableIndex.js.map +1 -1
  474. package/browser/schema-builder/table/TableUnique.js.map +1 -1
  475. package/browser/schema-builder/util/TableUtils.js.map +1 -1
  476. package/browser/schema-builder/util/ViewUtils.js.map +1 -1
  477. package/browser/schema-builder/view/View.js.map +1 -1
  478. package/browser/subscriber/Broadcaster.js.map +1 -1
  479. package/browser/subscriber/BroadcasterResult.js.map +1 -1
  480. package/browser/subscriber/EntitySubscriberInterface.js.map +1 -1
  481. package/browser/subscriber/event/InsertEvent.js.map +1 -1
  482. package/browser/subscriber/event/LoadEvent.js.map +1 -1
  483. package/browser/subscriber/event/QueryEvent.js.map +1 -1
  484. package/browser/subscriber/event/RecoverEvent.js.map +1 -1
  485. package/browser/subscriber/event/RemoveEvent.js.map +1 -1
  486. package/browser/subscriber/event/SoftRemoveEvent.js.map +1 -1
  487. package/browser/subscriber/event/TransactionCommitEvent.js.map +1 -1
  488. package/browser/subscriber/event/TransactionRollbackEvent.js.map +1 -1
  489. package/browser/subscriber/event/TransactionStartEvent.js.map +1 -1
  490. package/browser/subscriber/event/UpdateEvent.js.map +1 -1
  491. package/browser/util/ApplyValueTransformers.js.map +1 -1
  492. package/browser/util/DateUtils.js.map +1 -1
  493. package/browser/util/DepGraph.js.map +1 -1
  494. package/browser/util/DirectoryExportedClassesLoader.js.map +1 -1
  495. package/browser/util/ImportUtils.js.map +1 -1
  496. package/browser/util/InstanceChecker.js.map +1 -1
  497. package/browser/util/ObjectUtils.js.map +1 -1
  498. package/browser/util/OrmUtils.js.map +1 -1
  499. package/browser/util/PathUtils.js.map +1 -1
  500. package/browser/util/RandomGenerator.js.map +1 -1
  501. package/browser/util/StringUtils.js.map +1 -1
  502. package/browser/util/TreeRepositoryUtils.js.map +1 -1
  503. package/browser/util/VersionUtils.js.map +1 -1
  504. package/browser/util/escapeRegExp.js.map +1 -1
  505. package/cache/DbQueryResultCache.js.map +1 -1
  506. package/cache/QueryResultCache.js.map +1 -1
  507. package/cache/QueryResultCacheFactory.js.map +1 -1
  508. package/cache/QueryResultCacheOptions.js.map +1 -1
  509. package/cache/RedisQueryResultCache.js.map +1 -1
  510. package/cli-ts-node-commonjs.js.map +1 -1
  511. package/cli-ts-node-esm.js.map +1 -1
  512. package/cli.js.map +1 -1
  513. package/commands/CacheClearCommand.js.map +1 -1
  514. package/commands/CommandUtils.js.map +1 -1
  515. package/commands/EntityCreateCommand.js +6 -6
  516. package/commands/EntityCreateCommand.js.map +1 -1
  517. package/commands/InitCommand.js +294 -302
  518. package/commands/InitCommand.js.map +1 -1
  519. package/commands/MigrationCreateCommand.js +22 -22
  520. package/commands/MigrationCreateCommand.js.map +1 -1
  521. package/commands/MigrationGenerateCommand.js +31 -31
  522. package/commands/MigrationGenerateCommand.js.map +1 -1
  523. package/commands/MigrationRevertCommand.js.map +1 -1
  524. package/commands/MigrationRunCommand.js.map +1 -1
  525. package/commands/MigrationShowCommand.js.map +1 -1
  526. package/commands/QueryCommand.js.map +1 -1
  527. package/commands/SchemaDropCommand.js.map +1 -1
  528. package/commands/SchemaLogCommand.js.map +1 -1
  529. package/commands/SchemaSyncCommand.js.map +1 -1
  530. package/commands/SubscriberCreateCommand.js +6 -6
  531. package/commands/SubscriberCreateCommand.js.map +1 -1
  532. package/commands/VersionCommand.js.map +1 -1
  533. package/common/DeepPartial.js.map +1 -1
  534. package/common/EntityTarget.js.map +1 -1
  535. package/common/MixedList.js.map +1 -1
  536. package/common/NonNever.js.map +1 -1
  537. package/common/ObjectLiteral.js.map +1 -1
  538. package/common/ObjectType.js.map +1 -1
  539. package/common/PickKeysByType.js.map +1 -1
  540. package/common/RelationType.js.map +1 -1
  541. package/connection/BaseConnectionOptions.js.map +1 -1
  542. package/connection/Connection.js.map +1 -1
  543. package/connection/ConnectionManager.js.map +1 -1
  544. package/connection/ConnectionMetadataBuilder.js.map +1 -1
  545. package/connection/ConnectionOptions.js.map +1 -1
  546. package/connection/ConnectionOptionsReader.js.map +1 -1
  547. package/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
  548. package/container.js.map +1 -1
  549. package/data-source/BaseDataSourceOptions.js.map +1 -1
  550. package/data-source/DataSource.js.map +1 -1
  551. package/data-source/DataSourceOptions.js.map +1 -1
  552. package/data-source/index.js.map +1 -1
  553. package/decorator/Check.js.map +1 -1
  554. package/decorator/EntityRepository.js.map +1 -1
  555. package/decorator/Exclusion.js.map +1 -1
  556. package/decorator/Generated.js.map +1 -1
  557. package/decorator/Index.js.map +1 -1
  558. package/decorator/Unique.js.map +1 -1
  559. package/decorator/columns/Column.js.map +1 -1
  560. package/decorator/columns/CreateDateColumn.js.map +1 -1
  561. package/decorator/columns/DeleteDateColumn.js.map +1 -1
  562. package/decorator/columns/ObjectIdColumn.js.map +1 -1
  563. package/decorator/columns/PrimaryColumn.js.map +1 -1
  564. package/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
  565. package/decorator/columns/UpdateDateColumn.js.map +1 -1
  566. package/decorator/columns/VersionColumn.js.map +1 -1
  567. package/decorator/columns/ViewColumn.js.map +1 -1
  568. package/decorator/columns/VirtualColumn.js.map +1 -1
  569. package/decorator/entity/ChildEntity.js.map +1 -1
  570. package/decorator/entity/Entity.js.map +1 -1
  571. package/decorator/entity/TableInheritance.js.map +1 -1
  572. package/decorator/entity-view/ViewEntity.js.map +1 -1
  573. package/decorator/listeners/AfterInsert.js.map +1 -1
  574. package/decorator/listeners/AfterLoad.js.map +1 -1
  575. package/decorator/listeners/AfterRecover.js.map +1 -1
  576. package/decorator/listeners/AfterRemove.js.map +1 -1
  577. package/decorator/listeners/AfterSoftRemove.js.map +1 -1
  578. package/decorator/listeners/AfterUpdate.js.map +1 -1
  579. package/decorator/listeners/BeforeInsert.js.map +1 -1
  580. package/decorator/listeners/BeforeRecover.js.map +1 -1
  581. package/decorator/listeners/BeforeRemove.js.map +1 -1
  582. package/decorator/listeners/BeforeSoftRemove.js.map +1 -1
  583. package/decorator/listeners/BeforeUpdate.js.map +1 -1
  584. package/decorator/listeners/EventSubscriber.js.map +1 -1
  585. package/decorator/options/ColumnCommonOptions.js.map +1 -1
  586. package/decorator/options/ColumnEmbeddedOptions.js.map +1 -1
  587. package/decorator/options/ColumnEnumOptions.js.map +1 -1
  588. package/decorator/options/ColumnHstoreOptions.js.map +1 -1
  589. package/decorator/options/ColumnNumericOptions.js.map +1 -1
  590. package/decorator/options/ColumnOptions.js.map +1 -1
  591. package/decorator/options/ColumnWithLengthOptions.js.map +1 -1
  592. package/decorator/options/ColumnWithWidthOptions.js.map +1 -1
  593. package/decorator/options/EntityOptions.js.map +1 -1
  594. package/decorator/options/IndexOptions.js.map +1 -1
  595. package/decorator/options/JoinColumnOptions.js.map +1 -1
  596. package/decorator/options/JoinTableMultipleColumnsOptions.js.map +1 -1
  597. package/decorator/options/JoinTableOptions.js.map +1 -1
  598. package/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -1
  599. package/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
  600. package/decorator/options/PrimaryGeneratedColumnUUIDOptions.js.map +1 -1
  601. package/decorator/options/RelationOptions.js.map +1 -1
  602. package/decorator/options/SpatialColumnOptions.js.map +1 -1
  603. package/decorator/options/TransactionOptions.js.map +1 -1
  604. package/decorator/options/UniqueOptions.js.map +1 -1
  605. package/decorator/options/ValueTransformer.js.map +1 -1
  606. package/decorator/options/ViewColumnOptions.js.map +1 -1
  607. package/decorator/options/ViewEntityOptions.js.map +1 -1
  608. package/decorator/options/VirtualColumnOptions.js.map +1 -1
  609. package/decorator/relations/JoinColumn.js.map +1 -1
  610. package/decorator/relations/JoinTable.js.map +1 -1
  611. package/decorator/relations/ManyToMany.js.map +1 -1
  612. package/decorator/relations/ManyToOne.js.map +1 -1
  613. package/decorator/relations/OneToMany.js.map +1 -1
  614. package/decorator/relations/OneToOne.js.map +1 -1
  615. package/decorator/relations/RelationCount.js.map +1 -1
  616. package/decorator/relations/RelationId.js.map +1 -1
  617. package/decorator/tree/Tree.js.map +1 -1
  618. package/decorator/tree/TreeChildren.js.map +1 -1
  619. package/decorator/tree/TreeLevelColumn.js.map +1 -1
  620. package/decorator/tree/TreeParent.js.map +1 -1
  621. package/driver/Driver.js.map +1 -1
  622. package/driver/DriverFactory.js.map +1 -1
  623. package/driver/DriverUtils.js.map +1 -1
  624. package/driver/Query.js.map +1 -1
  625. package/driver/SqlInMemory.js.map +1 -1
  626. package/driver/aurora-mysql/AuroraMysqlConnection.js.map +1 -1
  627. package/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.js.map +1 -1
  628. package/driver/aurora-mysql/AuroraMysqlConnectionOptions.js.map +1 -1
  629. package/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  630. package/driver/aurora-mysql/AuroraMysqlQueryRunner.js +6 -9
  631. package/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
  632. package/driver/aurora-postgres/AuroraPostgresConnectionOptions.js.map +1 -1
  633. package/driver/aurora-postgres/AuroraPostgresDriver.js.map +1 -1
  634. package/driver/aurora-postgres/AuroraPostgresQueryRunner.js +6 -9
  635. package/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
  636. package/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js.map +1 -1
  637. package/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  638. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  639. package/driver/capacitor/CapacitorConnectionOptions.js.map +1 -1
  640. package/driver/capacitor/CapacitorDriver.js.map +1 -1
  641. package/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
  642. package/driver/cockroachdb/CockroachConnectionCredentialsOptions.js.map +1 -1
  643. package/driver/cockroachdb/CockroachConnectionOptions.js.map +1 -1
  644. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  645. package/driver/cockroachdb/CockroachQueryRunner.js +7 -11
  646. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  647. package/driver/cordova/CordovaConnectionOptions.js.map +1 -1
  648. package/driver/cordova/CordovaDriver.js.map +1 -1
  649. package/driver/cordova/CordovaQueryRunner.js.map +1 -1
  650. package/driver/expo/ExpoConnectionOptions.js.map +1 -1
  651. package/driver/expo/ExpoDriver.js.map +1 -1
  652. package/driver/expo/ExpoQueryRunner.js.map +1 -1
  653. package/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  654. package/driver/mongodb/MongoDriver.js.map +1 -1
  655. package/driver/mongodb/MongoQueryRunner.js.map +1 -1
  656. package/driver/mongodb/bson.typings.js.map +1 -1
  657. package/driver/mongodb/typings.js.map +1 -1
  658. package/driver/mysql/MysqlConnectionCredentialsOptions.js.map +1 -1
  659. package/driver/mysql/MysqlConnectionOptions.js.map +1 -1
  660. package/driver/mysql/MysqlDriver.js.map +1 -1
  661. package/driver/mysql/MysqlQueryRunner.js +77 -80
  662. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  663. package/driver/nativescript/NativescriptConnectionOptions.js.map +1 -1
  664. package/driver/nativescript/NativescriptDriver.js.map +1 -1
  665. package/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  666. package/driver/oracle/OracleConnectionCredentialsOptions.js.map +1 -1
  667. package/driver/oracle/OracleConnectionOptions.js.map +1 -1
  668. package/driver/oracle/OracleDriver.js.map +1 -1
  669. package/driver/oracle/OracleQueryRunner.js +4 -6
  670. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  671. package/driver/postgres/PostgresConnectionCredentialsOptions.js.map +1 -1
  672. package/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  673. package/driver/postgres/PostgresDriver.js.map +1 -1
  674. package/driver/postgres/PostgresQueryRunner.js +6 -9
  675. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  676. package/driver/react-native/ReactNativeConnectionOptions.js.map +1 -1
  677. package/driver/react-native/ReactNativeDriver.js.map +1 -1
  678. package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  679. package/driver/sap/SapConnectionCredentialsOptions.js.map +1 -1
  680. package/driver/sap/SapConnectionOptions.js.map +1 -1
  681. package/driver/sap/SapDriver.js +2 -0
  682. package/driver/sap/SapDriver.js.map +1 -1
  683. package/driver/sap/SapQueryRunner.js.map +1 -1
  684. package/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -1
  685. package/driver/spanner/SpannerConnectionOptions.js.map +1 -1
  686. package/driver/spanner/SpannerDriver.js.map +1 -1
  687. package/driver/spanner/SpannerQueryRunner.js.map +1 -1
  688. package/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
  689. package/driver/sqlite/SqliteDriver.js.map +1 -1
  690. package/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  691. package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  692. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +6 -9
  693. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  694. package/driver/sqljs/SqljsConnectionOptions.js.map +1 -1
  695. package/driver/sqljs/SqljsDriver.js.map +1 -1
  696. package/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  697. package/driver/sqlserver/MssqlParameter.js.map +1 -1
  698. package/driver/sqlserver/SqlServerConnectionCredentialsOptions.js.map +1 -1
  699. package/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
  700. package/driver/sqlserver/SqlServerDriver.js.map +1 -1
  701. package/driver/sqlserver/SqlServerQueryRunner.js +31 -32
  702. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  703. package/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js.map +1 -1
  704. package/driver/sqlserver/authentication/AzureActiveDirectoryDefaultAuthentication.js.map +1 -1
  705. package/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js.map +1 -1
  706. package/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js.map +1 -1
  707. package/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js.map +1 -1
  708. package/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.js.map +1 -1
  709. package/driver/sqlserver/authentication/DefaultAuthentication.js.map +1 -1
  710. package/driver/sqlserver/authentication/NtlmAuthentication.js.map +1 -1
  711. package/driver/types/ColumnTypes.js.map +1 -1
  712. package/driver/types/CteCapabilities.js.map +1 -1
  713. package/driver/types/DataTypeDefaults.js.map +1 -1
  714. package/driver/types/DatabaseType.js.map +1 -1
  715. package/driver/types/GeoJsonTypes.js.map +1 -1
  716. package/driver/types/IsolationLevel.js.map +1 -1
  717. package/driver/types/MappedColumnTypes.js.map +1 -1
  718. package/driver/types/MetadataTableType.js.map +1 -1
  719. package/driver/types/ReplicationMode.js.map +1 -1
  720. package/driver/types/UpsertType.js.map +1 -1
  721. package/entity-manager/EntityManager.js.map +1 -1
  722. package/entity-manager/EntityManagerFactory.js.map +1 -1
  723. package/entity-manager/MongoEntityManager.js.map +1 -1
  724. package/entity-manager/SqljsEntityManager.js.map +1 -1
  725. package/entity-schema/EntitySchema.js.map +1 -1
  726. package/entity-schema/EntitySchemaCheckOptions.js.map +1 -1
  727. package/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
  728. package/entity-schema/EntitySchemaEmbeddedColumnOptions.js.map +1 -1
  729. package/entity-schema/EntitySchemaEmbeddedError.js.map +1 -1
  730. package/entity-schema/EntitySchemaExclusionOptions.js.map +1 -1
  731. package/entity-schema/EntitySchemaIndexOptions.js.map +1 -1
  732. package/entity-schema/EntitySchemaInheritanceOptions.js.map +1 -1
  733. package/entity-schema/EntitySchemaOptions.js.map +1 -1
  734. package/entity-schema/EntitySchemaRelationIdOptions.js.map +1 -1
  735. package/entity-schema/EntitySchemaRelationOptions.js.map +1 -1
  736. package/entity-schema/EntitySchemaTransformer.js.map +1 -1
  737. package/entity-schema/EntitySchemaUniqueOptions.js.map +1 -1
  738. package/error/AlreadyHasActiveConnectionError.js.map +1 -1
  739. package/error/CannotAttachTreeChildrenEntityError.js.map +1 -1
  740. package/error/CannotConnectAlreadyConnectedError.js.map +1 -1
  741. package/error/CannotCreateEntityIdMapError.js.map +1 -1
  742. package/error/CannotDetermineEntityError.js.map +1 -1
  743. package/error/CannotExecuteNotConnectedError.js.map +1 -1
  744. package/error/CannotGetEntityManagerNotConnectedError.js.map +1 -1
  745. package/error/CannotReflectMethodParameterTypeError.js.map +1 -1
  746. package/error/CircularRelationsError.js.map +1 -1
  747. package/error/ColumnTypeUndefinedError.js.map +1 -1
  748. package/error/ConnectionIsNotSetError.js.map +1 -1
  749. package/error/ConnectionNotFoundError.js.map +1 -1
  750. package/error/CustomRepositoryCannotInheritRepositoryError.js.map +1 -1
  751. package/error/CustomRepositoryDoesNotHaveEntityError.js.map +1 -1
  752. package/error/CustomRepositoryNotFoundError.js.map +1 -1
  753. package/error/DataTypeNotSupportedError.js.map +1 -1
  754. package/error/DriverOptionNotSetError.js.map +1 -1
  755. package/error/DriverPackageNotInstalledError.js.map +1 -1
  756. package/error/EntityMetadataNotFoundError.js.map +1 -1
  757. package/error/EntityNotFoundError.js.map +1 -1
  758. package/error/EntityPropertyNotFoundError.js.map +1 -1
  759. package/error/FindRelationsNotFoundError.js.map +1 -1
  760. package/error/ForbiddenTransactionModeOverrideError.js.map +1 -1
  761. package/error/InitializedRelationError.js.map +1 -1
  762. package/error/InsertValuesMissingError.js.map +1 -1
  763. package/error/LimitOnUpdateNotSupportedError.js.map +1 -1
  764. package/error/LockNotSupportedOnGivenDriverError.js.map +1 -1
  765. package/error/MetadataAlreadyExistsError.js.map +1 -1
  766. package/error/MetadataWithSuchNameAlreadyExistsError.js.map +1 -1
  767. package/error/MissingDeleteDateColumnError.js.map +1 -1
  768. package/error/MissingDriverError.js.map +1 -1
  769. package/error/MissingJoinColumnError.js.map +1 -1
  770. package/error/MissingJoinTableError.js.map +1 -1
  771. package/error/MissingPrimaryColumnError.js.map +1 -1
  772. package/error/MustBeEntityError.js.map +1 -1
  773. package/error/NamingStrategyNotFoundError.js.map +1 -1
  774. package/error/NestedSetMultipleRootError.js.map +1 -1
  775. package/error/NoConnectionForRepositoryError.js.map +1 -1
  776. package/error/NoConnectionOptionError.js.map +1 -1
  777. package/error/NoNeedToReleaseEntityManagerError.js.map +1 -1
  778. package/error/NoVersionOrUpdateDateColumnError.js.map +1 -1
  779. package/error/OffsetWithoutLimitNotSupportedError.js.map +1 -1
  780. package/error/OptimisticLockCanNotBeUsedError.js.map +1 -1
  781. package/error/OptimisticLockVersionMismatchError.js.map +1 -1
  782. package/error/PersistedEntityNotFoundError.js.map +1 -1
  783. package/error/PessimisticLockTransactionRequiredError.js.map +1 -1
  784. package/error/PrimaryColumnCannotBeNullableError.js.map +1 -1
  785. package/error/QueryFailedError.js.map +1 -1
  786. package/error/QueryRunnerAlreadyReleasedError.js.map +1 -1
  787. package/error/QueryRunnerProviderAlreadyReleasedError.js.map +1 -1
  788. package/error/RepositoryNotTreeError.js.map +1 -1
  789. package/error/ReturningStatementNotSupportedError.js.map +1 -1
  790. package/error/SubjectRemovedAndUpdatedError.js.map +1 -1
  791. package/error/SubjectWithoutIdentifierError.js.map +1 -1
  792. package/error/TransactionAlreadyStartedError.js.map +1 -1
  793. package/error/TransactionNotStartedError.js.map +1 -1
  794. package/error/TreeRepositoryNotSupportedError.js.map +1 -1
  795. package/error/TypeORMError.js.map +1 -1
  796. package/error/UpdateValuesMissingError.js.map +1 -1
  797. package/error/UsingJoinColumnIsNotAllowedError.js.map +1 -1
  798. package/error/UsingJoinColumnOnlyOnOneSideAllowedError.js.map +1 -1
  799. package/error/UsingJoinTableIsNotAllowedError.js.map +1 -1
  800. package/error/UsingJoinTableOnlyOnOneSideAllowedError.js.map +1 -1
  801. package/error/index.js.map +1 -1
  802. package/find-options/EqualOperator.js.map +1 -1
  803. package/find-options/FindManyOptions.js.map +1 -1
  804. package/find-options/FindOneOptions.js.map +1 -1
  805. package/find-options/FindOperator.js.map +1 -1
  806. package/find-options/FindOperatorType.js.map +1 -1
  807. package/find-options/FindOptionsOrder.js.map +1 -1
  808. package/find-options/FindOptionsRelations.js.map +1 -1
  809. package/find-options/FindOptionsSelect.js.map +1 -1
  810. package/find-options/FindOptionsUtils.js.map +1 -1
  811. package/find-options/FindOptionsWhere.js.map +1 -1
  812. package/find-options/FindTreeOptions.js.map +1 -1
  813. package/find-options/JoinOptions.js.map +1 -1
  814. package/find-options/OrderByCondition.js.map +1 -1
  815. package/find-options/mongodb/MongoFindManyOptions.js.map +1 -1
  816. package/find-options/mongodb/MongoFindOneOptions.js.map +1 -1
  817. package/find-options/operator/And.js.map +1 -1
  818. package/find-options/operator/Any.js.map +1 -1
  819. package/find-options/operator/ArrayContainedBy.js.map +1 -1
  820. package/find-options/operator/ArrayContains.js.map +1 -1
  821. package/find-options/operator/ArrayOverlap.js.map +1 -1
  822. package/find-options/operator/Between.js.map +1 -1
  823. package/find-options/operator/Equal.js.map +1 -1
  824. package/find-options/operator/ILike.js.map +1 -1
  825. package/find-options/operator/In.js.map +1 -1
  826. package/find-options/operator/IsNull.js.map +1 -1
  827. package/find-options/operator/JsonContains.js.map +1 -1
  828. package/find-options/operator/LessThan.js.map +1 -1
  829. package/find-options/operator/LessThanOrEqual.js.map +1 -1
  830. package/find-options/operator/Like.js.map +1 -1
  831. package/find-options/operator/MoreThan.js.map +1 -1
  832. package/find-options/operator/MoreThanOrEqual.js.map +1 -1
  833. package/find-options/operator/Not.js.map +1 -1
  834. package/find-options/operator/Or.js.map +1 -1
  835. package/find-options/operator/Raw.js.map +1 -1
  836. package/globals.js.map +1 -1
  837. package/index.js.map +1 -1
  838. package/logger/AbstractLogger.js.map +1 -1
  839. package/logger/AdvancedConsoleLogger.js.map +1 -1
  840. package/logger/DebugLogger.js.map +1 -1
  841. package/logger/FileLogger.js.map +1 -1
  842. package/logger/Logger.js.map +1 -1
  843. package/logger/LoggerFactory.js.map +1 -1
  844. package/logger/LoggerOptions.js.map +1 -1
  845. package/logger/SimpleConsoleLogger.js.map +1 -1
  846. package/metadata/CheckMetadata.js.map +1 -1
  847. package/metadata/ColumnMetadata.js.map +1 -1
  848. package/metadata/EmbeddedMetadata.js.map +1 -1
  849. package/metadata/EntityListenerMetadata.js.map +1 -1
  850. package/metadata/EntityMetadata.js.map +1 -1
  851. package/metadata/ExclusionMetadata.js.map +1 -1
  852. package/metadata/ForeignKeyMetadata.js.map +1 -1
  853. package/metadata/IndexMetadata.js.map +1 -1
  854. package/metadata/RelationCountMetadata.js.map +1 -1
  855. package/metadata/RelationIdMetadata.js.map +1 -1
  856. package/metadata/RelationMetadata.js.map +1 -1
  857. package/metadata/UniqueMetadata.js.map +1 -1
  858. package/metadata/types/ClosureTreeOptions.js.map +1 -1
  859. package/metadata/types/DeferrableType.js.map +1 -1
  860. package/metadata/types/EventListenerTypes.js.map +1 -1
  861. package/metadata/types/OnDeleteType.js.map +1 -1
  862. package/metadata/types/OnUpdateType.js.map +1 -1
  863. package/metadata/types/PropertyTypeInFunction.js.map +1 -1
  864. package/metadata/types/RelationTypeInFunction.js.map +1 -1
  865. package/metadata/types/RelationTypes.js.map +1 -1
  866. package/metadata/types/TableTypes.js.map +1 -1
  867. package/metadata/types/TreeTypes.js.map +1 -1
  868. package/metadata-args/CheckMetadataArgs.js.map +1 -1
  869. package/metadata-args/ColumnMetadataArgs.js.map +1 -1
  870. package/metadata-args/DiscriminatorValueMetadataArgs.js.map +1 -1
  871. package/metadata-args/EmbeddedMetadataArgs.js.map +1 -1
  872. package/metadata-args/EntityListenerMetadataArgs.js.map +1 -1
  873. package/metadata-args/EntityRepositoryMetadataArgs.js.map +1 -1
  874. package/metadata-args/EntitySubscriberMetadataArgs.js.map +1 -1
  875. package/metadata-args/ExclusionMetadataArgs.js.map +1 -1
  876. package/metadata-args/GeneratedMetadataArgs.js.map +1 -1
  877. package/metadata-args/IndexMetadataArgs.js.map +1 -1
  878. package/metadata-args/InheritanceMetadataArgs.js.map +1 -1
  879. package/metadata-args/JoinColumnMetadataArgs.js.map +1 -1
  880. package/metadata-args/JoinTableMetadataArgs.js.map +1 -1
  881. package/metadata-args/MetadataArgsStorage.js.map +1 -1
  882. package/metadata-args/NamingStrategyMetadataArgs.js.map +1 -1
  883. package/metadata-args/RelationCountMetadataArgs.js.map +1 -1
  884. package/metadata-args/RelationIdMetadataArgs.js.map +1 -1
  885. package/metadata-args/RelationMetadataArgs.js.map +1 -1
  886. package/metadata-args/TableMetadataArgs.js.map +1 -1
  887. package/metadata-args/TransactionEntityMetadataArgs.js.map +1 -1
  888. package/metadata-args/TransactionRepositoryMetadataArgs.js.map +1 -1
  889. package/metadata-args/TreeMetadataArgs.js.map +1 -1
  890. package/metadata-args/UniqueMetadataArgs.js.map +1 -1
  891. package/metadata-args/types/ColumnMode.js.map +1 -1
  892. package/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
  893. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  894. package/metadata-builder/EntityMetadataValidator.js.map +1 -1
  895. package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  896. package/metadata-builder/MetadataUtils.js.map +1 -1
  897. package/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  898. package/migration/Migration.js.map +1 -1
  899. package/migration/MigrationExecutor.js.map +1 -1
  900. package/migration/MigrationInterface.js.map +1 -1
  901. package/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  902. package/naming-strategy/LegacyOracleNamingStrategy.js.map +1 -1
  903. package/naming-strategy/NamingStrategyInterface.js.map +1 -1
  904. package/package.json +1 -260
  905. package/persistence/EntityPersistExecutor.js.map +1 -1
  906. package/persistence/Subject.js.map +1 -1
  907. package/persistence/SubjectChangeMap.js.map +1 -1
  908. package/persistence/SubjectChangedColumnsComputer.js.map +1 -1
  909. package/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  910. package/persistence/SubjectExecutor.js.map +1 -1
  911. package/persistence/SubjectTopologicalSorter.js.map +1 -1
  912. package/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  913. package/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  914. package/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  915. package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
  916. package/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  917. package/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  918. package/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
  919. package/platform/PlatformTools.js.map +1 -1
  920. package/query-builder/Alias.js.map +1 -1
  921. package/query-builder/Brackets.js.map +1 -1
  922. package/query-builder/DeleteQueryBuilder.js.map +1 -1
  923. package/query-builder/InsertOrUpdateOptions.js.map +1 -1
  924. package/query-builder/InsertQueryBuilder.js.map +1 -1
  925. package/query-builder/JoinAttribute.js.map +1 -1
  926. package/query-builder/JoinOptions.js.map +1 -1
  927. package/query-builder/NotBrackets.js.map +1 -1
  928. package/query-builder/QueryBuilder.js.map +1 -1
  929. package/query-builder/QueryBuilderCte.js.map +1 -1
  930. package/query-builder/QueryBuilderUtils.js.map +1 -1
  931. package/query-builder/QueryExpressionMap.js.map +1 -1
  932. package/query-builder/QueryPartialEntity.js.map +1 -1
  933. package/query-builder/RelationIdLoader.js +3 -2
  934. package/query-builder/RelationIdLoader.js.map +1 -1
  935. package/query-builder/RelationLoader.js.map +1 -1
  936. package/query-builder/RelationQueryBuilder.js.map +1 -1
  937. package/query-builder/RelationRemover.js.map +1 -1
  938. package/query-builder/RelationUpdater.js.map +1 -1
  939. package/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
  940. package/query-builder/SelectQuery.js.map +1 -1
  941. package/query-builder/SelectQueryBuilder.js.map +1 -1
  942. package/query-builder/SelectQueryBuilderOption.js.map +1 -1
  943. package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  944. package/query-builder/UpdateQueryBuilder.js.map +1 -1
  945. package/query-builder/WhereClause.js.map +1 -1
  946. package/query-builder/WhereExpressionBuilder.js.map +1 -1
  947. package/query-builder/index.js.map +1 -1
  948. package/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
  949. package/query-builder/relation-count/RelationCountLoadResult.js.map +1 -1
  950. package/query-builder/relation-count/RelationCountLoader.js.map +1 -1
  951. package/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js.map +1 -1
  952. package/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
  953. package/query-builder/relation-id/RelationIdLoadResult.js.map +1 -1
  954. package/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  955. package/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js.map +1 -1
  956. package/query-builder/result/DeleteResult.js.map +1 -1
  957. package/query-builder/result/InsertResult.js.map +1 -1
  958. package/query-builder/result/UpdateResult.js.map +1 -1
  959. package/query-builder/transformer/DocumentToEntityTransformer.js.map +1 -1
  960. package/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
  961. package/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
  962. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  963. package/query-runner/BaseQueryRunner.js.map +1 -1
  964. package/query-runner/QueryLock.js.map +1 -1
  965. package/query-runner/QueryResult.js.map +1 -1
  966. package/query-runner/QueryRunner.js.map +1 -1
  967. package/repository/AbstractRepository.js.map +1 -1
  968. package/repository/BaseEntity.js.map +1 -1
  969. package/repository/EntityId.js.map +1 -1
  970. package/repository/FindTreesOptions.js.map +1 -1
  971. package/repository/MongoRepository.js.map +1 -1
  972. package/repository/RemoveOptions.js.map +1 -1
  973. package/repository/Repository.js.map +1 -1
  974. package/repository/SaveOptions.js.map +1 -1
  975. package/repository/TreeRepository.js.map +1 -1
  976. package/repository/UpsertOptions.js.map +1 -1
  977. package/schema-builder/MongoSchemaBuilder.js.map +1 -1
  978. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  979. package/schema-builder/SchemaBuilder.js.map +1 -1
  980. package/schema-builder/options/TableCheckOptions.js.map +1 -1
  981. package/schema-builder/options/TableColumnOptions.js.map +1 -1
  982. package/schema-builder/options/TableExclusionOptions.js.map +1 -1
  983. package/schema-builder/options/TableForeignKeyOptions.js.map +1 -1
  984. package/schema-builder/options/TableIndexOptions.js.map +1 -1
  985. package/schema-builder/options/TableOptions.js.map +1 -1
  986. package/schema-builder/options/TableUniqueOptions.js.map +1 -1
  987. package/schema-builder/options/ViewOptions.js.map +1 -1
  988. package/schema-builder/table/Table.js.map +1 -1
  989. package/schema-builder/table/TableCheck.js.map +1 -1
  990. package/schema-builder/table/TableColumn.js.map +1 -1
  991. package/schema-builder/table/TableExclusion.js.map +1 -1
  992. package/schema-builder/table/TableForeignKey.js.map +1 -1
  993. package/schema-builder/table/TableIndex.js.map +1 -1
  994. package/schema-builder/table/TableUnique.js.map +1 -1
  995. package/schema-builder/util/TableUtils.js.map +1 -1
  996. package/schema-builder/util/ViewUtils.js.map +1 -1
  997. package/schema-builder/view/View.js.map +1 -1
  998. package/subscriber/Broadcaster.js.map +1 -1
  999. package/subscriber/BroadcasterResult.js.map +1 -1
  1000. package/subscriber/EntitySubscriberInterface.js.map +1 -1
  1001. package/subscriber/event/InsertEvent.js.map +1 -1
  1002. package/subscriber/event/LoadEvent.js.map +1 -1
  1003. package/subscriber/event/QueryEvent.js.map +1 -1
  1004. package/subscriber/event/RecoverEvent.js.map +1 -1
  1005. package/subscriber/event/RemoveEvent.js.map +1 -1
  1006. package/subscriber/event/SoftRemoveEvent.js.map +1 -1
  1007. package/subscriber/event/TransactionCommitEvent.js.map +1 -1
  1008. package/subscriber/event/TransactionRollbackEvent.js.map +1 -1
  1009. package/subscriber/event/TransactionStartEvent.js.map +1 -1
  1010. package/subscriber/event/UpdateEvent.js.map +1 -1
  1011. package/typeorm-class-transformer-shim.js +271 -271
  1012. package/typeorm-model-shim.js +295 -295
  1013. package/util/ApplyValueTransformers.js.map +1 -1
  1014. package/util/DateUtils.js.map +1 -1
  1015. package/util/DepGraph.js.map +1 -1
  1016. package/util/DirectoryExportedClassesLoader.js.map +1 -1
  1017. package/util/ImportUtils.js.map +1 -1
  1018. package/util/InstanceChecker.js.map +1 -1
  1019. package/util/ObjectUtils.js.map +1 -1
  1020. package/util/OrmUtils.js.map +1 -1
  1021. package/util/PathUtils.js.map +1 -1
  1022. package/util/RandomGenerator.js.map +1 -1
  1023. package/util/StringUtils.js.map +1 -1
  1024. package/util/TreeRepositoryUtils.js.map +1 -1
  1025. package/util/VersionUtils.js.map +1 -1
  1026. package/util/escapeRegExp.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/query-builder/RelationQueryBuilder.ts"],"names":[],"mappings":"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","file":"RelationQueryBuilder.js","sourcesContent":["import { QueryBuilder } from \"./QueryBuilder\"\r\nimport { RelationUpdater } from \"./RelationUpdater\"\r\nimport { RelationRemover } from \"./RelationRemover\"\r\nimport { TypeORMError } from \"../error\"\r\nimport { ObjectUtils } from \"../util/ObjectUtils\"\r\nimport { ObjectLiteral } from \"../common/ObjectLiteral\"\r\n\r\n/**\r\n * Allows to work with entity relations and perform specific operations with those relations.\r\n *\r\n * todo: add transactions everywhere\r\n */\r\nexport class RelationQueryBuilder<\r\n Entity extends ObjectLiteral,\r\n> extends QueryBuilder<Entity> {\r\n readonly \"@instanceof\" = Symbol.for(\"RelationQueryBuilder\")\r\n\r\n // -------------------------------------------------------------------------\r\n // Public Implemented Methods\r\n // -------------------------------------------------------------------------\r\n\r\n /**\r\n * Gets generated SQL query without parameters being replaced.\r\n */\r\n getQuery(): string {\r\n return \"\"\r\n }\r\n\r\n // -------------------------------------------------------------------------\r\n // Public Methods\r\n // -------------------------------------------------------------------------\r\n\r\n /**\r\n * Sets entity (target) which relations will be updated.\r\n */\r\n of(entity: any | any[]): this {\r\n this.expressionMap.of = entity\r\n return this\r\n }\r\n\r\n /**\r\n * Sets entity relation's value.\r\n * Value can be entity, entity id or entity id map (if entity has composite ids).\r\n * Works only for many-to-one and one-to-one relations.\r\n * For many-to-many and one-to-many relations use #add and #remove methods instead.\r\n */\r\n async set(value: any): Promise<void> {\r\n const relation = this.expressionMap.relationMetadata\r\n\r\n if (!this.expressionMap.of)\r\n // todo: move this check before relation query builder creation?\r\n throw new TypeORMError(\r\n `Entity whose relation needs to be set is not set. Use .of method to define whose relation you want to set.`,\r\n )\r\n\r\n if (relation.isManyToMany || relation.isOneToMany)\r\n throw new TypeORMError(\r\n `Set operation is only supported for many-to-one and one-to-one relations. ` +\r\n `However given \"${relation.propertyPath}\" has ${relation.relationType} relation. ` +\r\n `Use .add() method instead.`,\r\n )\r\n\r\n // if there are multiple join columns then user must send id map as \"value\" argument. check if he really did it\r\n if (\r\n relation.joinColumns &&\r\n relation.joinColumns.length > 1 &&\r\n (!ObjectUtils.isObject(value) ||\r\n Object.keys(value).length < relation.joinColumns.length)\r\n )\r\n throw new TypeORMError(\r\n `Value to be set into the relation must be a map of relation ids, for example: .set({ firstName: \"...\", lastName: \"...\" })`,\r\n )\r\n\r\n const updater = new RelationUpdater(this, this.expressionMap)\r\n return updater.update(value)\r\n }\r\n\r\n /**\r\n * Adds (binds) given value to entity relation.\r\n * Value can be entity, entity id or entity id map (if entity has composite ids).\r\n * Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids).\r\n * Works only for many-to-many and one-to-many relations.\r\n * For many-to-one and one-to-one use #set method instead.\r\n */\r\n async add(value: any | any[]): Promise<void> {\r\n if (Array.isArray(value) && value.length === 0) return\r\n\r\n const relation = this.expressionMap.relationMetadata\r\n\r\n if (!this.expressionMap.of)\r\n // todo: move this check before relation query builder creation?\r\n throw new TypeORMError(\r\n `Entity whose relation needs to be set is not set. Use .of method to define whose relation you want to set.`,\r\n )\r\n\r\n if (relation.isManyToOne || relation.isOneToOne)\r\n throw new TypeORMError(\r\n `Add operation is only supported for many-to-many and one-to-many relations. ` +\r\n `However given \"${relation.propertyPath}\" has ${relation.relationType} relation. ` +\r\n `Use .set() method instead.`,\r\n )\r\n\r\n // if there are multiple join columns then user must send id map as \"value\" argument. check if he really did it\r\n if (\r\n relation.joinColumns &&\r\n relation.joinColumns.length > 1 &&\r\n (!ObjectUtils.isObject(value) ||\r\n Object.keys(value).length < relation.joinColumns.length)\r\n )\r\n throw new TypeORMError(\r\n `Value to be set into the relation must be a map of relation ids, for example: .set({ firstName: \"...\", lastName: \"...\" })`,\r\n )\r\n\r\n const updater = new RelationUpdater(this, this.expressionMap)\r\n return updater.update(value)\r\n }\r\n\r\n /**\r\n * Removes (unbinds) given value from entity relation.\r\n * Value can be entity, entity id or entity id map (if entity has composite ids).\r\n * Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids).\r\n * Works only for many-to-many and one-to-many relations.\r\n * For many-to-one and one-to-one use #set method instead.\r\n */\r\n async remove(value: any | any[]): Promise<void> {\r\n if (Array.isArray(value) && value.length === 0) return\r\n\r\n const relation = this.expressionMap.relationMetadata\r\n\r\n if (!this.expressionMap.of)\r\n // todo: move this check before relation query builder creation?\r\n throw new TypeORMError(\r\n `Entity whose relation needs to be set is not set. Use .of method to define whose relation you want to set.`,\r\n )\r\n\r\n if (relation.isManyToOne || relation.isOneToOne)\r\n throw new TypeORMError(\r\n `Add operation is only supported for many-to-many and one-to-many relations. ` +\r\n `However given \"${relation.propertyPath}\" has ${relation.relationType} relation. ` +\r\n `Use .set(null) method instead.`,\r\n )\r\n\r\n const remover = new RelationRemover(this, this.expressionMap)\r\n return remover.remove(value)\r\n }\r\n\r\n /**\r\n * Adds (binds) and removes (unbinds) given values to/from entity relation.\r\n * Value can be entity, entity id or entity id map (if entity has composite ids).\r\n * Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids).\r\n * Works only for many-to-many and one-to-many relations.\r\n * For many-to-one and one-to-one use #set method instead.\r\n */\r\n async addAndRemove(\r\n added: any | any[],\r\n removed: any | any[],\r\n ): Promise<void> {\r\n await this.remove(removed)\r\n await this.add(added)\r\n }\r\n\r\n /**\r\n * Gets entity's relation id.\r\n async getId(): Promise<any> {\r\n\r\n }*/\r\n\r\n /**\r\n * Gets entity's relation ids.\r\n async getIds(): Promise<any[]> {\r\n return [];\r\n }*/\r\n\r\n /**\r\n * Loads a single entity (relational) from the relation.\r\n * You can also provide id of relational entity to filter by.\r\n */\r\n async loadOne<T = any>(): Promise<T | undefined> {\r\n return this.loadMany<T>().then((results) => results[0])\r\n }\r\n\r\n /**\r\n * Loads many entities (relational) from the relation.\r\n * You can also provide ids of relational entities to filter by.\r\n */\r\n async loadMany<T = any>(): Promise<T[]> {\r\n let of = this.expressionMap.of\r\n if (!ObjectUtils.isObject(of)) {\r\n const metadata = this.expressionMap.mainAlias!.metadata\r\n if (metadata.hasMultiplePrimaryKeys)\r\n throw new TypeORMError(\r\n `Cannot load entity because only one primary key was specified, however entity contains multiple primary keys`,\r\n )\r\n\r\n of = metadata.primaryColumns[0].createValueMap(of)\r\n }\r\n\r\n return this.connection.relationLoader.load(\r\n this.expressionMap.relationMetadata,\r\n of,\r\n this.queryRunner,\r\n )\r\n }\r\n}\r\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/query-builder/RelationQueryBuilder.ts"],"names":[],"mappings":"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","file":"RelationQueryBuilder.js","sourcesContent":["import { QueryBuilder } from \"./QueryBuilder\"\nimport { RelationUpdater } from \"./RelationUpdater\"\nimport { RelationRemover } from \"./RelationRemover\"\nimport { TypeORMError } from \"../error\"\nimport { ObjectUtils } from \"../util/ObjectUtils\"\nimport { ObjectLiteral } from \"../common/ObjectLiteral\"\n\n/**\n * Allows to work with entity relations and perform specific operations with those relations.\n *\n * todo: add transactions everywhere\n */\nexport class RelationQueryBuilder<\n Entity extends ObjectLiteral,\n> extends QueryBuilder<Entity> {\n readonly \"@instanceof\" = Symbol.for(\"RelationQueryBuilder\")\n\n // -------------------------------------------------------------------------\n // Public Implemented Methods\n // -------------------------------------------------------------------------\n\n /**\n * Gets generated SQL query without parameters being replaced.\n */\n getQuery(): string {\n return \"\"\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Sets entity (target) which relations will be updated.\n */\n of(entity: any | any[]): this {\n this.expressionMap.of = entity\n return this\n }\n\n /**\n * Sets entity relation's value.\n * Value can be entity, entity id or entity id map (if entity has composite ids).\n * Works only for many-to-one and one-to-one relations.\n * For many-to-many and one-to-many relations use #add and #remove methods instead.\n */\n async set(value: any): Promise<void> {\n const relation = this.expressionMap.relationMetadata\n\n if (!this.expressionMap.of)\n // todo: move this check before relation query builder creation?\n throw new TypeORMError(\n `Entity whose relation needs to be set is not set. Use .of method to define whose relation you want to set.`,\n )\n\n if (relation.isManyToMany || relation.isOneToMany)\n throw new TypeORMError(\n `Set operation is only supported for many-to-one and one-to-one relations. ` +\n `However given \"${relation.propertyPath}\" has ${relation.relationType} relation. ` +\n `Use .add() method instead.`,\n )\n\n // if there are multiple join columns then user must send id map as \"value\" argument. check if he really did it\n if (\n relation.joinColumns &&\n relation.joinColumns.length > 1 &&\n (!ObjectUtils.isObject(value) ||\n Object.keys(value).length < relation.joinColumns.length)\n )\n throw new TypeORMError(\n `Value to be set into the relation must be a map of relation ids, for example: .set({ firstName: \"...\", lastName: \"...\" })`,\n )\n\n const updater = new RelationUpdater(this, this.expressionMap)\n return updater.update(value)\n }\n\n /**\n * Adds (binds) given value to entity relation.\n * Value can be entity, entity id or entity id map (if entity has composite ids).\n * Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids).\n * Works only for many-to-many and one-to-many relations.\n * For many-to-one and one-to-one use #set method instead.\n */\n async add(value: any | any[]): Promise<void> {\n if (Array.isArray(value) && value.length === 0) return\n\n const relation = this.expressionMap.relationMetadata\n\n if (!this.expressionMap.of)\n // todo: move this check before relation query builder creation?\n throw new TypeORMError(\n `Entity whose relation needs to be set is not set. Use .of method to define whose relation you want to set.`,\n )\n\n if (relation.isManyToOne || relation.isOneToOne)\n throw new TypeORMError(\n `Add operation is only supported for many-to-many and one-to-many relations. ` +\n `However given \"${relation.propertyPath}\" has ${relation.relationType} relation. ` +\n `Use .set() method instead.`,\n )\n\n // if there are multiple join columns then user must send id map as \"value\" argument. check if he really did it\n if (\n relation.joinColumns &&\n relation.joinColumns.length > 1 &&\n (!ObjectUtils.isObject(value) ||\n Object.keys(value).length < relation.joinColumns.length)\n )\n throw new TypeORMError(\n `Value to be set into the relation must be a map of relation ids, for example: .set({ firstName: \"...\", lastName: \"...\" })`,\n )\n\n const updater = new RelationUpdater(this, this.expressionMap)\n return updater.update(value)\n }\n\n /**\n * Removes (unbinds) given value from entity relation.\n * Value can be entity, entity id or entity id map (if entity has composite ids).\n * Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids).\n * Works only for many-to-many and one-to-many relations.\n * For many-to-one and one-to-one use #set method instead.\n */\n async remove(value: any | any[]): Promise<void> {\n if (Array.isArray(value) && value.length === 0) return\n\n const relation = this.expressionMap.relationMetadata\n\n if (!this.expressionMap.of)\n // todo: move this check before relation query builder creation?\n throw new TypeORMError(\n `Entity whose relation needs to be set is not set. Use .of method to define whose relation you want to set.`,\n )\n\n if (relation.isManyToOne || relation.isOneToOne)\n throw new TypeORMError(\n `Add operation is only supported for many-to-many and one-to-many relations. ` +\n `However given \"${relation.propertyPath}\" has ${relation.relationType} relation. ` +\n `Use .set(null) method instead.`,\n )\n\n const remover = new RelationRemover(this, this.expressionMap)\n return remover.remove(value)\n }\n\n /**\n * Adds (binds) and removes (unbinds) given values to/from entity relation.\n * Value can be entity, entity id or entity id map (if entity has composite ids).\n * Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids).\n * Works only for many-to-many and one-to-many relations.\n * For many-to-one and one-to-one use #set method instead.\n */\n async addAndRemove(\n added: any | any[],\n removed: any | any[],\n ): Promise<void> {\n await this.remove(removed)\n await this.add(added)\n }\n\n /**\n * Gets entity's relation id.\n async getId(): Promise<any> {\n\n }*/\n\n /**\n * Gets entity's relation ids.\n async getIds(): Promise<any[]> {\n return [];\n }*/\n\n /**\n * Loads a single entity (relational) from the relation.\n * You can also provide id of relational entity to filter by.\n */\n async loadOne<T = any>(): Promise<T | undefined> {\n return this.loadMany<T>().then((results) => results[0])\n }\n\n /**\n * Loads many entities (relational) from the relation.\n * You can also provide ids of relational entities to filter by.\n */\n async loadMany<T = any>(): Promise<T[]> {\n let of = this.expressionMap.of\n if (!ObjectUtils.isObject(of)) {\n const metadata = this.expressionMap.mainAlias!.metadata\n if (metadata.hasMultiplePrimaryKeys)\n throw new TypeORMError(\n `Cannot load entity because only one primary key was specified, however entity contains multiple primary keys`,\n )\n\n of = metadata.primaryColumns[0].createValueMap(of)\n }\n\n return this.connection.relationLoader.load(\n this.expressionMap.relationMetadata,\n of,\n this.queryRunner,\n )\n }\n}\n"],"sourceRoot":".."}
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/query-builder/RelationRemover.ts"],"names":[],"mappings":"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","file":"RelationRemover.js","sourcesContent":["import { QueryBuilder } from \"./QueryBuilder\"\r\nimport { ObjectLiteral } from \"../common/ObjectLiteral\"\r\nimport { QueryExpressionMap } from \"./QueryExpressionMap\"\r\nimport { ObjectUtils } from \"../util/ObjectUtils\"\r\n\r\n/**\r\n * Allows to work with entity relations and perform specific operations with those relations.\r\n *\r\n * todo: add transactions everywhere\r\n */\r\nexport class RelationRemover {\r\n // -------------------------------------------------------------------------\r\n // Constructor\r\n // -------------------------------------------------------------------------\r\n\r\n constructor(\r\n protected queryBuilder: QueryBuilder<any>,\r\n protected expressionMap: QueryExpressionMap,\r\n ) {}\r\n\r\n // -------------------------------------------------------------------------\r\n // Public Methods\r\n // -------------------------------------------------------------------------\r\n\r\n /**\r\n * Performs remove operation on a relation.\r\n */\r\n async remove(value: any | any[]): Promise<void> {\r\n const relation = this.expressionMap.relationMetadata\r\n\r\n if (relation.isOneToMany) {\r\n // if (this.expressionMap.of instanceof Array)\r\n // throw new TypeORMError(`You cannot update relations of multiple entities with the same related object. Provide a single entity into .of method.`);\r\n\r\n // DELETE FROM post WHERE post.categoryId = of AND post.id = id\r\n const ofs = Array.isArray(this.expressionMap.of)\r\n ? this.expressionMap.of\r\n : [this.expressionMap.of]\r\n const values = Array.isArray(value) ? value : [value]\r\n\r\n const updateSet: ObjectLiteral = {}\r\n relation.inverseRelation!.joinColumns.forEach((column) => {\r\n updateSet[column.propertyName] = null\r\n })\r\n\r\n const parameters: ObjectLiteral = {}\r\n const conditions: string[] = []\r\n ofs.forEach((of, ofIndex) => {\r\n conditions.push(\r\n ...values.map((value, valueIndex) => {\r\n return [\r\n ...relation.inverseRelation!.joinColumns.map(\r\n (column, columnIndex) => {\r\n const parameterName =\r\n \"joinColumn_\" +\r\n ofIndex +\r\n \"_\" +\r\n valueIndex +\r\n \"_\" +\r\n columnIndex\r\n parameters[parameterName] =\r\n ObjectUtils.isObject(of)\r\n ? column.referencedColumn!.getEntityValue(\r\n of,\r\n )\r\n : of\r\n return `${column.propertyPath} = :${parameterName}`\r\n },\r\n ),\r\n ...relation.inverseRelation!.entityMetadata.primaryColumns.map(\r\n (column, columnIndex) => {\r\n const parameterName =\r\n \"primaryColumn_\" +\r\n valueIndex +\r\n \"_\" +\r\n valueIndex +\r\n \"_\" +\r\n columnIndex\r\n parameters[parameterName] =\r\n ObjectUtils.isObject(value)\r\n ? column.getEntityValue(value)\r\n : value\r\n return `${column.propertyPath} = :${parameterName}`\r\n },\r\n ),\r\n ].join(\" AND \")\r\n }),\r\n )\r\n })\r\n const condition = conditions\r\n .map((str) => \"(\" + str + \")\")\r\n .join(\" OR \")\r\n if (!condition) return\r\n\r\n await this.queryBuilder\r\n .createQueryBuilder()\r\n .update(relation.inverseEntityMetadata.target)\r\n .set(updateSet)\r\n .where(condition)\r\n .setParameters(parameters)\r\n .execute()\r\n } else {\r\n // many to many\r\n\r\n const junctionMetadata = relation.junctionEntityMetadata!\r\n const ofs = Array.isArray(this.expressionMap.of)\r\n ? this.expressionMap.of\r\n : [this.expressionMap.of]\r\n const values = Array.isArray(value) ? value : [value]\r\n const firstColumnValues = relation.isManyToManyOwner ? ofs : values\r\n const secondColumnValues = relation.isManyToManyOwner ? values : ofs\r\n\r\n const parameters: ObjectLiteral = {}\r\n const conditions: string[] = []\r\n firstColumnValues.forEach((firstColumnVal, firstColumnValIndex) => {\r\n conditions.push(\r\n ...secondColumnValues.map(\r\n (secondColumnVal, secondColumnValIndex) => {\r\n return [\r\n ...junctionMetadata.ownerColumns.map(\r\n (column, columnIndex) => {\r\n const parameterName =\r\n \"firstValue_\" +\r\n firstColumnValIndex +\r\n \"_\" +\r\n secondColumnValIndex +\r\n \"_\" +\r\n columnIndex\r\n parameters[parameterName] =\r\n ObjectUtils.isObject(firstColumnVal)\r\n ? column.referencedColumn!.getEntityValue(\r\n firstColumnVal,\r\n )\r\n : firstColumnVal\r\n return `${column.databaseName} = :${parameterName}`\r\n },\r\n ),\r\n ...junctionMetadata.inverseColumns.map(\r\n (column, columnIndex) => {\r\n const parameterName =\r\n \"secondValue_\" +\r\n firstColumnValIndex +\r\n \"_\" +\r\n secondColumnValIndex +\r\n \"_\" +\r\n columnIndex\r\n parameters[parameterName] =\r\n ObjectUtils.isObject(\r\n secondColumnVal,\r\n )\r\n ? column.referencedColumn!.getEntityValue(\r\n secondColumnVal,\r\n )\r\n : secondColumnVal\r\n return `${column.databaseName} = :${parameterName}`\r\n },\r\n ),\r\n ].join(\" AND \")\r\n },\r\n ),\r\n )\r\n })\r\n const condition = conditions\r\n .map((str) => \"(\" + str + \")\")\r\n .join(\" OR \")\r\n\r\n await this.queryBuilder\r\n .createQueryBuilder()\r\n .delete()\r\n .from(junctionMetadata.tableName)\r\n .where(condition)\r\n .setParameters(parameters)\r\n .execute()\r\n }\r\n }\r\n}\r\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/query-builder/RelationRemover.ts"],"names":[],"mappings":"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","file":"RelationRemover.js","sourcesContent":["import { QueryBuilder } from \"./QueryBuilder\"\nimport { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport { QueryExpressionMap } from \"./QueryExpressionMap\"\nimport { ObjectUtils } from \"../util/ObjectUtils\"\n\n/**\n * Allows to work with entity relations and perform specific operations with those relations.\n *\n * todo: add transactions everywhere\n */\nexport class RelationRemover {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(\n protected queryBuilder: QueryBuilder<any>,\n protected expressionMap: QueryExpressionMap,\n ) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Performs remove operation on a relation.\n */\n async remove(value: any | any[]): Promise<void> {\n const relation = this.expressionMap.relationMetadata\n\n if (relation.isOneToMany) {\n // if (this.expressionMap.of instanceof Array)\n // throw new TypeORMError(`You cannot update relations of multiple entities with the same related object. Provide a single entity into .of method.`);\n\n // DELETE FROM post WHERE post.categoryId = of AND post.id = id\n const ofs = Array.isArray(this.expressionMap.of)\n ? this.expressionMap.of\n : [this.expressionMap.of]\n const values = Array.isArray(value) ? value : [value]\n\n const updateSet: ObjectLiteral = {}\n relation.inverseRelation!.joinColumns.forEach((column) => {\n updateSet[column.propertyName] = null\n })\n\n const parameters: ObjectLiteral = {}\n const conditions: string[] = []\n ofs.forEach((of, ofIndex) => {\n conditions.push(\n ...values.map((value, valueIndex) => {\n return [\n ...relation.inverseRelation!.joinColumns.map(\n (column, columnIndex) => {\n const parameterName =\n \"joinColumn_\" +\n ofIndex +\n \"_\" +\n valueIndex +\n \"_\" +\n columnIndex\n parameters[parameterName] =\n ObjectUtils.isObject(of)\n ? column.referencedColumn!.getEntityValue(\n of,\n )\n : of\n return `${column.propertyPath} = :${parameterName}`\n },\n ),\n ...relation.inverseRelation!.entityMetadata.primaryColumns.map(\n (column, columnIndex) => {\n const parameterName =\n \"primaryColumn_\" +\n valueIndex +\n \"_\" +\n valueIndex +\n \"_\" +\n columnIndex\n parameters[parameterName] =\n ObjectUtils.isObject(value)\n ? column.getEntityValue(value)\n : value\n return `${column.propertyPath} = :${parameterName}`\n },\n ),\n ].join(\" AND \")\n }),\n )\n })\n const condition = conditions\n .map((str) => \"(\" + str + \")\")\n .join(\" OR \")\n if (!condition) return\n\n await this.queryBuilder\n .createQueryBuilder()\n .update(relation.inverseEntityMetadata.target)\n .set(updateSet)\n .where(condition)\n .setParameters(parameters)\n .execute()\n } else {\n // many to many\n\n const junctionMetadata = relation.junctionEntityMetadata!\n const ofs = Array.isArray(this.expressionMap.of)\n ? this.expressionMap.of\n : [this.expressionMap.of]\n const values = Array.isArray(value) ? value : [value]\n const firstColumnValues = relation.isManyToManyOwner ? ofs : values\n const secondColumnValues = relation.isManyToManyOwner ? values : ofs\n\n const parameters: ObjectLiteral = {}\n const conditions: string[] = []\n firstColumnValues.forEach((firstColumnVal, firstColumnValIndex) => {\n conditions.push(\n ...secondColumnValues.map(\n (secondColumnVal, secondColumnValIndex) => {\n return [\n ...junctionMetadata.ownerColumns.map(\n (column, columnIndex) => {\n const parameterName =\n \"firstValue_\" +\n firstColumnValIndex +\n \"_\" +\n secondColumnValIndex +\n \"_\" +\n columnIndex\n parameters[parameterName] =\n ObjectUtils.isObject(firstColumnVal)\n ? column.referencedColumn!.getEntityValue(\n firstColumnVal,\n )\n : firstColumnVal\n return `${column.databaseName} = :${parameterName}`\n },\n ),\n ...junctionMetadata.inverseColumns.map(\n (column, columnIndex) => {\n const parameterName =\n \"secondValue_\" +\n firstColumnValIndex +\n \"_\" +\n secondColumnValIndex +\n \"_\" +\n columnIndex\n parameters[parameterName] =\n ObjectUtils.isObject(\n secondColumnVal,\n )\n ? column.referencedColumn!.getEntityValue(\n secondColumnVal,\n )\n : secondColumnVal\n return `${column.databaseName} = :${parameterName}`\n },\n ),\n ].join(\" AND \")\n },\n ),\n )\n })\n const condition = conditions\n .map((str) => \"(\" + str + \")\")\n .join(\" OR \")\n\n await this.queryBuilder\n .createQueryBuilder()\n .delete()\n .from(junctionMetadata.tableName)\n .where(condition)\n .setParameters(parameters)\n .execute()\n }\n }\n}\n"],"sourceRoot":".."}
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/query-builder/RelationUpdater.ts"],"names":[],"mappings":"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","file":"RelationUpdater.js","sourcesContent":["import { QueryBuilder } from \"./QueryBuilder\"\r\nimport { ObjectLiteral } from \"../common/ObjectLiteral\"\r\nimport { QueryExpressionMap } from \"./QueryExpressionMap\"\r\nimport { TypeORMError } from \"../error\"\r\nimport { ObjectUtils } from \"../util/ObjectUtils\"\r\n\r\n/**\r\n * Allows to work with entity relations and perform specific operations with those relations.\r\n *\r\n * todo: add transactions everywhere\r\n */\r\nexport class RelationUpdater {\r\n // -------------------------------------------------------------------------\r\n // Constructor\r\n // -------------------------------------------------------------------------\r\n\r\n constructor(\r\n protected queryBuilder: QueryBuilder<any>,\r\n protected expressionMap: QueryExpressionMap,\r\n ) {}\r\n\r\n // -------------------------------------------------------------------------\r\n // Public Methods\r\n // -------------------------------------------------------------------------\r\n\r\n /**\r\n * Performs set or add operation on a relation.\r\n */\r\n async update(value: any | any[]): Promise<void> {\r\n const relation = this.expressionMap.relationMetadata\r\n\r\n if (relation.isManyToOne || relation.isOneToOneOwner) {\r\n const updateSet = relation.joinColumns.reduce(\r\n (updateSet, joinColumn) => {\r\n const relationValue = ObjectUtils.isObject(value)\r\n ? joinColumn.referencedColumn!.getEntityValue(value)\r\n : value\r\n joinColumn.setEntityValue(updateSet, relationValue)\r\n return updateSet\r\n },\r\n {} as any,\r\n )\r\n\r\n if (\r\n !this.expressionMap.of ||\r\n (Array.isArray(this.expressionMap.of) &&\r\n !this.expressionMap.of.length)\r\n )\r\n return\r\n\r\n await this.queryBuilder\r\n .createQueryBuilder()\r\n .update(relation.entityMetadata.target)\r\n .set(updateSet)\r\n .whereInIds(this.expressionMap.of)\r\n .execute()\r\n } else if (\r\n (relation.isOneToOneNotOwner || relation.isOneToMany) &&\r\n value === null\r\n ) {\r\n // we handle null a bit different way\r\n\r\n const updateSet: ObjectLiteral = {}\r\n relation.inverseRelation!.joinColumns.forEach((column) => {\r\n updateSet[column.propertyName] = null\r\n })\r\n\r\n const ofs = Array.isArray(this.expressionMap.of)\r\n ? this.expressionMap.of\r\n : [this.expressionMap.of]\r\n const parameters: ObjectLiteral = {}\r\n const conditions: string[] = []\r\n ofs.forEach((of, ofIndex) => {\r\n relation.inverseRelation!.joinColumns.map(\r\n (column, columnIndex) => {\r\n const parameterName =\r\n \"joinColumn_\" + ofIndex + \"_\" + columnIndex\r\n parameters[parameterName] = ObjectUtils.isObject(of)\r\n ? column.referencedColumn!.getEntityValue(of)\r\n : of\r\n conditions.push(\r\n `${column.propertyPath} = :${parameterName}`,\r\n )\r\n },\r\n )\r\n })\r\n const condition = conditions\r\n .map((str) => \"(\" + str + \")\")\r\n .join(\" OR \")\r\n if (!condition) return\r\n\r\n await this.queryBuilder\r\n .createQueryBuilder()\r\n .update(relation.inverseEntityMetadata.target)\r\n .set(updateSet)\r\n .where(condition)\r\n .setParameters(parameters)\r\n .execute()\r\n } else if (relation.isOneToOneNotOwner || relation.isOneToMany) {\r\n if (Array.isArray(this.expressionMap.of))\r\n throw new TypeORMError(\r\n `You cannot update relations of multiple entities with the same related object. Provide a single entity into .of method.`,\r\n )\r\n\r\n const of = this.expressionMap.of\r\n const updateSet = relation.inverseRelation!.joinColumns.reduce(\r\n (updateSet, joinColumn) => {\r\n const relationValue = ObjectUtils.isObject(of)\r\n ? joinColumn.referencedColumn!.getEntityValue(of)\r\n : of\r\n joinColumn.setEntityValue(updateSet, relationValue)\r\n return updateSet\r\n },\r\n {} as any,\r\n )\r\n\r\n if (!value || (Array.isArray(value) && !value.length)) return\r\n\r\n await this.queryBuilder\r\n .createQueryBuilder()\r\n .update(relation.inverseEntityMetadata.target)\r\n .set(updateSet)\r\n .whereInIds(value)\r\n .execute()\r\n } else {\r\n // many to many\r\n const junctionMetadata = relation.junctionEntityMetadata!\r\n const ofs = Array.isArray(this.expressionMap.of)\r\n ? this.expressionMap.of\r\n : [this.expressionMap.of]\r\n const values = Array.isArray(value) ? value : [value]\r\n const firstColumnValues = relation.isManyToManyOwner ? ofs : values\r\n const secondColumnValues = relation.isManyToManyOwner ? values : ofs\r\n\r\n const bulkInserted: ObjectLiteral[] = []\r\n firstColumnValues.forEach((firstColumnVal) => {\r\n secondColumnValues.forEach((secondColumnVal) => {\r\n const inserted: ObjectLiteral = {}\r\n junctionMetadata.ownerColumns.forEach((column) => {\r\n inserted[column.databaseName] = ObjectUtils.isObject(\r\n firstColumnVal,\r\n )\r\n ? column.referencedColumn!.getEntityValue(\r\n firstColumnVal,\r\n )\r\n : firstColumnVal\r\n })\r\n junctionMetadata.inverseColumns.forEach((column) => {\r\n inserted[column.databaseName] = ObjectUtils.isObject(\r\n secondColumnVal,\r\n )\r\n ? column.referencedColumn!.getEntityValue(\r\n secondColumnVal,\r\n )\r\n : secondColumnVal\r\n })\r\n bulkInserted.push(inserted)\r\n })\r\n })\r\n\r\n if (!bulkInserted.length) return\r\n\r\n if (\r\n this.queryBuilder.connection.driver.options.type === \"oracle\" ||\r\n this.queryBuilder.connection.driver.options.type === \"sap\"\r\n ) {\r\n await Promise.all(\r\n bulkInserted.map((value) => {\r\n return this.queryBuilder\r\n .createQueryBuilder()\r\n .insert()\r\n .into(junctionMetadata.tableName)\r\n .values(value)\r\n .execute()\r\n }),\r\n )\r\n } else {\r\n await this.queryBuilder\r\n .createQueryBuilder()\r\n .insert()\r\n .into(junctionMetadata.tableName)\r\n .values(bulkInserted)\r\n .execute()\r\n }\r\n }\r\n }\r\n}\r\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/query-builder/RelationUpdater.ts"],"names":[],"mappings":"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","file":"RelationUpdater.js","sourcesContent":["import { QueryBuilder } from \"./QueryBuilder\"\nimport { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport { QueryExpressionMap } from \"./QueryExpressionMap\"\nimport { TypeORMError } from \"../error\"\nimport { ObjectUtils } from \"../util/ObjectUtils\"\n\n/**\n * Allows to work with entity relations and perform specific operations with those relations.\n *\n * todo: add transactions everywhere\n */\nexport class RelationUpdater {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(\n protected queryBuilder: QueryBuilder<any>,\n protected expressionMap: QueryExpressionMap,\n ) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Performs set or add operation on a relation.\n */\n async update(value: any | any[]): Promise<void> {\n const relation = this.expressionMap.relationMetadata\n\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n const updateSet = relation.joinColumns.reduce(\n (updateSet, joinColumn) => {\n const relationValue = ObjectUtils.isObject(value)\n ? joinColumn.referencedColumn!.getEntityValue(value)\n : value\n joinColumn.setEntityValue(updateSet, relationValue)\n return updateSet\n },\n {} as any,\n )\n\n if (\n !this.expressionMap.of ||\n (Array.isArray(this.expressionMap.of) &&\n !this.expressionMap.of.length)\n )\n return\n\n await this.queryBuilder\n .createQueryBuilder()\n .update(relation.entityMetadata.target)\n .set(updateSet)\n .whereInIds(this.expressionMap.of)\n .execute()\n } else if (\n (relation.isOneToOneNotOwner || relation.isOneToMany) &&\n value === null\n ) {\n // we handle null a bit different way\n\n const updateSet: ObjectLiteral = {}\n relation.inverseRelation!.joinColumns.forEach((column) => {\n updateSet[column.propertyName] = null\n })\n\n const ofs = Array.isArray(this.expressionMap.of)\n ? this.expressionMap.of\n : [this.expressionMap.of]\n const parameters: ObjectLiteral = {}\n const conditions: string[] = []\n ofs.forEach((of, ofIndex) => {\n relation.inverseRelation!.joinColumns.map(\n (column, columnIndex) => {\n const parameterName =\n \"joinColumn_\" + ofIndex + \"_\" + columnIndex\n parameters[parameterName] = ObjectUtils.isObject(of)\n ? column.referencedColumn!.getEntityValue(of)\n : of\n conditions.push(\n `${column.propertyPath} = :${parameterName}`,\n )\n },\n )\n })\n const condition = conditions\n .map((str) => \"(\" + str + \")\")\n .join(\" OR \")\n if (!condition) return\n\n await this.queryBuilder\n .createQueryBuilder()\n .update(relation.inverseEntityMetadata.target)\n .set(updateSet)\n .where(condition)\n .setParameters(parameters)\n .execute()\n } else if (relation.isOneToOneNotOwner || relation.isOneToMany) {\n if (Array.isArray(this.expressionMap.of))\n throw new TypeORMError(\n `You cannot update relations of multiple entities with the same related object. Provide a single entity into .of method.`,\n )\n\n const of = this.expressionMap.of\n const updateSet = relation.inverseRelation!.joinColumns.reduce(\n (updateSet, joinColumn) => {\n const relationValue = ObjectUtils.isObject(of)\n ? joinColumn.referencedColumn!.getEntityValue(of)\n : of\n joinColumn.setEntityValue(updateSet, relationValue)\n return updateSet\n },\n {} as any,\n )\n\n if (!value || (Array.isArray(value) && !value.length)) return\n\n await this.queryBuilder\n .createQueryBuilder()\n .update(relation.inverseEntityMetadata.target)\n .set(updateSet)\n .whereInIds(value)\n .execute()\n } else {\n // many to many\n const junctionMetadata = relation.junctionEntityMetadata!\n const ofs = Array.isArray(this.expressionMap.of)\n ? this.expressionMap.of\n : [this.expressionMap.of]\n const values = Array.isArray(value) ? value : [value]\n const firstColumnValues = relation.isManyToManyOwner ? ofs : values\n const secondColumnValues = relation.isManyToManyOwner ? values : ofs\n\n const bulkInserted: ObjectLiteral[] = []\n firstColumnValues.forEach((firstColumnVal) => {\n secondColumnValues.forEach((secondColumnVal) => {\n const inserted: ObjectLiteral = {}\n junctionMetadata.ownerColumns.forEach((column) => {\n inserted[column.databaseName] = ObjectUtils.isObject(\n firstColumnVal,\n )\n ? column.referencedColumn!.getEntityValue(\n firstColumnVal,\n )\n : firstColumnVal\n })\n junctionMetadata.inverseColumns.forEach((column) => {\n inserted[column.databaseName] = ObjectUtils.isObject(\n secondColumnVal,\n )\n ? column.referencedColumn!.getEntityValue(\n secondColumnVal,\n )\n : secondColumnVal\n })\n bulkInserted.push(inserted)\n })\n })\n\n if (!bulkInserted.length) return\n\n if (\n this.queryBuilder.connection.driver.options.type === \"oracle\" ||\n this.queryBuilder.connection.driver.options.type === \"sap\"\n ) {\n await Promise.all(\n bulkInserted.map((value) => {\n return this.queryBuilder\n .createQueryBuilder()\n .insert()\n .into(junctionMetadata.tableName)\n .values(value)\n .execute()\n }),\n )\n } else {\n await this.queryBuilder\n .createQueryBuilder()\n .insert()\n .into(junctionMetadata.tableName)\n .values(bulkInserted)\n .execute()\n }\n }\n }\n}\n"],"sourceRoot":".."}
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/query-builder/ReturningResultsEntityUpdator.ts"],"names":[],"mappings":"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","file":"ReturningResultsEntityUpdator.js","sourcesContent":["import { ObjectLiteral } from \"../common/ObjectLiteral\"\r\nimport { QueryRunner } from \"../query-runner/QueryRunner\"\r\nimport { QueryExpressionMap } from \"./QueryExpressionMap\"\r\nimport { ColumnMetadata } from \"../metadata/ColumnMetadata\"\r\nimport { UpdateResult } from \"./result/UpdateResult\"\r\nimport { InsertResult } from \"./result/InsertResult\"\r\nimport { TypeORMError } from \"../error\"\r\n\r\n/**\r\n * Updates entity with returning results in the entity insert and update operations.\r\n */\r\nexport class ReturningResultsEntityUpdator {\r\n // -------------------------------------------------------------------------\r\n // Constructor\r\n // -------------------------------------------------------------------------\r\n\r\n constructor(\r\n protected queryRunner: QueryRunner,\r\n protected expressionMap: QueryExpressionMap,\r\n ) {}\r\n\r\n // -------------------------------------------------------------------------\r\n // Public Methods\r\n // -------------------------------------------------------------------------\r\n\r\n /**\r\n * Updates entities with a special columns after updation query execution.\r\n */\r\n async update(\r\n updateResult: UpdateResult,\r\n entities: ObjectLiteral[],\r\n ): Promise<void> {\r\n const metadata = this.expressionMap.mainAlias!.metadata\r\n\r\n await Promise.all(\r\n entities.map(async (entity, entityIndex) => {\r\n // if database supports returning/output statement then we already should have updating values in the raw data returned by insert query\r\n if (\r\n this.queryRunner.connection.driver.isReturningSqlSupported(\r\n \"update\",\r\n )\r\n ) {\r\n if (\r\n this.queryRunner.connection.driver.options.type ===\r\n \"oracle\" &&\r\n Array.isArray(updateResult.raw) &&\r\n this.expressionMap.extraReturningColumns.length > 0\r\n ) {\r\n updateResult.raw = updateResult.raw.reduce(\r\n (newRaw, rawItem, rawItemIndex) => {\r\n newRaw[\r\n this.expressionMap.extraReturningColumns[\r\n rawItemIndex\r\n ].databaseName\r\n ] = rawItem[0]\r\n return newRaw\r\n },\r\n {} as ObjectLiteral,\r\n )\r\n }\r\n const result = Array.isArray(updateResult.raw)\r\n ? updateResult.raw[entityIndex]\r\n : updateResult.raw\r\n const returningColumns =\r\n this.queryRunner.connection.driver.createGeneratedMap(\r\n metadata,\r\n result,\r\n )\r\n if (returningColumns) {\r\n this.queryRunner.manager.merge(\r\n metadata.target as any,\r\n entity,\r\n returningColumns,\r\n )\r\n updateResult.generatedMaps.push(returningColumns)\r\n }\r\n } else {\r\n // for driver which do not support returning/output statement we need to perform separate query and load what we need\r\n const updationColumns =\r\n this.expressionMap.extraReturningColumns\r\n if (updationColumns.length > 0) {\r\n // get entity id by which we will get needed data\r\n const entityId =\r\n this.expressionMap.mainAlias!.metadata.getEntityIdMap(\r\n entity,\r\n )\r\n if (!entityId)\r\n throw new TypeORMError(\r\n `Cannot update entity because entity id is not set in the entity.`,\r\n )\r\n\r\n // execute query to get needed data\r\n const loadedReturningColumns =\r\n (await this.queryRunner.manager\r\n .createQueryBuilder()\r\n .select(\r\n metadata.primaryColumns.map(\r\n (column) =>\r\n metadata.targetName +\r\n \".\" +\r\n column.propertyPath,\r\n ),\r\n )\r\n .addSelect(\r\n updationColumns.map(\r\n (column) =>\r\n metadata.targetName +\r\n \".\" +\r\n column.propertyPath,\r\n ),\r\n )\r\n .from(metadata.target, metadata.targetName)\r\n .where(entityId)\r\n .withDeleted()\r\n .setOption(\"create-pojo\") // use POJO because created object can contain default values, e.g. property = null and those properties might be overridden by merge process\r\n .getOne()) as any\r\n\r\n if (loadedReturningColumns) {\r\n this.queryRunner.manager.merge(\r\n metadata.target as any,\r\n entity,\r\n loadedReturningColumns,\r\n )\r\n updateResult.generatedMaps.push(\r\n loadedReturningColumns,\r\n )\r\n }\r\n }\r\n }\r\n }),\r\n )\r\n }\r\n\r\n /**\r\n * Updates entities with a special columns after insertion query execution.\r\n */\r\n async insert(\r\n insertResult: InsertResult,\r\n entities: ObjectLiteral[],\r\n ): Promise<void> {\r\n const metadata = this.expressionMap.mainAlias!.metadata\r\n let insertionColumns = metadata.getInsertionReturningColumns()\r\n\r\n // to prevent extra select SQL execution for databases not supporting RETURNING\r\n // in the case if we have generated column and it's value returned by underlying driver\r\n // we remove this column from the insertionColumns list\r\n const needToCheckGenerated =\r\n this.queryRunner.connection.driver.isReturningSqlSupported(\"insert\")\r\n insertionColumns = insertionColumns.filter((column) => {\r\n if (!column.isGenerated) return true\r\n return needToCheckGenerated === true\r\n })\r\n\r\n const generatedMaps = entities.map((entity, entityIndex) => {\r\n if (\r\n this.queryRunner.connection.driver.options.type === \"oracle\" &&\r\n Array.isArray(insertResult.raw) &&\r\n this.expressionMap.extraReturningColumns.length > 0\r\n ) {\r\n insertResult.raw = insertResult.raw.reduce(\r\n (newRaw, rawItem, rawItemIndex) => {\r\n newRaw[\r\n this.expressionMap.extraReturningColumns[\r\n rawItemIndex\r\n ].databaseName\r\n ] = rawItem[0]\r\n return newRaw\r\n },\r\n {} as ObjectLiteral,\r\n )\r\n }\r\n // get all values generated by a database for us\r\n const result = Array.isArray(insertResult.raw)\r\n ? insertResult.raw[entityIndex]\r\n : insertResult.raw\r\n\r\n const generatedMap =\r\n this.queryRunner.connection.driver.createGeneratedMap(\r\n metadata,\r\n result,\r\n entityIndex,\r\n entities.length,\r\n ) || {}\r\n\r\n if (entityIndex in this.expressionMap.locallyGenerated) {\r\n this.queryRunner.manager.merge(\r\n metadata.target as any,\r\n generatedMap,\r\n this.expressionMap.locallyGenerated[entityIndex],\r\n )\r\n }\r\n\r\n this.queryRunner.manager.merge(\r\n metadata.target as any,\r\n entity,\r\n generatedMap,\r\n )\r\n\r\n return generatedMap\r\n })\r\n\r\n // for postgres and mssql we use returning/output statement to get values of inserted default and generated values\r\n // for other drivers we have to re-select this data from the database\r\n if (\r\n insertionColumns.length > 0 &&\r\n !this.queryRunner.connection.driver.isReturningSqlSupported(\r\n \"insert\",\r\n )\r\n ) {\r\n const entityIds = entities.map((entity) => {\r\n const entityId = metadata.getEntityIdMap(entity)!\r\n\r\n // We have to check for an empty `entityId` - if we don't, the query against the database\r\n // effectively drops the `where` clause entirely and the first record will be returned -\r\n // not what we want at all.\r\n if (!entityId)\r\n throw new TypeORMError(\r\n `Cannot update entity because entity id is not set in the entity.`,\r\n )\r\n\r\n return entityId\r\n })\r\n\r\n // to select just inserted entities we need a criteria to select by.\r\n // for newly inserted entities in drivers which do not support returning statement\r\n // row identifier can only be an increment column\r\n // (since its the only thing that can be generated by those databases)\r\n // or (and) other primary key which is defined by a user and inserted value has it\r\n\r\n const returningResult: any = await this.queryRunner.manager\r\n .createQueryBuilder()\r\n .select(\r\n metadata.primaryColumns.map(\r\n (column) =>\r\n metadata.targetName + \".\" + column.propertyPath,\r\n ),\r\n )\r\n .addSelect(\r\n insertionColumns.map(\r\n (column) =>\r\n metadata.targetName + \".\" + column.propertyPath,\r\n ),\r\n )\r\n .from(metadata.target, metadata.targetName)\r\n .where(entityIds)\r\n .setOption(\"create-pojo\") // use POJO because created object can contain default values, e.g. property = null and those properties might be overridden by merge process\r\n .getMany()\r\n\r\n entities.forEach((entity, entityIndex) => {\r\n this.queryRunner.manager.merge(\r\n metadata.target as any,\r\n generatedMaps[entityIndex],\r\n returningResult[entityIndex],\r\n )\r\n\r\n this.queryRunner.manager.merge(\r\n metadata.target as any,\r\n entity,\r\n returningResult[entityIndex],\r\n )\r\n })\r\n }\r\n\r\n entities.forEach((entity, entityIndex) => {\r\n const entityId = metadata.getEntityIdMap(entity)!\r\n insertResult.identifiers.push(entityId)\r\n insertResult.generatedMaps.push(generatedMaps[entityIndex])\r\n })\r\n }\r\n\r\n /**\r\n * Columns we need to be returned from the database when we update entity.\r\n */\r\n getUpdationReturningColumns(): ColumnMetadata[] {\r\n return this.expressionMap.mainAlias!.metadata.columns.filter(\r\n (column) => {\r\n return (\r\n column.asExpression !== undefined ||\r\n column.isUpdateDate ||\r\n column.isVersion\r\n )\r\n },\r\n )\r\n }\r\n\r\n /**\r\n * Columns we need to be returned from the database when we soft delete and restore entity.\r\n */\r\n getSoftDeletionReturningColumns(): ColumnMetadata[] {\r\n return this.expressionMap.mainAlias!.metadata.columns.filter(\r\n (column) => {\r\n return (\r\n column.asExpression !== undefined ||\r\n column.isUpdateDate ||\r\n column.isVersion ||\r\n column.isDeleteDate\r\n )\r\n },\r\n )\r\n }\r\n}\r\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/query-builder/ReturningResultsEntityUpdator.ts"],"names":[],"mappings":"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","file":"ReturningResultsEntityUpdator.js","sourcesContent":["import { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport { QueryRunner } from \"../query-runner/QueryRunner\"\nimport { QueryExpressionMap } from \"./QueryExpressionMap\"\nimport { ColumnMetadata } from \"../metadata/ColumnMetadata\"\nimport { UpdateResult } from \"./result/UpdateResult\"\nimport { InsertResult } from \"./result/InsertResult\"\nimport { TypeORMError } from \"../error\"\n\n/**\n * Updates entity with returning results in the entity insert and update operations.\n */\nexport class ReturningResultsEntityUpdator {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(\n protected queryRunner: QueryRunner,\n protected expressionMap: QueryExpressionMap,\n ) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Updates entities with a special columns after updation query execution.\n */\n async update(\n updateResult: UpdateResult,\n entities: ObjectLiteral[],\n ): Promise<void> {\n const metadata = this.expressionMap.mainAlias!.metadata\n\n await Promise.all(\n entities.map(async (entity, entityIndex) => {\n // if database supports returning/output statement then we already should have updating values in the raw data returned by insert query\n if (\n this.queryRunner.connection.driver.isReturningSqlSupported(\n \"update\",\n )\n ) {\n if (\n this.queryRunner.connection.driver.options.type ===\n \"oracle\" &&\n Array.isArray(updateResult.raw) &&\n this.expressionMap.extraReturningColumns.length > 0\n ) {\n updateResult.raw = updateResult.raw.reduce(\n (newRaw, rawItem, rawItemIndex) => {\n newRaw[\n this.expressionMap.extraReturningColumns[\n rawItemIndex\n ].databaseName\n ] = rawItem[0]\n return newRaw\n },\n {} as ObjectLiteral,\n )\n }\n const result = Array.isArray(updateResult.raw)\n ? updateResult.raw[entityIndex]\n : updateResult.raw\n const returningColumns =\n this.queryRunner.connection.driver.createGeneratedMap(\n metadata,\n result,\n )\n if (returningColumns) {\n this.queryRunner.manager.merge(\n metadata.target as any,\n entity,\n returningColumns,\n )\n updateResult.generatedMaps.push(returningColumns)\n }\n } else {\n // for driver which do not support returning/output statement we need to perform separate query and load what we need\n const updationColumns =\n this.expressionMap.extraReturningColumns\n if (updationColumns.length > 0) {\n // get entity id by which we will get needed data\n const entityId =\n this.expressionMap.mainAlias!.metadata.getEntityIdMap(\n entity,\n )\n if (!entityId)\n throw new TypeORMError(\n `Cannot update entity because entity id is not set in the entity.`,\n )\n\n // execute query to get needed data\n const loadedReturningColumns =\n (await this.queryRunner.manager\n .createQueryBuilder()\n .select(\n metadata.primaryColumns.map(\n (column) =>\n metadata.targetName +\n \".\" +\n column.propertyPath,\n ),\n )\n .addSelect(\n updationColumns.map(\n (column) =>\n metadata.targetName +\n \".\" +\n column.propertyPath,\n ),\n )\n .from(metadata.target, metadata.targetName)\n .where(entityId)\n .withDeleted()\n .setOption(\"create-pojo\") // use POJO because created object can contain default values, e.g. property = null and those properties might be overridden by merge process\n .getOne()) as any\n\n if (loadedReturningColumns) {\n this.queryRunner.manager.merge(\n metadata.target as any,\n entity,\n loadedReturningColumns,\n )\n updateResult.generatedMaps.push(\n loadedReturningColumns,\n )\n }\n }\n }\n }),\n )\n }\n\n /**\n * Updates entities with a special columns after insertion query execution.\n */\n async insert(\n insertResult: InsertResult,\n entities: ObjectLiteral[],\n ): Promise<void> {\n const metadata = this.expressionMap.mainAlias!.metadata\n let insertionColumns = metadata.getInsertionReturningColumns()\n\n // to prevent extra select SQL execution for databases not supporting RETURNING\n // in the case if we have generated column and it's value returned by underlying driver\n // we remove this column from the insertionColumns list\n const needToCheckGenerated =\n this.queryRunner.connection.driver.isReturningSqlSupported(\"insert\")\n insertionColumns = insertionColumns.filter((column) => {\n if (!column.isGenerated) return true\n return needToCheckGenerated === true\n })\n\n const generatedMaps = entities.map((entity, entityIndex) => {\n if (\n this.queryRunner.connection.driver.options.type === \"oracle\" &&\n Array.isArray(insertResult.raw) &&\n this.expressionMap.extraReturningColumns.length > 0\n ) {\n insertResult.raw = insertResult.raw.reduce(\n (newRaw, rawItem, rawItemIndex) => {\n newRaw[\n this.expressionMap.extraReturningColumns[\n rawItemIndex\n ].databaseName\n ] = rawItem[0]\n return newRaw\n },\n {} as ObjectLiteral,\n )\n }\n // get all values generated by a database for us\n const result = Array.isArray(insertResult.raw)\n ? insertResult.raw[entityIndex]\n : insertResult.raw\n\n const generatedMap =\n this.queryRunner.connection.driver.createGeneratedMap(\n metadata,\n result,\n entityIndex,\n entities.length,\n ) || {}\n\n if (entityIndex in this.expressionMap.locallyGenerated) {\n this.queryRunner.manager.merge(\n metadata.target as any,\n generatedMap,\n this.expressionMap.locallyGenerated[entityIndex],\n )\n }\n\n this.queryRunner.manager.merge(\n metadata.target as any,\n entity,\n generatedMap,\n )\n\n return generatedMap\n })\n\n // for postgres and mssql we use returning/output statement to get values of inserted default and generated values\n // for other drivers we have to re-select this data from the database\n if (\n insertionColumns.length > 0 &&\n !this.queryRunner.connection.driver.isReturningSqlSupported(\n \"insert\",\n )\n ) {\n const entityIds = entities.map((entity) => {\n const entityId = metadata.getEntityIdMap(entity)!\n\n // We have to check for an empty `entityId` - if we don't, the query against the database\n // effectively drops the `where` clause entirely and the first record will be returned -\n // not what we want at all.\n if (!entityId)\n throw new TypeORMError(\n `Cannot update entity because entity id is not set in the entity.`,\n )\n\n return entityId\n })\n\n // to select just inserted entities we need a criteria to select by.\n // for newly inserted entities in drivers which do not support returning statement\n // row identifier can only be an increment column\n // (since its the only thing that can be generated by those databases)\n // or (and) other primary key which is defined by a user and inserted value has it\n\n const returningResult: any = await this.queryRunner.manager\n .createQueryBuilder()\n .select(\n metadata.primaryColumns.map(\n (column) =>\n metadata.targetName + \".\" + column.propertyPath,\n ),\n )\n .addSelect(\n insertionColumns.map(\n (column) =>\n metadata.targetName + \".\" + column.propertyPath,\n ),\n )\n .from(metadata.target, metadata.targetName)\n .where(entityIds)\n .setOption(\"create-pojo\") // use POJO because created object can contain default values, e.g. property = null and those properties might be overridden by merge process\n .getMany()\n\n entities.forEach((entity, entityIndex) => {\n this.queryRunner.manager.merge(\n metadata.target as any,\n generatedMaps[entityIndex],\n returningResult[entityIndex],\n )\n\n this.queryRunner.manager.merge(\n metadata.target as any,\n entity,\n returningResult[entityIndex],\n )\n })\n }\n\n entities.forEach((entity, entityIndex) => {\n const entityId = metadata.getEntityIdMap(entity)!\n insertResult.identifiers.push(entityId)\n insertResult.generatedMaps.push(generatedMaps[entityIndex])\n })\n }\n\n /**\n * Columns we need to be returned from the database when we update entity.\n */\n getUpdationReturningColumns(): ColumnMetadata[] {\n return this.expressionMap.mainAlias!.metadata.columns.filter(\n (column) => {\n return (\n column.asExpression !== undefined ||\n column.isUpdateDate ||\n column.isVersion\n )\n },\n )\n }\n\n /**\n * Columns we need to be returned from the database when we soft delete and restore entity.\n */\n getSoftDeletionReturningColumns(): ColumnMetadata[] {\n return this.expressionMap.mainAlias!.metadata.columns.filter(\n (column) => {\n return (\n column.asExpression !== undefined ||\n column.isUpdateDate ||\n column.isVersion ||\n column.isDeleteDate\n )\n },\n )\n }\n}\n"],"sourceRoot":".."}
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/query-builder/SelectQuery.ts"],"names":[],"mappings":"","file":"SelectQuery.js","sourcesContent":["export interface SelectQuery {\r\n selection: string\r\n aliasName?: string\r\n virtual?: boolean\r\n}\r\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/query-builder/SelectQuery.ts"],"names":[],"mappings":"","file":"SelectQuery.js","sourcesContent":["export interface SelectQuery {\n selection: string\n aliasName?: string\n virtual?: boolean\n}\n"],"sourceRoot":".."}