typeorm 0.2.38-dev.e9366b3 → 0.2.39-dev.1197f88

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 (695) hide show
  1. package/README.md +61 -60
  2. package/browser/connection/ConnectionMetadataBuilder.js +4 -4
  3. package/browser/connection/ConnectionMetadataBuilder.js.map +1 -1
  4. package/browser/connection/ConnectionOptionsReader.js +2 -1
  5. package/browser/connection/ConnectionOptionsReader.js.map +1 -1
  6. package/browser/connection/options-reader/ConnectionOptionsYmlReader.js +1 -1
  7. package/browser/connection/options-reader/ConnectionOptionsYmlReader.js.map +1 -1
  8. package/browser/decorator/entity-view/ViewEntity.js +1 -0
  9. package/browser/decorator/entity-view/ViewEntity.js.map +1 -1
  10. package/browser/decorator/options/ViewEntityOptions.d.ts +5 -0
  11. package/browser/decorator/options/ViewEntityOptions.js.map +1 -1
  12. package/browser/decorator/transaction/Transaction.js +3 -3
  13. package/browser/decorator/transaction/Transaction.js.map +1 -1
  14. package/browser/driver/DriverUtils.js +1 -1
  15. package/browser/driver/DriverUtils.js.map +1 -1
  16. package/browser/driver/aurora-data-api/AuroraDataApiConnectionOptions.d.ts +5 -0
  17. package/browser/driver/aurora-data-api/AuroraDataApiConnectionOptions.js.map +1 -1
  18. package/browser/driver/aurora-data-api/AuroraDataApiDriver.js +6 -5
  19. package/browser/driver/aurora-data-api/AuroraDataApiDriver.js.map +1 -1
  20. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js +19 -48
  21. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  22. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresConnectionOptions.d.ts +5 -0
  23. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresConnectionOptions.js.map +1 -1
  24. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js +2 -1
  25. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js.map +1 -1
  26. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js +17 -46
  27. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js.map +1 -1
  28. package/browser/driver/better-sqlite3/BetterSqlite3ConnectionOptions.d.ts +5 -0
  29. package/browser/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js.map +1 -1
  30. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js +4 -3
  31. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  32. package/browser/driver/cockroachdb/CockroachConnectionOptions.d.ts +10 -0
  33. package/browser/driver/cockroachdb/CockroachConnectionOptions.js.map +1 -1
  34. package/browser/driver/cockroachdb/CockroachDriver.js +28 -18
  35. package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
  36. package/browser/driver/cockroachdb/CockroachQueryRunner.js +108 -145
  37. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  38. package/browser/driver/cordova/CordovaConnectionOptions.d.ts +5 -0
  39. package/browser/driver/cordova/CordovaConnectionOptions.js.map +1 -1
  40. package/browser/driver/cordova/CordovaDriver.d.ts +1 -1
  41. package/browser/driver/cordova/CordovaDriver.js +27 -19
  42. package/browser/driver/cordova/CordovaDriver.js.map +1 -1
  43. package/browser/driver/cordova/CordovaQueryRunner.js +50 -43
  44. package/browser/driver/cordova/CordovaQueryRunner.js.map +1 -1
  45. package/browser/driver/expo/ExpoQueryRunner.js +12 -43
  46. package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
  47. package/browser/driver/mongodb/MongoConnectionOptions.d.ts +5 -0
  48. package/browser/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  49. package/browser/driver/mongodb/MongoDriver.js +2 -1
  50. package/browser/driver/mongodb/MongoDriver.js.map +1 -1
  51. package/browser/driver/mysql/MysqlConnectionOptions.d.ts +6 -0
  52. package/browser/driver/mysql/MysqlConnectionOptions.js.map +1 -1
  53. package/browser/driver/mysql/MysqlDriver.js +4 -2
  54. package/browser/driver/mysql/MysqlDriver.js.map +1 -1
  55. package/browser/driver/mysql/MysqlQueryRunner.js +24 -54
  56. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  57. package/browser/driver/nativescript/NativescriptQueryRunner.js +45 -37
  58. package/browser/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  59. package/browser/driver/oracle/OracleConnectionOptions.d.ts +5 -0
  60. package/browser/driver/oracle/OracleConnectionOptions.js.map +1 -1
  61. package/browser/driver/oracle/OracleDriver.js +5 -4
  62. package/browser/driver/oracle/OracleDriver.js.map +1 -1
  63. package/browser/driver/oracle/OracleQueryRunner.js +20 -48
  64. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  65. package/browser/driver/postgres/PostgresConnectionOptions.d.ts +10 -0
  66. package/browser/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  67. package/browser/driver/postgres/PostgresDriver.d.ts +2 -2
  68. package/browser/driver/postgres/PostgresDriver.js +37 -45
  69. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  70. package/browser/driver/postgres/PostgresQueryRunner.js +28 -66
  71. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  72. package/browser/driver/react-native/ReactNativeConnectionOptions.d.ts +5 -0
  73. package/browser/driver/react-native/ReactNativeConnectionOptions.js.map +1 -1
  74. package/browser/driver/react-native/ReactNativeDriver.js +2 -1
  75. package/browser/driver/react-native/ReactNativeDriver.js.map +1 -1
  76. package/browser/driver/sap/SapConnectionOptions.d.ts +16 -6
  77. package/browser/driver/sap/SapConnectionOptions.js.map +1 -1
  78. package/browser/driver/sap/SapDriver.js +6 -3
  79. package/browser/driver/sap/SapDriver.js.map +1 -1
  80. package/browser/driver/sap/SapQueryRunner.js +30 -78
  81. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  82. package/browser/driver/sqlite/SqliteConnectionOptions.d.ts +5 -0
  83. package/browser/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
  84. package/browser/driver/sqlite/SqliteDriver.js +4 -3
  85. package/browser/driver/sqlite/SqliteDriver.js.map +1 -1
  86. package/browser/driver/sqlite/SqliteQueryRunner.js +16 -8
  87. package/browser/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  88. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +19 -49
  89. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  90. package/browser/driver/sqljs/SqljsConnectionOptions.d.ts +5 -0
  91. package/browser/driver/sqljs/SqljsConnectionOptions.js.map +1 -1
  92. package/browser/driver/sqljs/SqljsDriver.js +9 -24
  93. package/browser/driver/sqljs/SqljsDriver.js.map +1 -1
  94. package/browser/driver/sqljs/SqljsQueryRunner.js +9 -10
  95. package/browser/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  96. package/browser/driver/sqlserver/SqlServerConnectionOptions.d.ts +5 -0
  97. package/browser/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
  98. package/browser/driver/sqlserver/SqlServerDriver.js +7 -6
  99. package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
  100. package/browser/driver/sqlserver/SqlServerQueryRunner.js +84 -116
  101. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  102. package/browser/entity-manager/MongoEntityManager.js +8 -13
  103. package/browser/entity-manager/MongoEntityManager.js.map +1 -1
  104. package/browser/find-options/FindOptionsUtils.js +1 -1
  105. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  106. package/browser/metadata/ColumnMetadata.js +4 -4
  107. package/browser/metadata/ColumnMetadata.js.map +1 -1
  108. package/browser/metadata/EmbeddedMetadata.js +1 -1
  109. package/browser/metadata/EmbeddedMetadata.js.map +1 -1
  110. package/browser/metadata/EntityMetadata.d.ts +5 -0
  111. package/browser/metadata/EntityMetadata.js +2 -1
  112. package/browser/metadata/EntityMetadata.js.map +1 -1
  113. package/browser/metadata/RelationMetadata.js +4 -4
  114. package/browser/metadata/RelationMetadata.js.map +1 -1
  115. package/browser/metadata-args/TableMetadataArgs.d.ts +4 -0
  116. package/browser/metadata-args/TableMetadataArgs.js.map +1 -1
  117. package/browser/metadata-builder/EntityMetadataBuilder.js +5 -5
  118. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  119. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +1 -1
  120. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  121. package/browser/migration/MigrationExecutor.d.ts +1 -1
  122. package/browser/migration/MigrationExecutor.js +6 -14
  123. package/browser/migration/MigrationExecutor.js.map +1 -1
  124. package/browser/naming-strategy/DefaultNamingStrategy.js +5 -5
  125. package/browser/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  126. package/browser/persistence/Subject.js +1 -1
  127. package/browser/persistence/Subject.js.map +1 -1
  128. package/browser/persistence/SubjectDatabaseEntityLoader.js +1 -1
  129. package/browser/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  130. package/browser/persistence/SubjectExecutor.js +4 -4
  131. package/browser/persistence/SubjectExecutor.js.map +1 -1
  132. package/browser/persistence/SubjectTopoligicalSorter.js +5 -5
  133. package/browser/persistence/SubjectTopoligicalSorter.js.map +1 -1
  134. package/browser/persistence/tree/ClosureSubjectExecutor.js +4 -4
  135. package/browser/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  136. package/browser/query-builder/DeleteQueryBuilder.js +3 -10
  137. package/browser/query-builder/DeleteQueryBuilder.js.map +1 -1
  138. package/browser/query-builder/InsertQueryBuilder.js +4 -6
  139. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  140. package/browser/query-builder/QueryBuilder.js +9 -9
  141. package/browser/query-builder/QueryBuilder.js.map +1 -1
  142. package/browser/query-builder/RelationLoader.js +2 -2
  143. package/browser/query-builder/RelationLoader.js.map +1 -1
  144. package/browser/query-builder/RelationRemover.js +6 -6
  145. package/browser/query-builder/RelationRemover.js.map +1 -1
  146. package/browser/query-builder/SelectQueryBuilder.js +14 -14
  147. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  148. package/browser/query-builder/SoftDeleteQueryBuilder.js +3 -10
  149. package/browser/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  150. package/browser/query-builder/UpdateQueryBuilder.js +5 -12
  151. package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
  152. package/browser/query-builder/relation-id/RelationIdLoader.js +1 -1
  153. package/browser/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  154. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js +4 -10
  155. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  156. package/browser/query-runner/BaseQueryRunner.d.ts +2 -1
  157. package/browser/query-runner/BaseQueryRunner.js +49 -27
  158. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  159. package/browser/query-runner/QueryLock.js +1 -1
  160. package/browser/query-runner/QueryLock.js.map +1 -1
  161. package/browser/repository/BaseEntity.js +1 -1
  162. package/browser/repository/BaseEntity.js.map +1 -1
  163. package/browser/repository/Repository.js +1 -1
  164. package/browser/repository/Repository.js.map +1 -1
  165. package/browser/repository/TreeRepository.js +2 -2
  166. package/browser/repository/TreeRepository.js.map +1 -1
  167. package/browser/schema-builder/RdbmsSchemaBuilder.d.ts +2 -0
  168. package/browser/schema-builder/RdbmsSchemaBuilder.js +248 -190
  169. package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  170. package/browser/schema-builder/table/TableCheck.js +1 -1
  171. package/browser/schema-builder/table/TableCheck.js.map +1 -1
  172. package/browser/schema-builder/table/TableForeignKey.js +2 -2
  173. package/browser/schema-builder/table/TableForeignKey.js.map +1 -1
  174. package/browser/schema-builder/table/TableIndex.js +1 -1
  175. package/browser/schema-builder/table/TableIndex.js.map +1 -1
  176. package/browser/schema-builder/table/TableUnique.js +1 -1
  177. package/browser/schema-builder/table/TableUnique.js.map +1 -1
  178. package/browser/schema-builder/util/ViewUtils.d.ts +7 -0
  179. package/browser/schema-builder/util/ViewUtils.js +25 -0
  180. package/browser/schema-builder/util/ViewUtils.js.map +1 -0
  181. package/browser/subscriber/Broadcaster.d.ts +23 -2
  182. package/browser/subscriber/Broadcaster.js +35 -2
  183. package/browser/subscriber/Broadcaster.js.map +1 -1
  184. package/browser/subscriber/BroadcasterResult.d.ts +4 -0
  185. package/browser/subscriber/BroadcasterResult.js +19 -0
  186. package/browser/subscriber/BroadcasterResult.js.map +1 -1
  187. package/browser/util/StringUtils.js +1 -1
  188. package/browser/util/StringUtils.js.map +1 -1
  189. package/cache/DbQueryResultCache.js +12 -12
  190. package/cache/RedisQueryResultCache.js +12 -12
  191. package/cli.js +1 -6
  192. package/cli.js.map +1 -1
  193. package/commands/CacheClearCommand.js +4 -4
  194. package/commands/CacheClearCommand.js.map +1 -1
  195. package/commands/CommandUtils.js +10 -10
  196. package/commands/CommandUtils.js.map +1 -1
  197. package/commands/EntityCreateCommand.js +3 -3
  198. package/commands/EntityCreateCommand.js.map +1 -1
  199. package/commands/InitCommand.js +5 -5
  200. package/commands/InitCommand.js.map +1 -1
  201. package/commands/MigrationCreateCommand.js +5 -5
  202. package/commands/MigrationCreateCommand.js.map +1 -1
  203. package/commands/MigrationGenerateCommand.js +7 -7
  204. package/commands/MigrationGenerateCommand.js.map +1 -1
  205. package/commands/MigrationRevertCommand.js +4 -4
  206. package/commands/MigrationRevertCommand.js.map +1 -1
  207. package/commands/MigrationRunCommand.js +5 -5
  208. package/commands/MigrationRunCommand.js.map +1 -1
  209. package/commands/MigrationShowCommand.js +5 -5
  210. package/commands/MigrationShowCommand.js.map +1 -1
  211. package/commands/QueryCommand.js +4 -4
  212. package/commands/QueryCommand.js.map +1 -1
  213. package/commands/SchemaDropCommand.js +4 -4
  214. package/commands/SchemaDropCommand.js.map +1 -1
  215. package/commands/SchemaLogCommand.js +7 -7
  216. package/commands/SchemaLogCommand.js.map +1 -1
  217. package/commands/SchemaSyncCommand.js +5 -5
  218. package/commands/SchemaSyncCommand.js.map +1 -1
  219. package/commands/SubscriberCreateCommand.js +3 -3
  220. package/commands/SubscriberCreateCommand.js.map +1 -1
  221. package/commands/VersionCommand.js +3 -3
  222. package/commands/VersionCommand.js.map +1 -1
  223. package/connection/Connection.js +19 -19
  224. package/connection/Connection.js.map +1 -1
  225. package/connection/ConnectionMetadataBuilder.js +11 -11
  226. package/connection/ConnectionMetadataBuilder.js.map +1 -1
  227. package/connection/ConnectionOptionsReader.js +11 -10
  228. package/connection/ConnectionOptionsReader.js.map +1 -1
  229. package/connection/options-reader/ConnectionOptionsEnvReader.js +2 -2
  230. package/connection/options-reader/ConnectionOptionsXmlReader.js +3 -3
  231. package/connection/options-reader/ConnectionOptionsXmlReader.js.map +1 -1
  232. package/connection/options-reader/ConnectionOptionsYmlReader.js +4 -4
  233. package/connection/options-reader/ConnectionOptionsYmlReader.js.map +1 -1
  234. package/decorator/Check.js +1 -1
  235. package/decorator/Check.js.map +1 -1
  236. package/decorator/EntityRepository.js +1 -1
  237. package/decorator/EntityRepository.js.map +1 -1
  238. package/decorator/Exclusion.js +1 -1
  239. package/decorator/Exclusion.js.map +1 -1
  240. package/decorator/Generated.js +1 -1
  241. package/decorator/Generated.js.map +1 -1
  242. package/decorator/Index.js +1 -1
  243. package/decorator/Index.js.map +1 -1
  244. package/decorator/Unique.js +1 -1
  245. package/decorator/Unique.js.map +1 -1
  246. package/decorator/columns/Column.js +4 -4
  247. package/decorator/columns/Column.js.map +1 -1
  248. package/decorator/columns/CreateDateColumn.js +1 -1
  249. package/decorator/columns/CreateDateColumn.js.map +1 -1
  250. package/decorator/columns/DeleteDateColumn.js +1 -1
  251. package/decorator/columns/DeleteDateColumn.js.map +1 -1
  252. package/decorator/columns/ObjectIdColumn.js +1 -1
  253. package/decorator/columns/ObjectIdColumn.js.map +1 -1
  254. package/decorator/columns/PrimaryColumn.js +2 -2
  255. package/decorator/columns/PrimaryColumn.js.map +1 -1
  256. package/decorator/columns/PrimaryGeneratedColumn.js +2 -2
  257. package/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
  258. package/decorator/columns/UpdateDateColumn.js +1 -1
  259. package/decorator/columns/UpdateDateColumn.js.map +1 -1
  260. package/decorator/columns/VersionColumn.js +1 -1
  261. package/decorator/columns/VersionColumn.js.map +1 -1
  262. package/decorator/columns/ViewColumn.js +1 -1
  263. package/decorator/columns/ViewColumn.js.map +1 -1
  264. package/decorator/entity/ChildEntity.js +2 -2
  265. package/decorator/entity/ChildEntity.js.map +1 -1
  266. package/decorator/entity/Entity.js +1 -1
  267. package/decorator/entity/Entity.js.map +1 -1
  268. package/decorator/entity/TableInheritance.js +1 -1
  269. package/decorator/entity/TableInheritance.js.map +1 -1
  270. package/decorator/entity-view/ViewEntity.js +2 -1
  271. package/decorator/entity-view/ViewEntity.js.map +1 -1
  272. package/decorator/listeners/AfterInsert.js +1 -1
  273. package/decorator/listeners/AfterInsert.js.map +1 -1
  274. package/decorator/listeners/AfterLoad.js +1 -1
  275. package/decorator/listeners/AfterLoad.js.map +1 -1
  276. package/decorator/listeners/AfterRemove.js +1 -1
  277. package/decorator/listeners/AfterRemove.js.map +1 -1
  278. package/decorator/listeners/AfterUpdate.js +1 -1
  279. package/decorator/listeners/AfterUpdate.js.map +1 -1
  280. package/decorator/listeners/BeforeInsert.js +1 -1
  281. package/decorator/listeners/BeforeInsert.js.map +1 -1
  282. package/decorator/listeners/BeforeRemove.js +1 -1
  283. package/decorator/listeners/BeforeRemove.js.map +1 -1
  284. package/decorator/listeners/BeforeUpdate.js +1 -1
  285. package/decorator/listeners/BeforeUpdate.js.map +1 -1
  286. package/decorator/listeners/EventSubscriber.js +1 -1
  287. package/decorator/listeners/EventSubscriber.js.map +1 -1
  288. package/decorator/options/ViewEntityOptions.d.ts +5 -0
  289. package/decorator/options/ViewEntityOptions.js.map +1 -1
  290. package/decorator/relations/JoinColumn.js +1 -1
  291. package/decorator/relations/JoinColumn.js.map +1 -1
  292. package/decorator/relations/JoinTable.js +1 -1
  293. package/decorator/relations/JoinTable.js.map +1 -1
  294. package/decorator/relations/ManyToMany.js +1 -1
  295. package/decorator/relations/ManyToMany.js.map +1 -1
  296. package/decorator/relations/ManyToOne.js +1 -1
  297. package/decorator/relations/ManyToOne.js.map +1 -1
  298. package/decorator/relations/OneToMany.js +1 -1
  299. package/decorator/relations/OneToMany.js.map +1 -1
  300. package/decorator/relations/OneToOne.js +1 -1
  301. package/decorator/relations/OneToOne.js.map +1 -1
  302. package/decorator/relations/RelationCount.js +1 -1
  303. package/decorator/relations/RelationCount.js.map +1 -1
  304. package/decorator/relations/RelationId.js +1 -1
  305. package/decorator/relations/RelationId.js.map +1 -1
  306. package/decorator/transaction/Transaction.js +7 -7
  307. package/decorator/transaction/Transaction.js.map +1 -1
  308. package/decorator/transaction/TransactionManager.js +1 -1
  309. package/decorator/transaction/TransactionManager.js.map +1 -1
  310. package/decorator/transaction/TransactionRepository.js +1 -1
  311. package/decorator/transaction/TransactionRepository.js.map +1 -1
  312. package/decorator/tree/Tree.js +1 -1
  313. package/decorator/tree/Tree.js.map +1 -1
  314. package/decorator/tree/TreeChildren.js +1 -1
  315. package/decorator/tree/TreeChildren.js.map +1 -1
  316. package/decorator/tree/TreeLevelColumn.js +1 -1
  317. package/decorator/tree/TreeLevelColumn.js.map +1 -1
  318. package/decorator/tree/TreeParent.js +1 -1
  319. package/decorator/tree/TreeParent.js.map +1 -1
  320. package/driver/DriverUtils.js +9 -9
  321. package/driver/DriverUtils.js.map +1 -1
  322. package/driver/aurora-data-api/AuroraDataApiConnection.js +1 -1
  323. package/driver/aurora-data-api/AuroraDataApiConnection.js.map +1 -1
  324. package/driver/aurora-data-api/AuroraDataApiConnectionOptions.d.ts +5 -0
  325. package/driver/aurora-data-api/AuroraDataApiConnectionOptions.js.map +1 -1
  326. package/driver/aurora-data-api/AuroraDataApiDriver.js +12 -11
  327. package/driver/aurora-data-api/AuroraDataApiDriver.js.map +1 -1
  328. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js +146 -175
  329. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  330. package/driver/aurora-data-api-pg/AuroraDataApiPostgresConnectionOptions.d.ts +5 -0
  331. package/driver/aurora-data-api-pg/AuroraDataApiPostgresConnectionOptions.js.map +1 -1
  332. package/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js +10 -9
  333. package/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js.map +1 -1
  334. package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js +29 -58
  335. package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js.map +1 -1
  336. package/driver/better-sqlite3/BetterSqlite3ConnectionOptions.d.ts +5 -0
  337. package/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js.map +1 -1
  338. package/driver/better-sqlite3/BetterSqlite3Driver.js +12 -11
  339. package/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  340. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js +5 -5
  341. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  342. package/driver/capacitor/CapacitorDriver.js +7 -7
  343. package/driver/capacitor/CapacitorDriver.js.map +1 -1
  344. package/driver/capacitor/CapacitorQueryRunner.js +5 -5
  345. package/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
  346. package/driver/cockroachdb/CockroachConnectionOptions.d.ts +10 -0
  347. package/driver/cockroachdb/CockroachConnectionOptions.js.map +1 -1
  348. package/driver/cockroachdb/CockroachDriver.js +38 -28
  349. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  350. package/driver/cockroachdb/CockroachQueryRunner.js +240 -277
  351. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  352. package/driver/cordova/CordovaConnectionOptions.d.ts +5 -0
  353. package/driver/cordova/CordovaConnectionOptions.js.map +1 -1
  354. package/driver/cordova/CordovaDriver.d.ts +1 -1
  355. package/driver/cordova/CordovaDriver.js +30 -22
  356. package/driver/cordova/CordovaDriver.js.map +1 -1
  357. package/driver/cordova/CordovaQueryRunner.js +61 -54
  358. package/driver/cordova/CordovaQueryRunner.js.map +1 -1
  359. package/driver/expo/ExpoDriver.js +3 -3
  360. package/driver/expo/ExpoDriver.js.map +1 -1
  361. package/driver/expo/ExpoQueryRunner.js +23 -54
  362. package/driver/expo/ExpoQueryRunner.js.map +1 -1
  363. package/driver/mongodb/MongoConnectionOptions.d.ts +5 -0
  364. package/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  365. package/driver/mongodb/MongoDriver.js +4 -3
  366. package/driver/mongodb/MongoDriver.js.map +1 -1
  367. package/driver/mongodb/MongoQueryRunner.js +178 -178
  368. package/driver/mysql/MysqlConnectionOptions.d.ts +6 -0
  369. package/driver/mysql/MysqlConnectionOptions.js.map +1 -1
  370. package/driver/mysql/MysqlDriver.js +9 -7
  371. package/driver/mysql/MysqlDriver.js.map +1 -1
  372. package/driver/mysql/MysqlQueryRunner.js +152 -182
  373. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  374. package/driver/nativescript/NativescriptDriver.js +3 -3
  375. package/driver/nativescript/NativescriptDriver.js.map +1 -1
  376. package/driver/nativescript/NativescriptQueryRunner.js +48 -40
  377. package/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  378. package/driver/oracle/OracleConnectionOptions.d.ts +5 -0
  379. package/driver/oracle/OracleConnectionOptions.js.map +1 -1
  380. package/driver/oracle/OracleDriver.js +13 -12
  381. package/driver/oracle/OracleDriver.js.map +1 -1
  382. package/driver/oracle/OracleQueryRunner.js +143 -171
  383. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  384. package/driver/postgres/PostgresConnectionOptions.d.ts +10 -0
  385. package/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  386. package/driver/postgres/PostgresDriver.d.ts +2 -2
  387. package/driver/postgres/PostgresDriver.js +52 -60
  388. package/driver/postgres/PostgresDriver.js.map +1 -1
  389. package/driver/postgres/PostgresQueryRunner.js +175 -213
  390. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  391. package/driver/react-native/ReactNativeConnectionOptions.d.ts +5 -0
  392. package/driver/react-native/ReactNativeConnectionOptions.js.map +1 -1
  393. package/driver/react-native/ReactNativeDriver.js +5 -4
  394. package/driver/react-native/ReactNativeDriver.js.map +1 -1
  395. package/driver/react-native/ReactNativeQueryRunner.js +3 -3
  396. package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  397. package/driver/sap/SapConnectionOptions.d.ts +16 -6
  398. package/driver/sap/SapConnectionOptions.js.map +1 -1
  399. package/driver/sap/SapDriver.js +11 -8
  400. package/driver/sap/SapDriver.js.map +1 -1
  401. package/driver/sap/SapQueryRunner.js +159 -207
  402. package/driver/sap/SapQueryRunner.js.map +1 -1
  403. package/driver/sqlite/SqliteConnectionOptions.d.ts +5 -0
  404. package/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
  405. package/driver/sqlite/SqliteDriver.js +12 -11
  406. package/driver/sqlite/SqliteDriver.js.map +1 -1
  407. package/driver/sqlite/SqliteQueryRunner.js +21 -13
  408. package/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  409. package/driver/sqlite-abstract/AbstractSqliteDriver.js +4 -4
  410. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +138 -168
  411. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  412. package/driver/sqljs/SqljsConnectionOptions.d.ts +5 -0
  413. package/driver/sqljs/SqljsConnectionOptions.js.map +1 -1
  414. package/driver/sqljs/SqljsDriver.js +22 -37
  415. package/driver/sqljs/SqljsDriver.js.map +1 -1
  416. package/driver/sqljs/SqljsQueryRunner.js +17 -18
  417. package/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  418. package/driver/sqlserver/SqlServerConnectionOptions.d.ts +5 -0
  419. package/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
  420. package/driver/sqlserver/SqlServerDriver.js +13 -12
  421. package/driver/sqlserver/SqlServerDriver.js.map +1 -1
  422. package/driver/sqlserver/SqlServerQueryRunner.js +220 -252
  423. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  424. package/entity-manager/EntityManager.js +30 -30
  425. package/entity-manager/EntityManager.js.map +1 -1
  426. package/entity-manager/MongoEntityManager.js +23 -28
  427. package/entity-manager/MongoEntityManager.js.map +1 -1
  428. package/entity-manager/SqljsEntityManager.js +5 -5
  429. package/entity-manager/SqljsEntityManager.js.map +1 -1
  430. package/entity-schema/EntitySchemaTransformer.js +1 -1
  431. package/entity-schema/EntitySchemaTransformer.js.map +1 -1
  432. package/error/AlreadyHasActiveConnectionError.js +1 -1
  433. package/error/AlreadyHasActiveConnectionError.js.map +1 -1
  434. package/error/CannotAttachTreeChildrenEntityError.js +1 -1
  435. package/error/CannotAttachTreeChildrenEntityError.js.map +1 -1
  436. package/error/CannotConnectAlreadyConnectedError.js +1 -1
  437. package/error/CannotConnectAlreadyConnectedError.js.map +1 -1
  438. package/error/CannotCreateEntityIdMapError.js +1 -1
  439. package/error/CannotCreateEntityIdMapError.js.map +1 -1
  440. package/error/CannotDetermineEntityError.js +1 -1
  441. package/error/CannotDetermineEntityError.js.map +1 -1
  442. package/error/CannotExecuteNotConnectedError.js +1 -1
  443. package/error/CannotExecuteNotConnectedError.js.map +1 -1
  444. package/error/CannotGetEntityManagerNotConnectedError.js +1 -1
  445. package/error/CannotGetEntityManagerNotConnectedError.js.map +1 -1
  446. package/error/CannotReflectMethodParameterTypeError.js +1 -1
  447. package/error/CannotReflectMethodParameterTypeError.js.map +1 -1
  448. package/error/CircularRelationsError.js +1 -1
  449. package/error/CircularRelationsError.js.map +1 -1
  450. package/error/ColumnTypeUndefinedError.js +1 -1
  451. package/error/ColumnTypeUndefinedError.js.map +1 -1
  452. package/error/ConnectionIsNotSetError.js +1 -1
  453. package/error/ConnectionIsNotSetError.js.map +1 -1
  454. package/error/ConnectionNotFoundError.js +1 -1
  455. package/error/ConnectionNotFoundError.js.map +1 -1
  456. package/error/CustomRepositoryCannotInheritRepositoryError.js +1 -1
  457. package/error/CustomRepositoryCannotInheritRepositoryError.js.map +1 -1
  458. package/error/CustomRepositoryDoesNotHaveEntityError.js +1 -1
  459. package/error/CustomRepositoryDoesNotHaveEntityError.js.map +1 -1
  460. package/error/CustomRepositoryNotFoundError.js +1 -1
  461. package/error/CustomRepositoryNotFoundError.js.map +1 -1
  462. package/error/DataTypeNotSupportedError.js +1 -1
  463. package/error/DataTypeNotSupportedError.js.map +1 -1
  464. package/error/DriverOptionNotSetError.js +1 -1
  465. package/error/DriverOptionNotSetError.js.map +1 -1
  466. package/error/DriverPackageNotInstalledError.js +1 -1
  467. package/error/DriverPackageNotInstalledError.js.map +1 -1
  468. package/error/EntityColumnNotFound.js +1 -1
  469. package/error/EntityColumnNotFound.js.map +1 -1
  470. package/error/EntityMetadataNotFoundError.js +1 -1
  471. package/error/EntityMetadataNotFoundError.js.map +1 -1
  472. package/error/EntityNotFoundError.js +1 -1
  473. package/error/EntityNotFoundError.js.map +1 -1
  474. package/error/FindRelationsNotFoundError.js +1 -1
  475. package/error/FindRelationsNotFoundError.js.map +1 -1
  476. package/error/InitializedRelationError.js +1 -1
  477. package/error/InitializedRelationError.js.map +1 -1
  478. package/error/InsertValuesMissingError.js +1 -1
  479. package/error/InsertValuesMissingError.js.map +1 -1
  480. package/error/LimitOnUpdateNotSupportedError.js +1 -1
  481. package/error/LimitOnUpdateNotSupportedError.js.map +1 -1
  482. package/error/LockNotSupportedOnGivenDriverError.js +1 -1
  483. package/error/LockNotSupportedOnGivenDriverError.js.map +1 -1
  484. package/error/MetadataAlreadyExistsError.js +1 -1
  485. package/error/MetadataAlreadyExistsError.js.map +1 -1
  486. package/error/MetadataWithSuchNameAlreadyExistsError.js +1 -1
  487. package/error/MetadataWithSuchNameAlreadyExistsError.js.map +1 -1
  488. package/error/MissingDeleteDateColumnError.js +1 -1
  489. package/error/MissingDeleteDateColumnError.js.map +1 -1
  490. package/error/MissingDriverError.js +1 -1
  491. package/error/MissingDriverError.js.map +1 -1
  492. package/error/MissingJoinColumnError.js +1 -1
  493. package/error/MissingJoinColumnError.js.map +1 -1
  494. package/error/MissingJoinTableError.js +1 -1
  495. package/error/MissingJoinTableError.js.map +1 -1
  496. package/error/MissingPrimaryColumnError.js +1 -1
  497. package/error/MissingPrimaryColumnError.js.map +1 -1
  498. package/error/MustBeEntityError.js +1 -1
  499. package/error/MustBeEntityError.js.map +1 -1
  500. package/error/NamingStrategyNotFoundError.js +1 -1
  501. package/error/NamingStrategyNotFoundError.js.map +1 -1
  502. package/error/NestedSetMultipleRootError.js +1 -1
  503. package/error/NestedSetMultipleRootError.js.map +1 -1
  504. package/error/NoConnectionForRepositoryError.js +1 -1
  505. package/error/NoConnectionForRepositoryError.js.map +1 -1
  506. package/error/NoConnectionOptionError.js +1 -1
  507. package/error/NoConnectionOptionError.js.map +1 -1
  508. package/error/NoNeedToReleaseEntityManagerError.js +1 -1
  509. package/error/NoNeedToReleaseEntityManagerError.js.map +1 -1
  510. package/error/NoVersionOrUpdateDateColumnError.js +1 -1
  511. package/error/NoVersionOrUpdateDateColumnError.js.map +1 -1
  512. package/error/OffsetWithoutLimitNotSupportedError.js +1 -1
  513. package/error/OffsetWithoutLimitNotSupportedError.js.map +1 -1
  514. package/error/OptimisticLockCanNotBeUsedError.js +1 -1
  515. package/error/OptimisticLockCanNotBeUsedError.js.map +1 -1
  516. package/error/OptimisticLockVersionMismatchError.js +1 -1
  517. package/error/OptimisticLockVersionMismatchError.js.map +1 -1
  518. package/error/PersistedEntityNotFoundError.js +1 -1
  519. package/error/PersistedEntityNotFoundError.js.map +1 -1
  520. package/error/PessimisticLockTransactionRequiredError.js +1 -1
  521. package/error/PessimisticLockTransactionRequiredError.js.map +1 -1
  522. package/error/PrimaryColumnCannotBeNullableError.js +1 -1
  523. package/error/PrimaryColumnCannotBeNullableError.js.map +1 -1
  524. package/error/QueryFailedError.js +3 -3
  525. package/error/QueryFailedError.js.map +1 -1
  526. package/error/QueryRunnerAlreadyReleasedError.js +1 -1
  527. package/error/QueryRunnerAlreadyReleasedError.js.map +1 -1
  528. package/error/QueryRunnerProviderAlreadyReleasedError.js +1 -1
  529. package/error/QueryRunnerProviderAlreadyReleasedError.js.map +1 -1
  530. package/error/RepositoryNotFoundError.js +1 -1
  531. package/error/RepositoryNotFoundError.js.map +1 -1
  532. package/error/RepositoryNotTreeError.js +1 -1
  533. package/error/RepositoryNotTreeError.js.map +1 -1
  534. package/error/ReturningStatementNotSupportedError.js +1 -1
  535. package/error/ReturningStatementNotSupportedError.js.map +1 -1
  536. package/error/SubjectRemovedAndUpdatedError.js +1 -1
  537. package/error/SubjectRemovedAndUpdatedError.js.map +1 -1
  538. package/error/SubjectWithoutIdentifierError.js +1 -1
  539. package/error/SubjectWithoutIdentifierError.js.map +1 -1
  540. package/error/TransactionAlreadyStartedError.js +1 -1
  541. package/error/TransactionAlreadyStartedError.js.map +1 -1
  542. package/error/TransactionNotStartedError.js +1 -1
  543. package/error/TransactionNotStartedError.js.map +1 -1
  544. package/error/TreeRepositoryNotSupportedError.js +1 -1
  545. package/error/TreeRepositoryNotSupportedError.js.map +1 -1
  546. package/error/TypeORMError.js +1 -1
  547. package/error/TypeORMError.js.map +1 -1
  548. package/error/UpdateValuesMissingError.js +1 -1
  549. package/error/UpdateValuesMissingError.js.map +1 -1
  550. package/error/UsingJoinColumnIsNotAllowedError.js +1 -1
  551. package/error/UsingJoinColumnIsNotAllowedError.js.map +1 -1
  552. package/error/UsingJoinColumnOnlyOnOneSideAllowedError.js +1 -1
  553. package/error/UsingJoinColumnOnlyOnOneSideAllowedError.js.map +1 -1
  554. package/error/UsingJoinTableIsNotAllowedError.js +1 -1
  555. package/error/UsingJoinTableIsNotAllowedError.js.map +1 -1
  556. package/error/UsingJoinTableOnlyOnOneSideAllowedError.js +1 -1
  557. package/error/UsingJoinTableOnlyOnOneSideAllowedError.js.map +1 -1
  558. package/error/index.js +62 -62
  559. package/error/index.js.map +1 -1
  560. package/find-options/FindOptionsUtils.js +4 -4
  561. package/find-options/FindOptionsUtils.js.map +1 -1
  562. package/globals.js +7 -7
  563. package/globals.js.map +1 -1
  564. package/index.js +102 -102
  565. package/index.js.map +1 -1
  566. package/logger/DebugLogger.js +9 -9
  567. package/logger/DebugLogger.js.map +1 -1
  568. package/logger/FileLogger.js +1 -1
  569. package/logger/FileLogger.js.map +1 -1
  570. package/metadata/ColumnMetadata.js +4 -4
  571. package/metadata/ColumnMetadata.js.map +1 -1
  572. package/metadata/EmbeddedMetadata.js +1 -1
  573. package/metadata/EmbeddedMetadata.js.map +1 -1
  574. package/metadata/EntityMetadata.d.ts +5 -0
  575. package/metadata/EntityMetadata.js +3 -2
  576. package/metadata/EntityMetadata.js.map +1 -1
  577. package/metadata/RelationMetadata.js +4 -4
  578. package/metadata/RelationMetadata.js.map +1 -1
  579. package/metadata-args/TableMetadataArgs.d.ts +4 -0
  580. package/metadata-args/TableMetadataArgs.js.map +1 -1
  581. package/metadata-builder/EntityMetadataBuilder.js +5 -5
  582. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  583. package/metadata-builder/JunctionEntityMetadataBuilder.js +1 -1
  584. package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  585. package/migration/MigrationExecutor.d.ts +1 -1
  586. package/migration/MigrationExecutor.js +39 -47
  587. package/migration/MigrationExecutor.js.map +1 -1
  588. package/naming-strategy/DefaultNamingStrategy.js +10 -10
  589. package/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  590. package/package.json +1 -1
  591. package/persistence/EntityPersistExecutor.js +5 -5
  592. package/persistence/EntityPersistExecutor.js.map +1 -1
  593. package/persistence/Subject.js +1 -1
  594. package/persistence/Subject.js.map +1 -1
  595. package/persistence/SubjectDatabaseEntityLoader.js +6 -6
  596. package/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  597. package/persistence/SubjectExecutor.js +33 -33
  598. package/persistence/SubjectExecutor.js.map +1 -1
  599. package/persistence/SubjectTopoligicalSorter.js +5 -5
  600. package/persistence/SubjectTopoligicalSorter.js.map +1 -1
  601. package/persistence/subject-builder/CascadesSubjectBuilder.js +1 -1
  602. package/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  603. package/persistence/tree/ClosureSubjectExecutor.js +13 -13
  604. package/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  605. package/persistence/tree/MaterializedPathSubjectExecutor.js +5 -5
  606. package/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  607. package/persistence/tree/NestedSetSubjectExecutor.js +14 -14
  608. package/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
  609. package/platform/PlatformTools.js +8 -8
  610. package/platform/PlatformTools.js.map +1 -1
  611. package/query-builder/DeleteQueryBuilder.js +7 -14
  612. package/query-builder/DeleteQueryBuilder.js.map +1 -1
  613. package/query-builder/InsertQueryBuilder.js +9 -11
  614. package/query-builder/InsertQueryBuilder.js.map +1 -1
  615. package/query-builder/JoinAttribute.js +1 -1
  616. package/query-builder/JoinAttribute.js.map +1 -1
  617. package/query-builder/QueryBuilder.js +37 -37
  618. package/query-builder/QueryBuilder.js.map +1 -1
  619. package/query-builder/QueryBuilderUtils.js +1 -1
  620. package/query-builder/QueryBuilderUtils.js.map +1 -1
  621. package/query-builder/QueryExpressionMap.js +3 -3
  622. package/query-builder/QueryExpressionMap.js.map +1 -1
  623. package/query-builder/RelationLoader.js +2 -2
  624. package/query-builder/RelationLoader.js.map +1 -1
  625. package/query-builder/RelationQueryBuilder.js +13 -13
  626. package/query-builder/RelationQueryBuilder.js.map +1 -1
  627. package/query-builder/RelationRemover.js +12 -12
  628. package/query-builder/RelationRemover.js.map +1 -1
  629. package/query-builder/RelationUpdater.js +2 -2
  630. package/query-builder/ReturningResultsEntityUpdator.js +6 -6
  631. package/query-builder/SelectQueryBuilder.js +43 -43
  632. package/query-builder/SelectQueryBuilder.js.map +1 -1
  633. package/query-builder/SoftDeleteQueryBuilder.js +7 -14
  634. package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  635. package/query-builder/UpdateQueryBuilder.js +10 -17
  636. package/query-builder/UpdateQueryBuilder.js.map +1 -1
  637. package/query-builder/relation-count/RelationCountAttribute.js +2 -2
  638. package/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
  639. package/query-builder/relation-count/RelationCountLoader.js +4 -4
  640. package/query-builder/relation-id/RelationIdAttribute.js +1 -1
  641. package/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
  642. package/query-builder/relation-id/RelationIdLoader.js +5 -5
  643. package/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  644. package/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js +3 -3
  645. package/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
  646. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js +4 -10
  647. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  648. package/query-runner/BaseQueryRunner.d.ts +2 -1
  649. package/query-runner/BaseQueryRunner.js +70 -48
  650. package/query-runner/BaseQueryRunner.js.map +1 -1
  651. package/query-runner/QueryLock.js +3 -3
  652. package/query-runner/QueryLock.js.map +1 -1
  653. package/repository/AbstractRepository.js +1 -1
  654. package/repository/AbstractRepository.js.map +1 -1
  655. package/repository/BaseEntity.js +4 -4
  656. package/repository/BaseEntity.js.map +1 -1
  657. package/repository/MongoRepository.js +1 -1
  658. package/repository/MongoRepository.js.map +1 -1
  659. package/repository/Repository.js +1 -1
  660. package/repository/Repository.js.map +1 -1
  661. package/repository/TreeRepository.js +7 -7
  662. package/repository/TreeRepository.js.map +1 -1
  663. package/schema-builder/MongoSchemaBuilder.js +2 -2
  664. package/schema-builder/RdbmsSchemaBuilder.d.ts +2 -0
  665. package/schema-builder/RdbmsSchemaBuilder.js +335 -277
  666. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  667. package/schema-builder/table/Table.js +1 -1
  668. package/schema-builder/table/Table.js.map +1 -1
  669. package/schema-builder/table/TableCheck.js +1 -1
  670. package/schema-builder/table/TableCheck.js.map +1 -1
  671. package/schema-builder/table/TableForeignKey.js +2 -2
  672. package/schema-builder/table/TableForeignKey.js.map +1 -1
  673. package/schema-builder/table/TableIndex.js +1 -1
  674. package/schema-builder/table/TableIndex.js.map +1 -1
  675. package/schema-builder/table/TableUnique.js +1 -1
  676. package/schema-builder/table/TableUnique.js.map +1 -1
  677. package/schema-builder/util/ViewUtils.d.ts +7 -0
  678. package/schema-builder/util/ViewUtils.js +28 -0
  679. package/schema-builder/util/ViewUtils.js.map +1 -0
  680. package/subscriber/Broadcaster.d.ts +23 -2
  681. package/subscriber/Broadcaster.js +35 -2
  682. package/subscriber/Broadcaster.js.map +1 -1
  683. package/subscriber/BroadcasterResult.d.ts +4 -0
  684. package/subscriber/BroadcasterResult.js +19 -0
  685. package/subscriber/BroadcasterResult.js.map +1 -1
  686. package/util/DateUtils.js +1 -1
  687. package/util/DateUtils.js.map +1 -1
  688. package/util/DirectoryExportedClassesLoader.js +1 -1
  689. package/util/DirectoryExportedClassesLoader.js.map +1 -1
  690. package/util/ObjectUtils.js +2 -2
  691. package/util/ObjectUtils.js.map +1 -1
  692. package/util/OrmUtils.js +2 -2
  693. package/util/OrmUtils.js.map +1 -1
  694. package/util/StringUtils.js +3 -3
  695. package/util/StringUtils.js.map +1 -1
@@ -34,11 +34,11 @@ var EntityPersistExecutor = /** @class */ (function () {
34
34
  * Executes persistence operation ob given entity or entities.
35
35
  */
36
36
  EntityPersistExecutor.prototype.execute = function () {
37
- return tslib_1.__awaiter(this, void 0, void 0, function () {
37
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
38
38
  var queryRunner, oldQueryRunnerData, entities, entitiesInChunks, executors, executorsWithExecutableOperations, isTransactionStartedByUs, executorsWithExecutableOperations_1, executorsWithExecutableOperations_1_1, executor, e_1_1, error_1, rollbackError_1;
39
39
  var e_1, _a;
40
40
  var _this = this;
41
- return tslib_1.__generator(this, function (_b) {
41
+ return (0, tslib_1.__generator)(this, function (_b) {
42
42
  switch (_b.label) {
43
43
  case 0:
44
44
  // check if entity we are going to save is valid and is an object
@@ -59,10 +59,10 @@ var EntityPersistExecutor = /** @class */ (function () {
59
59
  _b.trys.push([2, , 22, 25]);
60
60
  entities = Array.isArray(this.entity) ? this.entity : [this.entity];
61
61
  entitiesInChunks = this.options && this.options.chunk && this.options.chunk > 0 ? OrmUtils_1.OrmUtils.chunk(entities, this.options.chunk) : [entities];
62
- return [4 /*yield*/, Promise.all(entitiesInChunks.map(function (entities) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
62
+ return [4 /*yield*/, Promise.all(entitiesInChunks.map(function (entities) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () {
63
63
  var subjects, cascadesSubjectBuilder;
64
64
  var _this = this;
65
- return tslib_1.__generator(this, function (_a) {
65
+ return (0, tslib_1.__generator)(this, function (_a) {
66
66
  switch (_a.label) {
67
67
  case 0:
68
68
  subjects = [];
@@ -139,7 +139,7 @@ var EntityPersistExecutor = /** @class */ (function () {
139
139
  _b.label = 6;
140
140
  case 6:
141
141
  _b.trys.push([6, 11, 12, 13]);
142
- executorsWithExecutableOperations_1 = tslib_1.__values(executorsWithExecutableOperations), executorsWithExecutableOperations_1_1 = executorsWithExecutableOperations_1.next();
142
+ executorsWithExecutableOperations_1 = (0, tslib_1.__values)(executorsWithExecutableOperations), executorsWithExecutableOperations_1_1 = executorsWithExecutableOperations_1.next();
143
143
  _b.label = 7;
144
144
  case 7:
145
145
  if (!!executorsWithExecutableOperations_1_1.done) return [3 /*break*/, 10];
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/persistence/EntityPersistExecutor.ts"],"names":[],"mappings":";;;;AAGA,gEAA6D;AAC7D,qDAAkD;AAClD,kFAA+E;AAG/E,qCAAkC;AAClC,qFAAkF;AAClF,yGAAsG;AACtG,uFAAoF;AACpF,6EAA0E;AAC1E,mFAAgF;AAChF,6CAA0C;AAE1C;;GAEG;AACH;IAEI,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,+BAAsB,UAAsB,EACtB,WAAkC,EAClC,IAA6C,EAC7C,MAAiC,EACjC,MAAqC,EACrC,OAAqC;QALrC,eAAU,GAAV,UAAU,CAAY;QACtB,gBAAW,GAAX,WAAW,CAAuB;QAClC,SAAI,GAAJ,IAAI,CAAyC;QAC7C,WAAM,GAAN,MAAM,CAA2B;QACjC,WAAM,GAAN,MAAM,CAA+B;QACrC,YAAO,GAAP,OAAO,CAA8B;IAC3D,CAAC;IAED,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E;;OAEG;IACG,uCAAO,GAAb;;;;;;;;wBAEI,iEAAiE;wBACjE,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;4BAC/C,sBAAO,OAAO,CAAC,MAAM,CAAC,IAAI,qCAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAC;wBAEzE,uGAAuG;wBACvG,qBAAM,OAAO,CAAC,OAAO,EAAE,EAAA;;wBADvB,uGAAuG;wBACvG,SAAuB,CAAC;wBAIlB,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;wBAIxE,kBAAkB,GAAG,WAAW,CAAC,IAAI,CAAC;wBAC1C,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;4BACnC,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;yBACxC;;;;wBAKS,QAAQ,GAAoB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBACrF,gBAAgB,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;wBAGhI,qBAAM,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAM,QAAQ;;;;;;4CAC7D,QAAQ,GAAc,EAAE,CAAC;4CAE/B,mEAAmE;4CACnE,QAAQ,CAAC,OAAO,CAAC,UAAA,MAAM;gDACnB,IAAM,YAAY,GAAG,KAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;gDACpE,IAAI,YAAY,KAAK,MAAM;oDACvB,MAAM,IAAI,uDAA0B,CAAC,KAAI,CAAC,IAAI,CAAC,CAAC;gDAEpD,QAAQ,CAAC,IAAI,CAAC,IAAI,iBAAO,CAAC;oDACtB,QAAQ,EAAE,KAAI,CAAC,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC;oDACnD,MAAM,EAAE,MAAM;oDACd,aAAa,EAAE,KAAI,CAAC,IAAI,KAAK,MAAM;oDACnC,YAAY,EAAE,KAAI,CAAC,IAAI,KAAK,MAAM;oDAClC,aAAa,EAAE,KAAI,CAAC,IAAI,KAAK,QAAQ;oDACrC,gBAAgB,EAAE,KAAI,CAAC,IAAI,KAAK,aAAa;oDAC7C,cAAc,EAAE,KAAI,CAAC,IAAI,KAAK,SAAS;iDAC1C,CAAC,CAAC,CAAC;4CACR,CAAC,CAAC,CAAC;4CAIG,sBAAsB,GAAG,IAAI,+CAAsB,CAAC,QAAQ,CAAC,CAAC;4CACpE,QAAQ,CAAC,OAAO,CAAC,UAAA,OAAO;gDACpB,2DAA2D;gDAC3D,oGAAoG;gDACpG,sBAAsB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAI,CAAC,IAAI,CAAC,CAAC;4CACrD,CAAC,CAAC,CAAC;4CACH,2CAA2C;4CAE3C,kDAAkD;4CAClD,kEAAkE;4CAClE,8BAA8B;4CAC9B,qBAAM,IAAI,yDAA2B,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAA;;4CAL5E,2CAA2C;4CAE3C,kDAAkD;4CAClD,kEAAkE;4CAClE,8BAA8B;4CAC9B,SAA4E,CAAC;4CAC7E,iCAAiC;4CAEjC,qCAAqC;4CACrC,6CAA6C;4CAC7C,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;gDAChF,IAAI,iDAAuB,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;gDAC9C,IAAI,qEAAiC,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;gDACxD,IAAI,mDAAwB,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;6CAClD;iDAAM;gDACH,QAAQ,CAAC,OAAO,CAAC,UAAA,OAAO;oDACpB,IAAI,OAAO,CAAC,aAAa,EAAE;wDACvB,IAAI,mDAAwB,CAAC,QAAQ,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;qDACtE;gDACL,CAAC,CAAC,CAAC;6CACN;4CACD,wCAAwC;4CACxC,2CAA2C;4CAC3C,qCAAqC;4CAErC,4BAA4B;4CAC5B,sBAAO,IAAI,iCAAe,CAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,EAAC;;;iCACnE,CAAC,CAAC,EAAA;;wBAvDG,SAAS,GAAG,SAuDf;wBAKG,iCAAiC,GAAG,SAAS,CAAC,MAAM,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,uBAAuB,EAAhC,CAAgC,CAAC,CAAC;wBACzG,IAAI,iCAAiC,CAAC,MAAM,KAAK,CAAC;4BAC9C,sBAAO;wBAKP,wBAAwB,GAAG,KAAK,CAAC;;;;6BAI7B,CAAC,WAAW,CAAC,mBAAmB,EAAhC,wBAAgC;6BAC5B,CAAA,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,KAAK,CAAA,EAAnD,wBAAmD;wBACnD,wBAAwB,GAAG,IAAI,CAAC;wBAChC,qBAAM,WAAW,CAAC,gBAAgB,EAAE,EAAA;;wBAApC,SAAoC,CAAC;;;;wBAMtB,sCAAA,iBAAA,iCAAiC,CAAA;;;;wBAA7C,QAAQ;wBACf,qBAAM,QAAQ,CAAC,OAAO,EAAE,EAAA;;wBAAxB,SAAwB,CAAC;;;;;;;;;;;;;;;;;6BAMzB,CAAA,wBAAwB,KAAK,IAAI,CAAA,EAAjC,yBAAiC;wBACjC,qBAAM,WAAW,CAAC,iBAAiB,EAAE,EAAA;;wBAArC,SAAqC,CAAC;;;;;6BAMtC,wBAAwB,EAAxB,yBAAwB;;;;wBAEpB,qBAAM,WAAW,CAAC,mBAAmB,EAAE,EAAA;;wBAAvC,SAAuC,CAAC;;;;;6BAGhD,MAAM,OAAK,CAAC;;;wBAIhB,WAAW,CAAC,IAAI,GAAG,kBAAkB,CAAC;6BAGlC,CAAC,IAAI,CAAC,WAAW,EAAjB,yBAAiB;wBACjB,qBAAM,WAAW,CAAC,OAAO,EAAE,EAAA;;wBAA3B,SAA2B,CAAC;;;;;;;KAEvC;IAEL,4BAAC;AAAD,CA/JA,AA+JC,IAAA;AA/JY,sDAAqB","file":"EntityPersistExecutor.js","sourcesContent":["import {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {SaveOptions} from \"../repository/SaveOptions\";\nimport {RemoveOptions} from \"../repository/RemoveOptions\";\nimport {MustBeEntityError} from \"../error/MustBeEntityError\";\nimport {SubjectExecutor} from \"./SubjectExecutor\";\nimport {CannotDetermineEntityError} from \"../error/CannotDetermineEntityError\";\nimport {QueryRunner} from \"../query-runner/QueryRunner\";\nimport {Connection} from \"../connection/Connection\";\nimport {Subject} from \"./Subject\";\nimport {OneToManySubjectBuilder} from \"./subject-builder/OneToManySubjectBuilder\";\nimport {OneToOneInverseSideSubjectBuilder} from \"./subject-builder/OneToOneInverseSideSubjectBuilder\";\nimport {ManyToManySubjectBuilder} from \"./subject-builder/ManyToManySubjectBuilder\";\nimport {SubjectDatabaseEntityLoader} from \"./SubjectDatabaseEntityLoader\";\nimport {CascadesSubjectBuilder} from \"./subject-builder/CascadesSubjectBuilder\";\nimport {OrmUtils} from \"../util/OrmUtils\";\n\n/**\n * Persists a single entity or multiple entities - saves or removes them.\n */\nexport class EntityPersistExecutor {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected connection: Connection,\n protected queryRunner: QueryRunner|undefined,\n protected mode: \"save\"|\"remove\"|\"soft-remove\"|\"recover\",\n protected target: Function|string|undefined,\n protected entity: ObjectLiteral|ObjectLiteral[],\n protected options?: SaveOptions & RemoveOptions) {\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Executes persistence operation ob given entity or entities.\n */\n async execute(): Promise<void> {\n\n // check if entity we are going to save is valid and is an object\n if (!this.entity || typeof this.entity !== \"object\")\n return Promise.reject(new MustBeEntityError(this.mode, this.entity));\n\n // we MUST call \"fake\" resolve here to make sure all properties of lazily loaded relations are resolved\n await Promise.resolve();\n\n // if query runner is already defined in this class, it means this entity manager was already created for a single connection\n // if its not defined we create a new query runner - single connection where we'll execute all our operations\n const queryRunner = this.queryRunner || this.connection.createQueryRunner();\n\n // save data in the query runner - this is useful functionality to share data from outside of the world\n // with third classes - like subscribers and listener methods\n let oldQueryRunnerData = queryRunner.data;\n if (this.options && this.options.data) {\n queryRunner.data = this.options.data;\n }\n\n try {\n\n // collect all operate subjects\n const entities: ObjectLiteral[] = Array.isArray(this.entity) ? this.entity : [this.entity];\n const entitiesInChunks = this.options && this.options.chunk && this.options.chunk > 0 ? OrmUtils.chunk(entities, this.options.chunk) : [entities];\n\n // console.time(\"building subject executors...\");\n const executors = await Promise.all(entitiesInChunks.map(async entities => {\n const subjects: Subject[] = [];\n\n // create subjects for all entities we received for the persistence\n entities.forEach(entity => {\n const entityTarget = this.target ? this.target : entity.constructor;\n if (entityTarget === Object)\n throw new CannotDetermineEntityError(this.mode);\n\n subjects.push(new Subject({\n metadata: this.connection.getMetadata(entityTarget),\n entity: entity,\n canBeInserted: this.mode === \"save\",\n canBeUpdated: this.mode === \"save\",\n mustBeRemoved: this.mode === \"remove\",\n canBeSoftRemoved: this.mode === \"soft-remove\",\n canBeRecovered: this.mode === \"recover\"\n }));\n });\n\n // console.time(\"building cascades...\");\n // go through each entity with metadata and create subjects and subjects by cascades for them\n const cascadesSubjectBuilder = new CascadesSubjectBuilder(subjects);\n subjects.forEach(subject => {\n // next step we build list of subjects we will operate with\n // these subjects are subjects that we need to insert or update alongside with main persisted entity\n cascadesSubjectBuilder.build(subject, this.mode);\n });\n // console.timeEnd(\"building cascades...\");\n\n // load database entities for all subjects we have\n // next step is to load database entities for all operate subjects\n // console.time(\"loading...\");\n await new SubjectDatabaseEntityLoader(queryRunner, subjects).load(this.mode);\n // console.timeEnd(\"loading...\");\n\n // console.time(\"other subjects...\");\n // build all related subjects and change maps\n if (this.mode === \"save\" || this.mode === \"soft-remove\" || this.mode === \"recover\") {\n new OneToManySubjectBuilder(subjects).build();\n new OneToOneInverseSideSubjectBuilder(subjects).build();\n new ManyToManySubjectBuilder(subjects).build();\n } else {\n subjects.forEach(subject => {\n if (subject.mustBeRemoved) {\n new ManyToManySubjectBuilder(subjects).buildForAllRemoval(subject);\n }\n });\n }\n // console.timeEnd(\"other subjects...\");\n // console.timeEnd(\"building subjects...\");\n // console.log(\"subjects\", subjects);\n\n // create a subject executor\n return new SubjectExecutor(queryRunner, subjects, this.options);\n }));\n // console.timeEnd(\"building subject executors...\");\n\n // make sure we have at least one executable operation before we create a transaction and proceed\n // if we don't have operations it means we don't really need to update or remove something\n const executorsWithExecutableOperations = executors.filter(executor => executor.hasExecutableOperations);\n if (executorsWithExecutableOperations.length === 0)\n return;\n\n // start execute queries in a transaction\n // if transaction is already opened in this query runner then we don't touch it\n // if its not opened yet then we open it here, and once we finish - we close it\n let isTransactionStartedByUs = false;\n try {\n\n // open transaction if its not opened yet\n if (!queryRunner.isTransactionActive) {\n if (!this.options || this.options.transaction !== false) { // start transaction until it was not explicitly disabled\n isTransactionStartedByUs = true;\n await queryRunner.startTransaction();\n }\n }\n\n // execute all persistence operations for all entities we have\n // console.time(\"executing subject executors...\");\n for (const executor of executorsWithExecutableOperations) {\n await executor.execute();\n }\n // console.timeEnd(\"executing subject executors...\");\n\n // commit transaction if it was started by us\n // console.time(\"commit\");\n if (isTransactionStartedByUs === true)\n await queryRunner.commitTransaction();\n // console.timeEnd(\"commit\");\n\n } catch (error) {\n\n // rollback transaction if it was started by us\n if (isTransactionStartedByUs) {\n try {\n await queryRunner.rollbackTransaction();\n } catch (rollbackError) { }\n }\n throw error;\n }\n\n } finally {\n queryRunner.data = oldQueryRunnerData;\n\n // release query runner only if its created by us\n if (!this.queryRunner)\n await queryRunner.release();\n }\n }\n\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/persistence/EntityPersistExecutor.ts"],"names":[],"mappings":"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","file":"EntityPersistExecutor.js","sourcesContent":["import {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {SaveOptions} from \"../repository/SaveOptions\";\nimport {RemoveOptions} from \"../repository/RemoveOptions\";\nimport {MustBeEntityError} from \"../error/MustBeEntityError\";\nimport {SubjectExecutor} from \"./SubjectExecutor\";\nimport {CannotDetermineEntityError} from \"../error/CannotDetermineEntityError\";\nimport {QueryRunner} from \"../query-runner/QueryRunner\";\nimport {Connection} from \"../connection/Connection\";\nimport {Subject} from \"./Subject\";\nimport {OneToManySubjectBuilder} from \"./subject-builder/OneToManySubjectBuilder\";\nimport {OneToOneInverseSideSubjectBuilder} from \"./subject-builder/OneToOneInverseSideSubjectBuilder\";\nimport {ManyToManySubjectBuilder} from \"./subject-builder/ManyToManySubjectBuilder\";\nimport {SubjectDatabaseEntityLoader} from \"./SubjectDatabaseEntityLoader\";\nimport {CascadesSubjectBuilder} from \"./subject-builder/CascadesSubjectBuilder\";\nimport {OrmUtils} from \"../util/OrmUtils\";\n\n/**\n * Persists a single entity or multiple entities - saves or removes them.\n */\nexport class EntityPersistExecutor {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected connection: Connection,\n protected queryRunner: QueryRunner|undefined,\n protected mode: \"save\"|\"remove\"|\"soft-remove\"|\"recover\",\n protected target: Function|string|undefined,\n protected entity: ObjectLiteral|ObjectLiteral[],\n protected options?: SaveOptions & RemoveOptions) {\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Executes persistence operation ob given entity or entities.\n */\n async execute(): Promise<void> {\n\n // check if entity we are going to save is valid and is an object\n if (!this.entity || typeof this.entity !== \"object\")\n return Promise.reject(new MustBeEntityError(this.mode, this.entity));\n\n // we MUST call \"fake\" resolve here to make sure all properties of lazily loaded relations are resolved\n await Promise.resolve();\n\n // if query runner is already defined in this class, it means this entity manager was already created for a single connection\n // if its not defined we create a new query runner - single connection where we'll execute all our operations\n const queryRunner = this.queryRunner || this.connection.createQueryRunner();\n\n // save data in the query runner - this is useful functionality to share data from outside of the world\n // with third classes - like subscribers and listener methods\n let oldQueryRunnerData = queryRunner.data;\n if (this.options && this.options.data) {\n queryRunner.data = this.options.data;\n }\n\n try {\n\n // collect all operate subjects\n const entities: ObjectLiteral[] = Array.isArray(this.entity) ? this.entity : [this.entity];\n const entitiesInChunks = this.options && this.options.chunk && this.options.chunk > 0 ? OrmUtils.chunk(entities, this.options.chunk) : [entities];\n\n // console.time(\"building subject executors...\");\n const executors = await Promise.all(entitiesInChunks.map(async entities => {\n const subjects: Subject[] = [];\n\n // create subjects for all entities we received for the persistence\n entities.forEach(entity => {\n const entityTarget = this.target ? this.target : entity.constructor;\n if (entityTarget === Object)\n throw new CannotDetermineEntityError(this.mode);\n\n subjects.push(new Subject({\n metadata: this.connection.getMetadata(entityTarget),\n entity: entity,\n canBeInserted: this.mode === \"save\",\n canBeUpdated: this.mode === \"save\",\n mustBeRemoved: this.mode === \"remove\",\n canBeSoftRemoved: this.mode === \"soft-remove\",\n canBeRecovered: this.mode === \"recover\"\n }));\n });\n\n // console.time(\"building cascades...\");\n // go through each entity with metadata and create subjects and subjects by cascades for them\n const cascadesSubjectBuilder = new CascadesSubjectBuilder(subjects);\n subjects.forEach(subject => {\n // next step we build list of subjects we will operate with\n // these subjects are subjects that we need to insert or update alongside with main persisted entity\n cascadesSubjectBuilder.build(subject, this.mode);\n });\n // console.timeEnd(\"building cascades...\");\n\n // load database entities for all subjects we have\n // next step is to load database entities for all operate subjects\n // console.time(\"loading...\");\n await new SubjectDatabaseEntityLoader(queryRunner, subjects).load(this.mode);\n // console.timeEnd(\"loading...\");\n\n // console.time(\"other subjects...\");\n // build all related subjects and change maps\n if (this.mode === \"save\" || this.mode === \"soft-remove\" || this.mode === \"recover\") {\n new OneToManySubjectBuilder(subjects).build();\n new OneToOneInverseSideSubjectBuilder(subjects).build();\n new ManyToManySubjectBuilder(subjects).build();\n } else {\n subjects.forEach(subject => {\n if (subject.mustBeRemoved) {\n new ManyToManySubjectBuilder(subjects).buildForAllRemoval(subject);\n }\n });\n }\n // console.timeEnd(\"other subjects...\");\n // console.timeEnd(\"building subjects...\");\n // console.log(\"subjects\", subjects);\n\n // create a subject executor\n return new SubjectExecutor(queryRunner, subjects, this.options);\n }));\n // console.timeEnd(\"building subject executors...\");\n\n // make sure we have at least one executable operation before we create a transaction and proceed\n // if we don't have operations it means we don't really need to update or remove something\n const executorsWithExecutableOperations = executors.filter(executor => executor.hasExecutableOperations);\n if (executorsWithExecutableOperations.length === 0)\n return;\n\n // start execute queries in a transaction\n // if transaction is already opened in this query runner then we don't touch it\n // if its not opened yet then we open it here, and once we finish - we close it\n let isTransactionStartedByUs = false;\n try {\n\n // open transaction if its not opened yet\n if (!queryRunner.isTransactionActive) {\n if (!this.options || this.options.transaction !== false) { // start transaction until it was not explicitly disabled\n isTransactionStartedByUs = true;\n await queryRunner.startTransaction();\n }\n }\n\n // execute all persistence operations for all entities we have\n // console.time(\"executing subject executors...\");\n for (const executor of executorsWithExecutableOperations) {\n await executor.execute();\n }\n // console.timeEnd(\"executing subject executors...\");\n\n // commit transaction if it was started by us\n // console.time(\"commit\");\n if (isTransactionStartedByUs === true)\n await queryRunner.commitTransaction();\n // console.timeEnd(\"commit\");\n\n } catch (error) {\n\n // rollback transaction if it was started by us\n if (isTransactionStartedByUs) {\n try {\n await queryRunner.rollbackTransaction();\n } catch (rollbackError) { }\n }\n throw error;\n }\n\n } finally {\n queryRunner.data = oldQueryRunnerData;\n\n // release query runner only if its created by us\n if (!this.queryRunner)\n await queryRunner.release();\n }\n }\n\n}\n"],"sourceRoot":".."}
@@ -92,7 +92,7 @@ var Subject = /** @class */ (function () {
92
92
  if (options.identifier !== undefined)
93
93
  this.identifier = options.identifier;
94
94
  if (options.changeMaps !== undefined)
95
- (_a = this.changeMaps).push.apply(_a, tslib_1.__spreadArray([], tslib_1.__read(options.changeMaps)));
95
+ (_a = this.changeMaps).push.apply(_a, (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(options.changeMaps), false));
96
96
  this.recompute();
97
97
  }
98
98
  Object.defineProperty(Subject.prototype, "mustBeInserted", {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/persistence/Subject.ts"],"names":[],"mappings":"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","file":"Subject.js","sourcesContent":["import {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {EntityMetadata} from \"../metadata/EntityMetadata\";\nimport {SubjectChangeMap} from \"./SubjectChangeMap\";\nimport {OrmUtils} from \"../util/OrmUtils\";\nimport {RelationMetadata} from \"../metadata/RelationMetadata\";\nimport {ColumnMetadata} from \"../metadata/ColumnMetadata\";\n\n/**\n * Subject is a subject of persistence.\n * It holds information about each entity that needs to be persisted:\n * - what entity should be persisted\n * - what is database representation of the persisted entity\n * - what entity metadata of the persisted entity\n * - what is allowed to with persisted entity (insert/update/remove)\n *\n * Having this collection of subjects we can perform database queries.\n */\nexport class Subject {\n\n // -------------------------------------------------------------------------\n // Properties\n // -------------------------------------------------------------------------\n\n /**\n * Entity metadata of the subject entity.\n */\n metadata: EntityMetadata;\n\n /**\n * Subject identifier.\n * This identifier is not limited to table entity primary columns.\n * This can be entity id or ids as well as some unique entity properties, like name or title.\n * Insert / Update / Remove operation will be executed by a given identifier.\n */\n identifier: ObjectLiteral|undefined = undefined;\n\n /**\n * Copy of entity but with relational ids fulfilled.\n */\n entityWithFulfilledIds: ObjectLiteral|undefined = undefined;\n\n /**\n * If subject was created by cascades this property will contain subject\n * from where this subject was created.\n */\n parentSubject?: Subject;\n\n /**\n * Gets entity sent to the persistence (e.g. changed entity).\n * If entity is not set then this subject is created only for the entity loaded from the database,\n * or this subject is used for the junction operation (junction operations are relying only on identifier).\n */\n entity?: ObjectLiteral;\n\n /**\n * Database entity.\n * THIS IS NOT RAW ENTITY DATA, its a real entity.\n */\n databaseEntity?: ObjectLiteral;\n\n /**\n * Indicates if database entity was loaded.\n * No matter if it was found or not, it indicates the fact of loading.\n */\n databaseEntityLoaded: boolean = false;\n\n /**\n * Changes needs to be applied in the database for the given subject.\n */\n changeMaps: SubjectChangeMap[] = [];\n\n /**\n * Generated values returned by a database (for example generated id or default values).\n * Used in insert and update operations.\n * Has entity-like structure (not just column database name and values).\n */\n generatedMap?: ObjectLiteral;\n\n /**\n * Inserted values with updated values of special and default columns.\n * Has entity-like structure (not just column database name and values).\n */\n insertedValueSet?: ObjectLiteral;\n\n /**\n * Indicates if this subject can be inserted into the database.\n * This means that this subject either is newly persisted, either can be inserted by cascades.\n */\n canBeInserted: boolean = false;\n\n /**\n * Indicates if this subject can be updated in the database.\n * This means that this subject either was persisted, either can be updated by cascades.\n */\n canBeUpdated: boolean = false;\n\n /**\n * Indicates if this subject MUST be removed from the database.\n * This means that this subject either was removed, either was removed by cascades.\n */\n mustBeRemoved: boolean = false;\n\n /**\n * Indicates if this subject can be soft-removed from the database.\n * This means that this subject either was soft-removed, either was soft-removed by cascades.\n */\n canBeSoftRemoved: boolean = false;\n\n /**\n * Indicates if this subject can be recovered from the database.\n * This means that this subject either was recovered, either was recovered by cascades.\n */\n canBeRecovered: boolean = false;\n\n /**\n * Relations updated by the change maps.\n */\n updatedRelationMaps: { relation: RelationMetadata, value: ObjectLiteral }[] = [];\n\n /**\n * List of updated columns\n */\n diffColumns: ColumnMetadata[] = [];\n\n /**\n * List of updated relations\n */\n diffRelations: RelationMetadata[] = [];\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(options: {\n metadata: EntityMetadata,\n parentSubject?: Subject,\n entity?: ObjectLiteral,\n canBeInserted?: boolean,\n canBeUpdated?: boolean,\n mustBeRemoved?: boolean,\n canBeSoftRemoved?: boolean,\n canBeRecovered?: boolean,\n identifier?: ObjectLiteral,\n changeMaps?: SubjectChangeMap[]\n }) {\n this.metadata = options.metadata;\n this.entity = options.entity;\n this.parentSubject = options.parentSubject;\n if (options.canBeInserted !== undefined)\n this.canBeInserted = options.canBeInserted;\n if (options.canBeUpdated !== undefined)\n this.canBeUpdated = options.canBeUpdated;\n if (options.mustBeRemoved !== undefined)\n this.mustBeRemoved = options.mustBeRemoved;\n if (options.canBeSoftRemoved !== undefined)\n this.canBeSoftRemoved = options.canBeSoftRemoved;\n if (options.canBeRecovered !== undefined)\n this.canBeRecovered = options.canBeRecovered;\n if (options.identifier !== undefined)\n this.identifier = options.identifier;\n if (options.changeMaps !== undefined)\n this.changeMaps.push(...options.changeMaps);\n\n this.recompute();\n }\n\n // -------------------------------------------------------------------------\n // Accessors\n // -------------------------------------------------------------------------\n\n /**\n * Checks if this subject must be inserted into the database.\n * Subject can be inserted into the database if it is allowed to be inserted (explicitly persisted or by cascades)\n * and if it does not have database entity set.\n */\n get mustBeInserted() {\n return this.canBeInserted && !this.databaseEntity;\n }\n\n /**\n * Checks if this subject must be updated into the database.\n * Subject can be updated in the database if it is allowed to be updated (explicitly persisted or by cascades)\n * and if it does have differentiated columns or relations.\n */\n get mustBeUpdated() {\n return this.canBeUpdated &&\n this.identifier &&\n (this.databaseEntityLoaded === false || (this.databaseEntityLoaded && this.databaseEntity)) &&\n // ((this.entity && this.databaseEntity) || (!this.entity && !this.databaseEntity)) &&\n this.changeMaps.length > 0;\n }\n\n /**\n * Checks if this subject must be soft-removed into the database.\n * Subject can be updated in the database if it is allowed to be soft-removed (explicitly persisted or by cascades)\n * and if it does have differentiated columns or relations.\n */\n get mustBeSoftRemoved() {\n return this.canBeSoftRemoved &&\n this.identifier &&\n (this.databaseEntityLoaded === false || (this.databaseEntityLoaded && this.databaseEntity));\n }\n\n /**\n * Checks if this subject must be recovered into the database.\n * Subject can be updated in the database if it is allowed to be recovered (explicitly persisted or by cascades)\n * and if it does have differentiated columns or relations.\n */\n get mustBeRecovered() {\n return this.canBeRecovered &&\n this.identifier &&\n (this.databaseEntityLoaded === false || (this.databaseEntityLoaded && this.databaseEntity));\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates a value set needs to be inserted / updated in the database.\n * Value set is based on the entity and change maps of the subject.\n * Important note: this method pops data from this subject's change maps.\n */\n createValueSetAndPopChangeMap(): ObjectLiteral {\n const changeMapsWithoutValues: SubjectChangeMap[] = [];\n const changeSet = this.changeMaps.reduce((updateMap, changeMap) => {\n let value = changeMap.value;\n if (value instanceof Subject) {\n\n // referenced columns can refer on values both which were just inserted and which were present in the model\n // if entity was just inserted valueSets must contain all values from the entity and values just inserted in the database\n // so, here we check if we have a value set then we simply use it as value to get our reference column values\n // otherwise simply use an entity which cannot be just inserted at the moment and have all necessary data\n value = value.insertedValueSet ? value.insertedValueSet : value.entity;\n }\n // value = changeMap.valueFactory ? changeMap.valueFactory(value) : changeMap.column.createValueMap(value);\n\n let valueMap: ObjectLiteral|undefined;\n if (this.metadata.isJunction && changeMap.column) {\n valueMap = changeMap.column.createValueMap(changeMap.column.referencedColumn!.getEntityValue(value));\n\n } else if (changeMap.column) {\n valueMap = changeMap.column.createValueMap(value);\n\n } else if (changeMap.relation) {\n\n // value can be a related object, for example: post.question = { id: 1 }\n // or value can be a null or direct relation id, e.g. post.question = 1\n // if its a direction relation id then we just set it to the valueMap,\n // however if its an object then we need to extract its relation id map and set it to the valueMap\n if (value instanceof Object && !(value instanceof Buffer)) {\n\n // get relation id, e.g. referenced column name and its value,\n // for example: { id: 1 } which then will be set to relation, e.g. post.category = { id: 1 }\n const relationId = changeMap.relation!.getRelationIdMap(value);\n\n // but relation id can be empty, for example in the case when you insert a new post with category\n // and both post and category are newly inserted objects (by cascades) and in this case category will not have id\n // this means we need to insert post without question id and update post's questionId once question be inserted\n // that's why we create a new changeMap operation for future updation of the post entity\n if (relationId === undefined) {\n changeMapsWithoutValues.push(changeMap);\n this.canBeUpdated = true;\n return updateMap;\n }\n valueMap = changeMap.relation!.createValueMap(relationId);\n this.updatedRelationMaps.push({ relation: changeMap.relation, value: relationId });\n\n } else { // value can be \"null\" or direct relation id here\n valueMap = changeMap.relation!.createValueMap(value);\n this.updatedRelationMaps.push({ relation: changeMap.relation, value: value });\n }\n }\n\n OrmUtils.mergeDeep(updateMap, valueMap);\n return updateMap;\n }, {} as ObjectLiteral);\n this.changeMaps = changeMapsWithoutValues;\n return changeSet;\n }\n\n /**\n * Recomputes entityWithFulfilledIds and identifier when entity changes.\n */\n recompute(): void {\n\n if (this.entity) {\n this.entityWithFulfilledIds = Object.assign({}, this.entity);\n if (this.parentSubject) {\n this.metadata.primaryColumns.forEach(primaryColumn => {\n if (primaryColumn.relationMetadata && primaryColumn.relationMetadata.inverseEntityMetadata === this.parentSubject!.metadata) {\n const value = primaryColumn.referencedColumn!.getEntityValue(this.parentSubject!.entity!);\n primaryColumn.setEntityValue(this.entityWithFulfilledIds!, value);\n }\n });\n }\n this.identifier = this.metadata.getEntityIdMap(this.entityWithFulfilledIds);\n\n } else if (this.databaseEntity) {\n this.identifier = this.metadata.getEntityIdMap(this.databaseEntity);\n }\n }\n\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/persistence/Subject.ts"],"names":[],"mappings":"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","file":"Subject.js","sourcesContent":["import {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {EntityMetadata} from \"../metadata/EntityMetadata\";\nimport {SubjectChangeMap} from \"./SubjectChangeMap\";\nimport {OrmUtils} from \"../util/OrmUtils\";\nimport {RelationMetadata} from \"../metadata/RelationMetadata\";\nimport {ColumnMetadata} from \"../metadata/ColumnMetadata\";\n\n/**\n * Subject is a subject of persistence.\n * It holds information about each entity that needs to be persisted:\n * - what entity should be persisted\n * - what is database representation of the persisted entity\n * - what entity metadata of the persisted entity\n * - what is allowed to with persisted entity (insert/update/remove)\n *\n * Having this collection of subjects we can perform database queries.\n */\nexport class Subject {\n\n // -------------------------------------------------------------------------\n // Properties\n // -------------------------------------------------------------------------\n\n /**\n * Entity metadata of the subject entity.\n */\n metadata: EntityMetadata;\n\n /**\n * Subject identifier.\n * This identifier is not limited to table entity primary columns.\n * This can be entity id or ids as well as some unique entity properties, like name or title.\n * Insert / Update / Remove operation will be executed by a given identifier.\n */\n identifier: ObjectLiteral|undefined = undefined;\n\n /**\n * Copy of entity but with relational ids fulfilled.\n */\n entityWithFulfilledIds: ObjectLiteral|undefined = undefined;\n\n /**\n * If subject was created by cascades this property will contain subject\n * from where this subject was created.\n */\n parentSubject?: Subject;\n\n /**\n * Gets entity sent to the persistence (e.g. changed entity).\n * If entity is not set then this subject is created only for the entity loaded from the database,\n * or this subject is used for the junction operation (junction operations are relying only on identifier).\n */\n entity?: ObjectLiteral;\n\n /**\n * Database entity.\n * THIS IS NOT RAW ENTITY DATA, its a real entity.\n */\n databaseEntity?: ObjectLiteral;\n\n /**\n * Indicates if database entity was loaded.\n * No matter if it was found or not, it indicates the fact of loading.\n */\n databaseEntityLoaded: boolean = false;\n\n /**\n * Changes needs to be applied in the database for the given subject.\n */\n changeMaps: SubjectChangeMap[] = [];\n\n /**\n * Generated values returned by a database (for example generated id or default values).\n * Used in insert and update operations.\n * Has entity-like structure (not just column database name and values).\n */\n generatedMap?: ObjectLiteral;\n\n /**\n * Inserted values with updated values of special and default columns.\n * Has entity-like structure (not just column database name and values).\n */\n insertedValueSet?: ObjectLiteral;\n\n /**\n * Indicates if this subject can be inserted into the database.\n * This means that this subject either is newly persisted, either can be inserted by cascades.\n */\n canBeInserted: boolean = false;\n\n /**\n * Indicates if this subject can be updated in the database.\n * This means that this subject either was persisted, either can be updated by cascades.\n */\n canBeUpdated: boolean = false;\n\n /**\n * Indicates if this subject MUST be removed from the database.\n * This means that this subject either was removed, either was removed by cascades.\n */\n mustBeRemoved: boolean = false;\n\n /**\n * Indicates if this subject can be soft-removed from the database.\n * This means that this subject either was soft-removed, either was soft-removed by cascades.\n */\n canBeSoftRemoved: boolean = false;\n\n /**\n * Indicates if this subject can be recovered from the database.\n * This means that this subject either was recovered, either was recovered by cascades.\n */\n canBeRecovered: boolean = false;\n\n /**\n * Relations updated by the change maps.\n */\n updatedRelationMaps: { relation: RelationMetadata, value: ObjectLiteral }[] = [];\n\n /**\n * List of updated columns\n */\n diffColumns: ColumnMetadata[] = [];\n\n /**\n * List of updated relations\n */\n diffRelations: RelationMetadata[] = [];\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(options: {\n metadata: EntityMetadata,\n parentSubject?: Subject,\n entity?: ObjectLiteral,\n canBeInserted?: boolean,\n canBeUpdated?: boolean,\n mustBeRemoved?: boolean,\n canBeSoftRemoved?: boolean,\n canBeRecovered?: boolean,\n identifier?: ObjectLiteral,\n changeMaps?: SubjectChangeMap[]\n }) {\n this.metadata = options.metadata;\n this.entity = options.entity;\n this.parentSubject = options.parentSubject;\n if (options.canBeInserted !== undefined)\n this.canBeInserted = options.canBeInserted;\n if (options.canBeUpdated !== undefined)\n this.canBeUpdated = options.canBeUpdated;\n if (options.mustBeRemoved !== undefined)\n this.mustBeRemoved = options.mustBeRemoved;\n if (options.canBeSoftRemoved !== undefined)\n this.canBeSoftRemoved = options.canBeSoftRemoved;\n if (options.canBeRecovered !== undefined)\n this.canBeRecovered = options.canBeRecovered;\n if (options.identifier !== undefined)\n this.identifier = options.identifier;\n if (options.changeMaps !== undefined)\n this.changeMaps.push(...options.changeMaps);\n\n this.recompute();\n }\n\n // -------------------------------------------------------------------------\n // Accessors\n // -------------------------------------------------------------------------\n\n /**\n * Checks if this subject must be inserted into the database.\n * Subject can be inserted into the database if it is allowed to be inserted (explicitly persisted or by cascades)\n * and if it does not have database entity set.\n */\n get mustBeInserted() {\n return this.canBeInserted && !this.databaseEntity;\n }\n\n /**\n * Checks if this subject must be updated into the database.\n * Subject can be updated in the database if it is allowed to be updated (explicitly persisted or by cascades)\n * and if it does have differentiated columns or relations.\n */\n get mustBeUpdated() {\n return this.canBeUpdated &&\n this.identifier &&\n (this.databaseEntityLoaded === false || (this.databaseEntityLoaded && this.databaseEntity)) &&\n // ((this.entity && this.databaseEntity) || (!this.entity && !this.databaseEntity)) &&\n this.changeMaps.length > 0;\n }\n\n /**\n * Checks if this subject must be soft-removed into the database.\n * Subject can be updated in the database if it is allowed to be soft-removed (explicitly persisted or by cascades)\n * and if it does have differentiated columns or relations.\n */\n get mustBeSoftRemoved() {\n return this.canBeSoftRemoved &&\n this.identifier &&\n (this.databaseEntityLoaded === false || (this.databaseEntityLoaded && this.databaseEntity));\n }\n\n /**\n * Checks if this subject must be recovered into the database.\n * Subject can be updated in the database if it is allowed to be recovered (explicitly persisted or by cascades)\n * and if it does have differentiated columns or relations.\n */\n get mustBeRecovered() {\n return this.canBeRecovered &&\n this.identifier &&\n (this.databaseEntityLoaded === false || (this.databaseEntityLoaded && this.databaseEntity));\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates a value set needs to be inserted / updated in the database.\n * Value set is based on the entity and change maps of the subject.\n * Important note: this method pops data from this subject's change maps.\n */\n createValueSetAndPopChangeMap(): ObjectLiteral {\n const changeMapsWithoutValues: SubjectChangeMap[] = [];\n const changeSet = this.changeMaps.reduce((updateMap, changeMap) => {\n let value = changeMap.value;\n if (value instanceof Subject) {\n\n // referenced columns can refer on values both which were just inserted and which were present in the model\n // if entity was just inserted valueSets must contain all values from the entity and values just inserted in the database\n // so, here we check if we have a value set then we simply use it as value to get our reference column values\n // otherwise simply use an entity which cannot be just inserted at the moment and have all necessary data\n value = value.insertedValueSet ? value.insertedValueSet : value.entity;\n }\n // value = changeMap.valueFactory ? changeMap.valueFactory(value) : changeMap.column.createValueMap(value);\n\n let valueMap: ObjectLiteral|undefined;\n if (this.metadata.isJunction && changeMap.column) {\n valueMap = changeMap.column.createValueMap(changeMap.column.referencedColumn!.getEntityValue(value));\n\n } else if (changeMap.column) {\n valueMap = changeMap.column.createValueMap(value);\n\n } else if (changeMap.relation) {\n\n // value can be a related object, for example: post.question = { id: 1 }\n // or value can be a null or direct relation id, e.g. post.question = 1\n // if its a direction relation id then we just set it to the valueMap,\n // however if its an object then we need to extract its relation id map and set it to the valueMap\n if (value instanceof Object && !(value instanceof Buffer)) {\n\n // get relation id, e.g. referenced column name and its value,\n // for example: { id: 1 } which then will be set to relation, e.g. post.category = { id: 1 }\n const relationId = changeMap.relation!.getRelationIdMap(value);\n\n // but relation id can be empty, for example in the case when you insert a new post with category\n // and both post and category are newly inserted objects (by cascades) and in this case category will not have id\n // this means we need to insert post without question id and update post's questionId once question be inserted\n // that's why we create a new changeMap operation for future updation of the post entity\n if (relationId === undefined) {\n changeMapsWithoutValues.push(changeMap);\n this.canBeUpdated = true;\n return updateMap;\n }\n valueMap = changeMap.relation!.createValueMap(relationId);\n this.updatedRelationMaps.push({ relation: changeMap.relation, value: relationId });\n\n } else { // value can be \"null\" or direct relation id here\n valueMap = changeMap.relation!.createValueMap(value);\n this.updatedRelationMaps.push({ relation: changeMap.relation, value: value });\n }\n }\n\n OrmUtils.mergeDeep(updateMap, valueMap);\n return updateMap;\n }, {} as ObjectLiteral);\n this.changeMaps = changeMapsWithoutValues;\n return changeSet;\n }\n\n /**\n * Recomputes entityWithFulfilledIds and identifier when entity changes.\n */\n recompute(): void {\n\n if (this.entity) {\n this.entityWithFulfilledIds = Object.assign({}, this.entity);\n if (this.parentSubject) {\n this.metadata.primaryColumns.forEach(primaryColumn => {\n if (primaryColumn.relationMetadata && primaryColumn.relationMetadata.inverseEntityMetadata === this.parentSubject!.metadata) {\n const value = primaryColumn.referencedColumn!.getEntityValue(this.parentSubject!.entity!);\n primaryColumn.setEntityValue(this.entityWithFulfilledIds!, value);\n }\n });\n }\n this.identifier = this.metadata.getEntityIdMap(this.entityWithFulfilledIds);\n\n } else if (this.databaseEntity) {\n this.identifier = this.metadata.getEntityIdMap(this.databaseEntity);\n }\n }\n\n}\n"],"sourceRoot":".."}
@@ -26,17 +26,17 @@ var SubjectDatabaseEntityLoader = /** @class */ (function () {
26
26
  * This option is used for deletion.
27
27
  */
28
28
  SubjectDatabaseEntityLoader.prototype.load = function (operationType) {
29
- return tslib_1.__awaiter(this, void 0, void 0, function () {
29
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
30
30
  var promises;
31
31
  var _this = this;
32
- return tslib_1.__generator(this, function (_a) {
32
+ return (0, tslib_1.__generator)(this, function (_a) {
33
33
  switch (_a.label) {
34
34
  case 0:
35
- promises = this.groupByEntityTargets().map(function (subjectGroup) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
35
+ promises = this.groupByEntityTargets().map(function (subjectGroup) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () {
36
36
  var allIds, allSubjects, loadRelationPropertyPaths, findOptions, entities, allSubjects_1, allSubjects_1_1, subject;
37
37
  var e_1, _a;
38
38
  var _this = this;
39
- return tslib_1.__generator(this, function (_b) {
39
+ return (0, tslib_1.__generator)(this, function (_b) {
40
40
  switch (_b.label) {
41
41
  case 0:
42
42
  allIds = [];
@@ -73,7 +73,7 @@ var SubjectDatabaseEntityLoader = /** @class */ (function () {
73
73
  // for remove operation
74
74
  // we only need to load junction relation ids since only they are removed by cascades
75
75
  loadRelationPropertyPaths.push.apply(// remove
76
- loadRelationPropertyPaths, tslib_1.__spreadArray([], tslib_1.__read(subjectGroup.subjects[0].metadata.manyToManyRelations.map(function (relation) { return relation.propertyPath; }))));
76
+ loadRelationPropertyPaths, (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(subjectGroup.subjects[0].metadata.manyToManyRelations.map(function (relation) { return relation.propertyPath; })), false));
77
77
  }
78
78
  findOptions = {
79
79
  loadEagerRelations: false,
@@ -101,7 +101,7 @@ var SubjectDatabaseEntityLoader = /** @class */ (function () {
101
101
  });
102
102
  try {
103
103
  // this way we tell what subjects we tried to load database entities of
104
- for (allSubjects_1 = tslib_1.__values(allSubjects), allSubjects_1_1 = allSubjects_1.next(); !allSubjects_1_1.done; allSubjects_1_1 = allSubjects_1.next()) {
104
+ for (allSubjects_1 = (0, tslib_1.__values)(allSubjects), allSubjects_1_1 = allSubjects_1.next(); !allSubjects_1_1.done; allSubjects_1_1 = allSubjects_1.next()) {
105
105
  subject = allSubjects_1_1.value;
106
106
  subject.databaseEntityLoaded = true;
107
107
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/persistence/SubjectDatabaseEntityLoader.ts"],"names":[],"mappings":"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","file":"SubjectDatabaseEntityLoader.js","sourcesContent":["import {Subject} from \"./Subject\";\nimport {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {QueryRunner} from \"../query-runner/QueryRunner\";\nimport {FindManyOptions} from \"../find-options/FindManyOptions\";\n\n/**\n * Loads database entities for all operate subjects which do not have database entity set.\n * All entities that we load database entities for are marked as updated or inserted.\n * To understand which of them really needs to be inserted or updated we need to load\n * their original representations from the database.\n */\nexport class SubjectDatabaseEntityLoader {\n\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n\n constructor(protected queryRunner: QueryRunner,\n protected subjects: Subject[]) {\n }\n\n // ---------------------------------------------------------------------\n // Public Methods\n // ---------------------------------------------------------------------\n\n /**\n * Loads database entities for all subjects.\n *\n * loadAllRelations flag is used to load all relation ids of the object, no matter if they present in subject entity or not.\n * This option is used for deletion.\n */\n async load(operationType: \"save\"|\"remove\"|\"soft-remove\"|\"recover\"): Promise<void> {\n\n // we are grouping subjects by target to perform more optimized queries using WHERE IN operator\n // go through the groups and perform loading of database entities of each subject in the group\n const promises = this.groupByEntityTargets().map(async subjectGroup => {\n\n // prepare entity ids of the subjects we need to load\n const allIds: ObjectLiteral[] = [];\n const allSubjects: Subject[] = [];\n subjectGroup.subjects.forEach(subject => {\n\n // we don't load if subject already has a database entity loaded\n if (subject.databaseEntity || !subject.identifier)\n return;\n\n allIds.push(subject.identifier);\n allSubjects.push(subject);\n });\n\n // if there no ids found (means all entities are new and have generated ids) - then nothing to load there\n if (!allIds.length)\n return;\n\n const loadRelationPropertyPaths: string[] = [];\n\n // for the save, soft-remove and recover operation\n // extract all property paths of the relations we need to load relation ids for\n // this is for optimization purpose - this way we don't load relation ids for entities\n // whose relations are undefined, and since they are undefined its really pointless to\n // load something for them, since undefined properties are skipped by the orm\n if (operationType === \"save\" || operationType === \"soft-remove\" || operationType === \"recover\") {\n subjectGroup.subjects.forEach(subject => {\n\n // gets all relation property paths that exist in the persisted entity.\n subject.metadata.relations.forEach(relation => {\n const value = relation.getEntityValue(subject.entityWithFulfilledIds!);\n if (value === undefined)\n return;\n\n if (loadRelationPropertyPaths.indexOf(relation.propertyPath) === -1)\n loadRelationPropertyPaths.push(relation.propertyPath);\n });\n });\n } else { // remove\n\n // for remove operation\n // we only need to load junction relation ids since only they are removed by cascades\n loadRelationPropertyPaths.push(...subjectGroup.subjects[0].metadata.manyToManyRelations.map(relation => relation.propertyPath));\n }\n\n const findOptions: FindManyOptions<any> = {\n loadEagerRelations: false,\n loadRelationIds: {\n relations: loadRelationPropertyPaths,\n disableMixedMap: true\n },\n // the soft-deleted entities should be included in the loaded entities for recover operation\n withDeleted: true\n };\n\n // load database entities for all given ids\n const entities = await this.queryRunner.manager\n .getRepository<ObjectLiteral>(subjectGroup.target)\n .findByIds(allIds, findOptions);\n\n // now when we have entities we need to find subject of each entity\n // and insert that entity into database entity of the found subjects\n entities.forEach(entity => {\n const subjects = this.findByPersistEntityLike(subjectGroup.target, entity);\n subjects.forEach(subject => {\n subject.databaseEntity = entity;\n if (!subject.identifier)\n subject.identifier = subject.metadata.hasAllPrimaryKeys(entity) ? subject.metadata.getEntityIdMap(entity) : undefined;\n });\n });\n\n // this way we tell what subjects we tried to load database entities of\n for (let subject of allSubjects) {\n subject.databaseEntityLoaded = true;\n }\n });\n\n await Promise.all(promises);\n }\n\n // ---------------------------------------------------------------------\n // Protected Methods\n // ---------------------------------------------------------------------\n\n /**\n * Finds subjects where entity like given subject's entity.\n * Comparision made by entity id.\n * Multiple subjects may be returned if duplicates are present in the subject array.\n * This will likely result in the same row being updated multiple times during a transaction.\n */\n protected findByPersistEntityLike(entityTarget: Function|string, entity: ObjectLiteral): Subject[] {\n return this.subjects.filter(subject => {\n if (!subject.entity)\n return false;\n\n if (subject.entity === entity)\n return true;\n\n return subject.metadata.target === entityTarget && subject.metadata.compareEntities(subject.entityWithFulfilledIds!, entity);\n });\n }\n\n /**\n * Groups given Subject objects into groups separated by entity targets.\n */\n protected groupByEntityTargets(): { target: Function|string, subjects: Subject[] }[] {\n return this.subjects.reduce((groups, operatedEntity) => {\n let group = groups.find(group => group.target === operatedEntity.metadata.target);\n if (!group) {\n group = { target: operatedEntity.metadata.target, subjects: [] };\n groups.push(group);\n }\n group.subjects.push(operatedEntity);\n return groups;\n }, [] as { target: Function|string, subjects: Subject[] }[]);\n }\n\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/persistence/SubjectDatabaseEntityLoader.ts"],"names":[],"mappings":"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","file":"SubjectDatabaseEntityLoader.js","sourcesContent":["import {Subject} from \"./Subject\";\nimport {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {QueryRunner} from \"../query-runner/QueryRunner\";\nimport {FindManyOptions} from \"../find-options/FindManyOptions\";\n\n/**\n * Loads database entities for all operate subjects which do not have database entity set.\n * All entities that we load database entities for are marked as updated or inserted.\n * To understand which of them really needs to be inserted or updated we need to load\n * their original representations from the database.\n */\nexport class SubjectDatabaseEntityLoader {\n\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n\n constructor(protected queryRunner: QueryRunner,\n protected subjects: Subject[]) {\n }\n\n // ---------------------------------------------------------------------\n // Public Methods\n // ---------------------------------------------------------------------\n\n /**\n * Loads database entities for all subjects.\n *\n * loadAllRelations flag is used to load all relation ids of the object, no matter if they present in subject entity or not.\n * This option is used for deletion.\n */\n async load(operationType: \"save\"|\"remove\"|\"soft-remove\"|\"recover\"): Promise<void> {\n\n // we are grouping subjects by target to perform more optimized queries using WHERE IN operator\n // go through the groups and perform loading of database entities of each subject in the group\n const promises = this.groupByEntityTargets().map(async subjectGroup => {\n\n // prepare entity ids of the subjects we need to load\n const allIds: ObjectLiteral[] = [];\n const allSubjects: Subject[] = [];\n subjectGroup.subjects.forEach(subject => {\n\n // we don't load if subject already has a database entity loaded\n if (subject.databaseEntity || !subject.identifier)\n return;\n\n allIds.push(subject.identifier);\n allSubjects.push(subject);\n });\n\n // if there no ids found (means all entities are new and have generated ids) - then nothing to load there\n if (!allIds.length)\n return;\n\n const loadRelationPropertyPaths: string[] = [];\n\n // for the save, soft-remove and recover operation\n // extract all property paths of the relations we need to load relation ids for\n // this is for optimization purpose - this way we don't load relation ids for entities\n // whose relations are undefined, and since they are undefined its really pointless to\n // load something for them, since undefined properties are skipped by the orm\n if (operationType === \"save\" || operationType === \"soft-remove\" || operationType === \"recover\") {\n subjectGroup.subjects.forEach(subject => {\n\n // gets all relation property paths that exist in the persisted entity.\n subject.metadata.relations.forEach(relation => {\n const value = relation.getEntityValue(subject.entityWithFulfilledIds!);\n if (value === undefined)\n return;\n\n if (loadRelationPropertyPaths.indexOf(relation.propertyPath) === -1)\n loadRelationPropertyPaths.push(relation.propertyPath);\n });\n });\n } else { // remove\n\n // for remove operation\n // we only need to load junction relation ids since only they are removed by cascades\n loadRelationPropertyPaths.push(...subjectGroup.subjects[0].metadata.manyToManyRelations.map(relation => relation.propertyPath));\n }\n\n const findOptions: FindManyOptions<any> = {\n loadEagerRelations: false,\n loadRelationIds: {\n relations: loadRelationPropertyPaths,\n disableMixedMap: true\n },\n // the soft-deleted entities should be included in the loaded entities for recover operation\n withDeleted: true\n };\n\n // load database entities for all given ids\n const entities = await this.queryRunner.manager\n .getRepository<ObjectLiteral>(subjectGroup.target)\n .findByIds(allIds, findOptions);\n\n // now when we have entities we need to find subject of each entity\n // and insert that entity into database entity of the found subjects\n entities.forEach(entity => {\n const subjects = this.findByPersistEntityLike(subjectGroup.target, entity);\n subjects.forEach(subject => {\n subject.databaseEntity = entity;\n if (!subject.identifier)\n subject.identifier = subject.metadata.hasAllPrimaryKeys(entity) ? subject.metadata.getEntityIdMap(entity) : undefined;\n });\n });\n\n // this way we tell what subjects we tried to load database entities of\n for (let subject of allSubjects) {\n subject.databaseEntityLoaded = true;\n }\n });\n\n await Promise.all(promises);\n }\n\n // ---------------------------------------------------------------------\n // Protected Methods\n // ---------------------------------------------------------------------\n\n /**\n * Finds subjects where entity like given subject's entity.\n * Comparision made by entity id.\n * Multiple subjects may be returned if duplicates are present in the subject array.\n * This will likely result in the same row being updated multiple times during a transaction.\n */\n protected findByPersistEntityLike(entityTarget: Function|string, entity: ObjectLiteral): Subject[] {\n return this.subjects.filter(subject => {\n if (!subject.entity)\n return false;\n\n if (subject.entity === entity)\n return true;\n\n return subject.metadata.target === entityTarget && subject.metadata.compareEntities(subject.entityWithFulfilledIds!, entity);\n });\n }\n\n /**\n * Groups given Subject objects into groups separated by entity targets.\n */\n protected groupByEntityTargets(): { target: Function|string, subjects: Subject[] }[] {\n return this.subjects.reduce((groups, operatedEntity) => {\n let group = groups.find(group => group.target === operatedEntity.metadata.target);\n if (!group) {\n group = { target: operatedEntity.metadata.target, subjects: [] };\n groups.push(group);\n }\n group.subjects.push(operatedEntity);\n return groups;\n }, [] as { target: Function|string, subjects: Subject[] }[]);\n }\n\n}\n"],"sourceRoot":".."}
@@ -65,9 +65,9 @@ var SubjectExecutor = /** @class */ (function () {
65
65
  * Executes queries using given query runner.
66
66
  */
67
67
  SubjectExecutor.prototype.execute = function () {
68
- return tslib_1.__awaiter(this, void 0, void 0, function () {
68
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
69
69
  var broadcasterResult;
70
- return tslib_1.__generator(this, function (_a) {
70
+ return (0, tslib_1.__generator)(this, function (_a) {
71
71
  switch (_a.label) {
72
72
  case 0:
73
73
  broadcasterResult = undefined;
@@ -219,18 +219,18 @@ var SubjectExecutor = /** @class */ (function () {
219
219
  * Executes insert operations.
220
220
  */
221
221
  SubjectExecutor.prototype.executeInsertOperations = function () {
222
- return tslib_1.__awaiter(this, void 0, void 0, function () {
222
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
223
223
  var _a, groupedInsertSubjects, groupedInsertSubjectKeys, _loop_1, this_1, groupedInsertSubjectKeys_1, groupedInsertSubjectKeys_1_1, groupName, e_1_1;
224
224
  var e_1, _b;
225
225
  var _this = this;
226
- return tslib_1.__generator(this, function (_c) {
226
+ return (0, tslib_1.__generator)(this, function (_c) {
227
227
  switch (_c.label) {
228
228
  case 0:
229
- _a = tslib_1.__read(this.groupBulkSubjects(this.insertSubjects, "insert"), 2), groupedInsertSubjects = _a[0], groupedInsertSubjectKeys = _a[1];
229
+ _a = (0, tslib_1.__read)(this.groupBulkSubjects(this.insertSubjects, "insert"), 2), groupedInsertSubjects = _a[0], groupedInsertSubjectKeys = _a[1];
230
230
  _loop_1 = function (groupName) {
231
231
  var subjects, bulkInsertMaps, bulkInsertSubjects, singleInsertSubjects, manager, insertResult_1, insertResult_2, _loop_2, singleInsertSubjects_1, singleInsertSubjects_1_1, subject, e_2_1;
232
232
  var e_2, _d;
233
- return tslib_1.__generator(this, function (_e) {
233
+ return (0, tslib_1.__generator)(this, function (_e) {
234
234
  switch (_e.label) {
235
235
  case 0:
236
236
  subjects = groupedInsertSubjects[groupName];
@@ -306,7 +306,7 @@ var SubjectExecutor = /** @class */ (function () {
306
306
  case 4:
307
307
  if (!(singleInsertSubjects.length > 0)) return [3 /*break*/, 12];
308
308
  _loop_2 = function (subject) {
309
- return tslib_1.__generator(this, function (_f) {
309
+ return (0, tslib_1.__generator)(this, function (_f) {
310
310
  switch (_f.label) {
311
311
  case 0:
312
312
  subject.insertedValueSet = subject.createValueSetAndPopChangeMap(); // important to have because query builder sets inserted values into it
@@ -348,7 +348,7 @@ var SubjectExecutor = /** @class */ (function () {
348
348
  _e.label = 5;
349
349
  case 5:
350
350
  _e.trys.push([5, 10, 11, 12]);
351
- singleInsertSubjects_1 = (e_2 = void 0, tslib_1.__values(singleInsertSubjects)), singleInsertSubjects_1_1 = singleInsertSubjects_1.next();
351
+ singleInsertSubjects_1 = (e_2 = void 0, (0, tslib_1.__values)(singleInsertSubjects)), singleInsertSubjects_1_1 = singleInsertSubjects_1.next();
352
352
  _e.label = 6;
353
353
  case 6:
354
354
  if (!!singleInsertSubjects_1_1.done) return [3 /*break*/, 9];
@@ -391,7 +391,7 @@ var SubjectExecutor = /** @class */ (function () {
391
391
  _c.label = 1;
392
392
  case 1:
393
393
  _c.trys.push([1, 6, 7, 8]);
394
- groupedInsertSubjectKeys_1 = tslib_1.__values(groupedInsertSubjectKeys), groupedInsertSubjectKeys_1_1 = groupedInsertSubjectKeys_1.next();
394
+ groupedInsertSubjectKeys_1 = (0, tslib_1.__values)(groupedInsertSubjectKeys), groupedInsertSubjectKeys_1_1 = groupedInsertSubjectKeys_1.next();
395
395
  _c.label = 2;
396
396
  case 2:
397
397
  if (!!groupedInsertSubjectKeys_1_1.done) return [3 /*break*/, 5];
@@ -423,17 +423,17 @@ var SubjectExecutor = /** @class */ (function () {
423
423
  * Updates all given subjects in the database.
424
424
  */
425
425
  SubjectExecutor.prototype.executeUpdateOperations = function () {
426
- return tslib_1.__awaiter(this, void 0, void 0, function () {
426
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
427
427
  var updateSubject, nestedSetSubjects, remainingSubjects, _a, _b, subject, nestedSetPromise;
428
428
  var e_3, _c;
429
429
  var _this = this;
430
- return tslib_1.__generator(this, function (_d) {
430
+ return (0, tslib_1.__generator)(this, function (_d) {
431
431
  switch (_d.label) {
432
432
  case 0:
433
- updateSubject = function (subject) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
433
+ updateSubject = function (subject) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () {
434
434
  var partialEntity, manager, updateMap, _a, updateQueryBuilder, updateResult, updateGeneratedMap_1;
435
435
  var _this = this;
436
- return tslib_1.__generator(this, function (_b) {
436
+ return (0, tslib_1.__generator)(this, function (_b) {
437
437
  switch (_b.label) {
438
438
  case 0:
439
439
  if (!subject.identifier)
@@ -514,7 +514,7 @@ var SubjectExecutor = /** @class */ (function () {
514
514
  nestedSetSubjects = [];
515
515
  remainingSubjects = [];
516
516
  try {
517
- for (_a = tslib_1.__values(this.updateSubjects), _b = _a.next(); !_b.done; _b = _a.next()) {
517
+ for (_a = (0, tslib_1.__values)(this.updateSubjects), _b = _a.next(); !_b.done; _b = _a.next()) {
518
518
  subject = _b.value;
519
519
  if (subject.metadata.treeType === "nested-set") {
520
520
  nestedSetSubjects.push(subject);
@@ -531,14 +531,14 @@ var SubjectExecutor = /** @class */ (function () {
531
531
  }
532
532
  finally { if (e_3) throw e_3.error; }
533
533
  }
534
- nestedSetPromise = new Promise(function (resolve, reject) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
534
+ nestedSetPromise = new Promise(function (ok, fail) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () {
535
535
  var nestedSetSubjects_1, nestedSetSubjects_1_1, subject, error_1, e_4_1;
536
536
  var e_4, _a;
537
- return tslib_1.__generator(this, function (_b) {
537
+ return (0, tslib_1.__generator)(this, function (_b) {
538
538
  switch (_b.label) {
539
539
  case 0:
540
540
  _b.trys.push([0, 7, 8, 9]);
541
- nestedSetSubjects_1 = tslib_1.__values(nestedSetSubjects), nestedSetSubjects_1_1 = nestedSetSubjects_1.next();
541
+ nestedSetSubjects_1 = (0, tslib_1.__values)(nestedSetSubjects), nestedSetSubjects_1_1 = nestedSetSubjects_1.next();
542
542
  _b.label = 1;
543
543
  case 1:
544
544
  if (!!nestedSetSubjects_1_1.done) return [3 /*break*/, 6];
@@ -552,7 +552,7 @@ var SubjectExecutor = /** @class */ (function () {
552
552
  return [3 /*break*/, 5];
553
553
  case 4:
554
554
  error_1 = _b.sent();
555
- reject(error_1);
555
+ fail(error_1);
556
556
  return [3 /*break*/, 5];
557
557
  case 5:
558
558
  nestedSetSubjects_1_1 = nestedSetSubjects_1.next();
@@ -569,13 +569,13 @@ var SubjectExecutor = /** @class */ (function () {
569
569
  finally { if (e_4) throw e_4.error; }
570
570
  return [7 /*endfinally*/];
571
571
  case 9:
572
- resolve();
572
+ ok();
573
573
  return [2 /*return*/];
574
574
  }
575
575
  });
576
576
  }); });
577
577
  // Run all remaning subjects in parallel
578
- return [4 /*yield*/, Promise.all(tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(remainingSubjects.map(updateSubject))), [nestedSetPromise]))];
578
+ return [4 /*yield*/, Promise.all((0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(remainingSubjects.map(updateSubject)), false), [nestedSetPromise], false))];
579
579
  case 1:
580
580
  // Run all remaning subjects in parallel
581
581
  _d.sent();
@@ -590,17 +590,17 @@ var SubjectExecutor = /** @class */ (function () {
590
590
  * todo: we need to apply topological sort here as well
591
591
  */
592
592
  SubjectExecutor.prototype.executeRemoveOperations = function () {
593
- return tslib_1.__awaiter(this, void 0, void 0, function () {
593
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
594
594
  var _a, groupedRemoveSubjects, groupedRemoveSubjectKeys, groupedRemoveSubjectKeys_1, groupedRemoveSubjectKeys_1_1, groupName, subjects, deleteMaps, manager, _b, e_5_1;
595
595
  var e_5, _c;
596
- return tslib_1.__generator(this, function (_d) {
596
+ return (0, tslib_1.__generator)(this, function (_d) {
597
597
  switch (_d.label) {
598
598
  case 0:
599
- _a = tslib_1.__read(this.groupBulkSubjects(this.removeSubjects, "delete"), 2), groupedRemoveSubjects = _a[0], groupedRemoveSubjectKeys = _a[1];
599
+ _a = (0, tslib_1.__read)(this.groupBulkSubjects(this.removeSubjects, "delete"), 2), groupedRemoveSubjects = _a[0], groupedRemoveSubjectKeys = _a[1];
600
600
  _d.label = 1;
601
601
  case 1:
602
602
  _d.trys.push([1, 13, 14, 15]);
603
- groupedRemoveSubjectKeys_1 = tslib_1.__values(groupedRemoveSubjectKeys), groupedRemoveSubjectKeys_1_1 = groupedRemoveSubjectKeys_1.next();
603
+ groupedRemoveSubjectKeys_1 = (0, tslib_1.__values)(groupedRemoveSubjectKeys), groupedRemoveSubjectKeys_1_1 = groupedRemoveSubjectKeys_1.next();
604
604
  _d.label = 2;
605
605
  case 2:
606
606
  if (!!groupedRemoveSubjectKeys_1_1.done) return [3 /*break*/, 12];
@@ -676,7 +676,7 @@ var SubjectExecutor = /** @class */ (function () {
676
676
  var target = {};
677
677
  if (subject.entity) {
678
678
  try {
679
- for (var _b = tslib_1.__values(subject.metadata.columns), _c = _b.next(); !_c.done; _c = _b.next()) {
679
+ for (var _b = (0, tslib_1.__values)(subject.metadata.columns), _c = _b.next(); !_c.done; _c = _b.next()) {
680
680
  var column = _c.value;
681
681
  OrmUtils_1.OrmUtils.mergeDeep(target, column.getEntityValueMap(subject.entity));
682
682
  }
@@ -695,14 +695,14 @@ var SubjectExecutor = /** @class */ (function () {
695
695
  * Soft-removes all given subjects in the database.
696
696
  */
697
697
  SubjectExecutor.prototype.executeSoftRemoveOperations = function () {
698
- return tslib_1.__awaiter(this, void 0, void 0, function () {
698
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
699
699
  var _this = this;
700
- return tslib_1.__generator(this, function (_a) {
700
+ return (0, tslib_1.__generator)(this, function (_a) {
701
701
  switch (_a.label) {
702
- case 0: return [4 /*yield*/, Promise.all(this.softRemoveSubjects.map(function (subject) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
702
+ case 0: return [4 /*yield*/, Promise.all(this.softRemoveSubjects.map(function (subject) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () {
703
703
  var updateResult, partialEntity, manager, softDeleteQueryBuilder;
704
704
  var _this = this;
705
- return tslib_1.__generator(this, function (_a) {
705
+ return (0, tslib_1.__generator)(this, function (_a) {
706
706
  switch (_a.label) {
707
707
  case 0:
708
708
  if (!subject.identifier)
@@ -770,14 +770,14 @@ var SubjectExecutor = /** @class */ (function () {
770
770
  * Recovers all given subjects in the database.
771
771
  */
772
772
  SubjectExecutor.prototype.executeRecoverOperations = function () {
773
- return tslib_1.__awaiter(this, void 0, void 0, function () {
773
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
774
774
  var _this = this;
775
- return tslib_1.__generator(this, function (_a) {
775
+ return (0, tslib_1.__generator)(this, function (_a) {
776
776
  switch (_a.label) {
777
- case 0: return [4 /*yield*/, Promise.all(this.recoverSubjects.map(function (subject) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
777
+ case 0: return [4 /*yield*/, Promise.all(this.recoverSubjects.map(function (subject) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () {
778
778
  var updateResult, partialEntity, manager, softDeleteQueryBuilder;
779
779
  var _this = this;
780
- return tslib_1.__generator(this, function (_a) {
780
+ return (0, tslib_1.__generator)(this, function (_a) {
781
781
  switch (_a.label) {
782
782
  case 0:
783
783
  if (!subject.identifier)