typeorm 0.3.12-dev.ef64bfc → 0.4.0-alpha.1

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 (1483) hide show
  1. package/browser/cache/DbQueryResultCache.d.ts +4 -4
  2. package/browser/cache/DbQueryResultCache.js +1 -1
  3. package/browser/cache/DbQueryResultCache.js.map +1 -1
  4. package/browser/cache/QueryResultCache.d.ts +2 -2
  5. package/browser/cache/QueryResultCache.js.map +1 -1
  6. package/browser/cache/QueryResultCacheFactory.d.ts +2 -2
  7. package/browser/cache/QueryResultCacheFactory.js.map +1 -1
  8. package/browser/cache/RedisQueryResultCache.d.ts +4 -4
  9. package/browser/cache/RedisQueryResultCache.js.map +1 -1
  10. package/browser/cli-ts-node-commonjs.js +0 -0
  11. package/browser/cli-ts-node-esm.js +0 -0
  12. package/browser/common/DeepPartial.d.ts +1 -1
  13. package/browser/common/EntityTarget.d.ts +3 -3
  14. package/browser/common/EntityTarget.js.map +1 -1
  15. package/browser/common/MixedList.d.ts +1 -1
  16. package/browser/common/NonNever.d.ts +1 -1
  17. package/browser/common/ObjectType.d.ts +1 -1
  18. package/browser/common/PickKeysByType.d.ts +6 -0
  19. package/browser/common/PickKeysByType.js +3 -0
  20. package/browser/common/PickKeysByType.js.map +1 -0
  21. package/browser/common/RelationType.d.ts +1 -1
  22. package/browser/connection/BaseConnectionOptions.d.ts +2 -2
  23. package/browser/connection/BaseConnectionOptions.js.map +1 -1
  24. package/browser/connection/ConnectionManager.d.ts +1 -1
  25. package/browser/connection/ConnectionManager.js.map +1 -1
  26. package/browser/connection/ConnectionMetadataBuilder.d.ts +5 -5
  27. package/browser/connection/ConnectionMetadataBuilder.js.map +1 -1
  28. package/browser/connection/ConnectionOptions.d.ts +2 -2
  29. package/browser/connection/ConnectionOptions.js.map +1 -1
  30. package/browser/connection/ConnectionOptionsReader.d.ts +1 -1
  31. package/browser/connection/ConnectionOptionsReader.js.map +1 -1
  32. package/browser/connection/options-reader/ConnectionOptionsEnvReader.d.ts +1 -1
  33. package/browser/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
  34. package/browser/connection/options-reader/ConnectionOptionsXmlReader.d.ts +1 -1
  35. package/browser/connection/options-reader/ConnectionOptionsXmlReader.js.map +1 -1
  36. package/browser/connection/options-reader/ConnectionOptionsYmlReader.d.ts +1 -1
  37. package/browser/connection/options-reader/ConnectionOptionsYmlReader.js.map +1 -1
  38. package/browser/container.d.ts +1 -1
  39. package/browser/data-source/BaseDataSourceOptions.d.ts +8 -8
  40. package/browser/data-source/BaseDataSourceOptions.js.map +1 -1
  41. package/browser/data-source/DataSource.d.ts +21 -21
  42. package/browser/data-source/DataSource.js +1 -1
  43. package/browser/data-source/DataSource.js.map +1 -1
  44. package/browser/data-source/DataSourceOptions.d.ts +19 -19
  45. package/browser/data-source/DataSourceOptions.js.map +1 -1
  46. package/browser/decorator/Check.js.map +1 -1
  47. package/browser/decorator/EntityRepository.d.ts +1 -1
  48. package/browser/decorator/EntityRepository.js.map +1 -1
  49. package/browser/decorator/Exclusion.js.map +1 -1
  50. package/browser/decorator/Generated.js.map +1 -1
  51. package/browser/decorator/Index.d.ts +1 -1
  52. package/browser/decorator/Index.js.map +1 -1
  53. package/browser/decorator/Unique.d.ts +1 -1
  54. package/browser/decorator/Unique.js.map +1 -1
  55. package/browser/decorator/columns/Column.d.ts +10 -10
  56. package/browser/decorator/columns/Column.js.map +1 -1
  57. package/browser/decorator/columns/CreateDateColumn.d.ts +1 -1
  58. package/browser/decorator/columns/CreateDateColumn.js.map +1 -1
  59. package/browser/decorator/columns/DeleteDateColumn.d.ts +1 -1
  60. package/browser/decorator/columns/DeleteDateColumn.js.map +1 -1
  61. package/browser/decorator/columns/ObjectIdColumn.d.ts +1 -1
  62. package/browser/decorator/columns/ObjectIdColumn.js.map +1 -1
  63. package/browser/decorator/columns/PrimaryColumn.d.ts +3 -3
  64. package/browser/decorator/columns/PrimaryColumn.js.map +1 -1
  65. package/browser/decorator/columns/PrimaryGeneratedColumn.d.ts +3 -3
  66. package/browser/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
  67. package/browser/decorator/columns/UpdateDateColumn.d.ts +1 -1
  68. package/browser/decorator/columns/UpdateDateColumn.js.map +1 -1
  69. package/browser/decorator/columns/VersionColumn.d.ts +1 -1
  70. package/browser/decorator/columns/VersionColumn.js.map +1 -1
  71. package/browser/decorator/columns/ViewColumn.d.ts +1 -1
  72. package/browser/decorator/columns/ViewColumn.js.map +1 -1
  73. package/browser/decorator/columns/VirtualColumn.d.ts +2 -2
  74. package/browser/decorator/columns/VirtualColumn.js.map +1 -1
  75. package/browser/decorator/entity/ChildEntity.js.map +1 -1
  76. package/browser/decorator/entity/Entity.d.ts +1 -1
  77. package/browser/decorator/entity/Entity.js.map +1 -1
  78. package/browser/decorator/entity/TableInheritance.d.ts +1 -1
  79. package/browser/decorator/entity/TableInheritance.js.map +1 -1
  80. package/browser/decorator/entity-view/ViewEntity.d.ts +1 -1
  81. package/browser/decorator/entity-view/ViewEntity.js.map +1 -1
  82. package/browser/decorator/listeners/AfterInsert.js.map +1 -1
  83. package/browser/decorator/listeners/AfterLoad.js.map +1 -1
  84. package/browser/decorator/listeners/AfterRecover.js.map +1 -1
  85. package/browser/decorator/listeners/AfterRemove.js.map +1 -1
  86. package/browser/decorator/listeners/AfterSoftRemove.js.map +1 -1
  87. package/browser/decorator/listeners/AfterUpdate.js.map +1 -1
  88. package/browser/decorator/listeners/BeforeInsert.js.map +1 -1
  89. package/browser/decorator/listeners/BeforeRecover.js.map +1 -1
  90. package/browser/decorator/listeners/BeforeRemove.js.map +1 -1
  91. package/browser/decorator/listeners/BeforeSoftRemove.js.map +1 -1
  92. package/browser/decorator/listeners/BeforeUpdate.js.map +1 -1
  93. package/browser/decorator/listeners/EventSubscriber.js.map +1 -1
  94. package/browser/decorator/options/ColumnCommonOptions.d.ts +1 -1
  95. package/browser/decorator/options/ColumnCommonOptions.js.map +1 -1
  96. package/browser/decorator/options/ColumnOptions.d.ts +3 -3
  97. package/browser/decorator/options/ColumnOptions.js.map +1 -1
  98. package/browser/decorator/options/EntityOptions.d.ts +1 -1
  99. package/browser/decorator/options/EntityOptions.js.map +1 -1
  100. package/browser/decorator/options/JoinTableMultipleColumnsOptions.d.ts +1 -1
  101. package/browser/decorator/options/JoinTableMultipleColumnsOptions.js.map +1 -1
  102. package/browser/decorator/options/JoinTableOptions.d.ts +1 -1
  103. package/browser/decorator/options/JoinTableOptions.js.map +1 -1
  104. package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.d.ts +1 -1
  105. package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -1
  106. package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.d.ts +1 -1
  107. package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
  108. package/browser/decorator/options/RelationOptions.d.ts +3 -3
  109. package/browser/decorator/options/RelationOptions.js.map +1 -1
  110. package/browser/decorator/options/SpatialColumnOptions.d.ts +1 -1
  111. package/browser/decorator/options/SpatialColumnOptions.js.map +1 -1
  112. package/browser/decorator/options/TransactionOptions.d.ts +1 -1
  113. package/browser/decorator/options/TransactionOptions.js.map +1 -1
  114. package/browser/decorator/options/UniqueOptions.d.ts +1 -1
  115. package/browser/decorator/options/UniqueOptions.js.map +1 -1
  116. package/browser/decorator/options/ViewColumnOptions.d.ts +1 -1
  117. package/browser/decorator/options/ViewColumnOptions.js.map +1 -1
  118. package/browser/decorator/options/ViewEntityOptions.d.ts +1 -1
  119. package/browser/decorator/options/ViewEntityOptions.js.map +1 -1
  120. package/browser/decorator/options/VirtualColumnOptions.d.ts +2 -2
  121. package/browser/decorator/options/VirtualColumnOptions.js.map +1 -1
  122. package/browser/decorator/relations/JoinColumn.d.ts +1 -1
  123. package/browser/decorator/relations/JoinColumn.js.map +1 -1
  124. package/browser/decorator/relations/JoinTable.d.ts +2 -2
  125. package/browser/decorator/relations/JoinTable.js.map +1 -1
  126. package/browser/decorator/relations/ManyToMany.d.ts +2 -2
  127. package/browser/decorator/relations/ManyToMany.js.map +1 -1
  128. package/browser/decorator/relations/ManyToOne.d.ts +2 -2
  129. package/browser/decorator/relations/ManyToOne.js.map +1 -1
  130. package/browser/decorator/relations/OneToMany.d.ts +2 -2
  131. package/browser/decorator/relations/OneToMany.js.map +1 -1
  132. package/browser/decorator/relations/OneToOne.d.ts +2 -2
  133. package/browser/decorator/relations/OneToOne.js.map +1 -1
  134. package/browser/decorator/relations/RelationCount.d.ts +1 -1
  135. package/browser/decorator/relations/RelationCount.js.map +1 -1
  136. package/browser/decorator/relations/RelationId.d.ts +1 -1
  137. package/browser/decorator/relations/RelationId.js.map +1 -1
  138. package/browser/decorator/tree/Tree.d.ts +2 -2
  139. package/browser/decorator/tree/Tree.js.map +1 -1
  140. package/browser/decorator/tree/TreeChildren.js.map +1 -1
  141. package/browser/decorator/tree/TreeLevelColumn.js.map +1 -1
  142. package/browser/decorator/tree/TreeParent.d.ts +1 -1
  143. package/browser/decorator/tree/TreeParent.js.map +1 -1
  144. package/browser/driver/Driver.d.ts +17 -17
  145. package/browser/driver/Driver.js.map +1 -1
  146. package/browser/driver/DriverFactory.d.ts +2 -2
  147. package/browser/driver/DriverFactory.js.map +1 -1
  148. package/browser/driver/DriverUtils.d.ts +1 -1
  149. package/browser/driver/DriverUtils.js +2 -2
  150. package/browser/driver/DriverUtils.js.map +1 -1
  151. package/browser/driver/SqlInMemory.d.ts +1 -1
  152. package/browser/driver/SqlInMemory.js.map +1 -1
  153. package/browser/driver/aurora-mysql/AuroraMysqlConnection.d.ts +4 -4
  154. package/browser/driver/aurora-mysql/AuroraMysqlConnection.js.map +1 -1
  155. package/browser/driver/aurora-mysql/AuroraMysqlConnectionOptions.d.ts +2 -2
  156. package/browser/driver/aurora-mysql/AuroraMysqlConnectionOptions.js.map +1 -1
  157. package/browser/driver/aurora-mysql/AuroraMysqlDriver.d.ts +17 -17
  158. package/browser/driver/aurora-mysql/AuroraMysqlDriver.js +2 -2
  159. package/browser/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  160. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts +6 -6
  161. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js +1 -1
  162. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
  163. package/browser/driver/aurora-postgres/AuroraPostgresConnectionOptions.d.ts +1 -1
  164. package/browser/driver/aurora-postgres/AuroraPostgresConnectionOptions.js.map +1 -1
  165. package/browser/driver/aurora-postgres/AuroraPostgresDriver.d.ts +5 -5
  166. package/browser/driver/aurora-postgres/AuroraPostgresDriver.js.map +1 -1
  167. package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.d.ts +4 -4
  168. package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
  169. package/browser/driver/better-sqlite3/BetterSqlite3ConnectionOptions.d.ts +7 -1
  170. package/browser/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js.map +1 -1
  171. package/browser/driver/better-sqlite3/BetterSqlite3Driver.d.ts +5 -5
  172. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js +3 -1
  173. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  174. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.d.ts +1 -1
  175. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  176. package/browser/driver/capacitor/CapacitorConnectionOptions.d.ts +1 -1
  177. package/browser/driver/capacitor/CapacitorConnectionOptions.js.map +1 -1
  178. package/browser/driver/capacitor/CapacitorDriver.d.ts +4 -4
  179. package/browser/driver/capacitor/CapacitorDriver.js.map +1 -1
  180. package/browser/driver/capacitor/CapacitorQueryRunner.d.ts +2 -2
  181. package/browser/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
  182. package/browser/driver/cockroachdb/CockroachConnectionCredentialsOptions.d.ts +1 -1
  183. package/browser/driver/cockroachdb/CockroachConnectionCredentialsOptions.js.map +1 -1
  184. package/browser/driver/cockroachdb/CockroachConnectionOptions.d.ts +2 -2
  185. package/browser/driver/cockroachdb/CockroachConnectionOptions.js.map +1 -1
  186. package/browser/driver/cockroachdb/CockroachDriver.d.ts +18 -18
  187. package/browser/driver/cockroachdb/CockroachDriver.js +2 -2
  188. package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
  189. package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +5 -5
  190. package/browser/driver/cockroachdb/CockroachQueryRunner.js +2 -2
  191. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  192. package/browser/driver/cordova/CordovaConnectionOptions.d.ts +1 -1
  193. package/browser/driver/cordova/CordovaConnectionOptions.js.map +1 -1
  194. package/browser/driver/cordova/CordovaDriver.d.ts +4 -4
  195. package/browser/driver/cordova/CordovaDriver.js.map +1 -1
  196. package/browser/driver/cordova/CordovaQueryRunner.d.ts +2 -2
  197. package/browser/driver/cordova/CordovaQueryRunner.js +1 -1
  198. package/browser/driver/cordova/CordovaQueryRunner.js.map +1 -1
  199. package/browser/driver/expo/ExpoConnectionOptions.d.ts +1 -1
  200. package/browser/driver/expo/ExpoConnectionOptions.js.map +1 -1
  201. package/browser/driver/expo/ExpoDriver.d.ts +4 -4
  202. package/browser/driver/expo/ExpoDriver.js.map +1 -1
  203. package/browser/driver/expo/ExpoQueryRunner.d.ts +1 -1
  204. package/browser/driver/expo/ExpoQueryRunner.js +1 -1
  205. package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
  206. package/browser/driver/mongodb/MongoConnectionOptions.d.ts +2 -2
  207. package/browser/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  208. package/browser/driver/mongodb/MongoDriver.d.ts +17 -17
  209. package/browser/driver/mongodb/MongoDriver.js.map +1 -1
  210. package/browser/driver/mongodb/MongoQueryRunner.d.ts +16 -16
  211. package/browser/driver/mongodb/MongoQueryRunner.js.map +1 -1
  212. package/browser/driver/mongodb/typings.d.ts +6 -6
  213. package/browser/driver/mysql/MysqlConnectionOptions.d.ts +2 -2
  214. package/browser/driver/mysql/MysqlConnectionOptions.js.map +1 -1
  215. package/browser/driver/mysql/MysqlDriver.d.ts +17 -17
  216. package/browser/driver/mysql/MysqlDriver.js +2 -2
  217. package/browser/driver/mysql/MysqlDriver.js.map +1 -1
  218. package/browser/driver/mysql/MysqlQueryRunner.d.ts +7 -7
  219. package/browser/driver/mysql/MysqlQueryRunner.js +1 -1
  220. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  221. package/browser/driver/nativescript/NativescriptConnectionOptions.d.ts +1 -1
  222. package/browser/driver/nativescript/NativescriptConnectionOptions.js.map +1 -1
  223. package/browser/driver/nativescript/NativescriptDriver.d.ts +5 -5
  224. package/browser/driver/nativescript/NativescriptDriver.js.map +1 -1
  225. package/browser/driver/nativescript/NativescriptQueryRunner.d.ts +2 -2
  226. package/browser/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  227. package/browser/driver/oracle/OracleConnectionOptions.d.ts +2 -2
  228. package/browser/driver/oracle/OracleConnectionOptions.js.map +1 -1
  229. package/browser/driver/oracle/OracleDriver.d.ts +17 -17
  230. package/browser/driver/oracle/OracleDriver.js +2 -2
  231. package/browser/driver/oracle/OracleDriver.js.map +1 -1
  232. package/browser/driver/oracle/OracleQueryRunner.d.ts +6 -6
  233. package/browser/driver/oracle/OracleQueryRunner.js +2 -2
  234. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  235. package/browser/driver/postgres/PostgresConnectionCredentialsOptions.d.ts +1 -1
  236. package/browser/driver/postgres/PostgresConnectionCredentialsOptions.js.map +1 -1
  237. package/browser/driver/postgres/PostgresConnectionOptions.d.ts +2 -2
  238. package/browser/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  239. package/browser/driver/postgres/PostgresDriver.d.ts +18 -18
  240. package/browser/driver/postgres/PostgresDriver.js +2 -2
  241. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  242. package/browser/driver/postgres/PostgresQueryRunner.d.ts +5 -5
  243. package/browser/driver/postgres/PostgresQueryRunner.js +3 -3
  244. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  245. package/browser/driver/react-native/ReactNativeConnectionOptions.d.ts +1 -1
  246. package/browser/driver/react-native/ReactNativeConnectionOptions.js.map +1 -1
  247. package/browser/driver/react-native/ReactNativeDriver.d.ts +4 -4
  248. package/browser/driver/react-native/ReactNativeDriver.js.map +1 -1
  249. package/browser/driver/react-native/ReactNativeQueryRunner.d.ts +2 -2
  250. package/browser/driver/react-native/ReactNativeQueryRunner.js +1 -1
  251. package/browser/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  252. package/browser/driver/sap/SapConnectionOptions.d.ts +2 -2
  253. package/browser/driver/sap/SapConnectionOptions.js.map +1 -1
  254. package/browser/driver/sap/SapDriver.d.ts +10 -10
  255. package/browser/driver/sap/SapDriver.js +3 -3
  256. package/browser/driver/sap/SapDriver.js.map +1 -1
  257. package/browser/driver/sap/SapQueryRunner.d.ts +6 -6
  258. package/browser/driver/sap/SapQueryRunner.js +1 -1
  259. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  260. package/browser/driver/spanner/SpannerConnectionOptions.d.ts +2 -2
  261. package/browser/driver/spanner/SpannerConnectionOptions.js.map +1 -1
  262. package/browser/driver/spanner/SpannerDriver.d.ts +12 -12
  263. package/browser/driver/spanner/SpannerDriver.js +3 -3
  264. package/browser/driver/spanner/SpannerDriver.js.map +1 -1
  265. package/browser/driver/spanner/SpannerQueryRunner.d.ts +6 -6
  266. package/browser/driver/spanner/SpannerQueryRunner.js +7 -7
  267. package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -1
  268. package/browser/driver/sqlite/SqliteConnectionOptions.d.ts +1 -1
  269. package/browser/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
  270. package/browser/driver/sqlite/SqliteDriver.d.ts +5 -5
  271. package/browser/driver/sqlite/SqliteDriver.js.map +1 -1
  272. package/browser/driver/sqlite/SqliteQueryRunner.d.ts +1 -1
  273. package/browser/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  274. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.d.ts +18 -18
  275. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +13 -1
  276. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  277. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +5 -5
  278. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +10 -10
  279. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  280. package/browser/driver/sqljs/SqljsConnectionOptions.d.ts +1 -1
  281. package/browser/driver/sqljs/SqljsConnectionOptions.js.map +1 -1
  282. package/browser/driver/sqljs/SqljsDriver.d.ts +5 -5
  283. package/browser/driver/sqljs/SqljsDriver.js +1 -1
  284. package/browser/driver/sqljs/SqljsDriver.js.map +1 -1
  285. package/browser/driver/sqljs/SqljsQueryRunner.d.ts +1 -1
  286. package/browser/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  287. package/browser/driver/sqlserver/SqlServerConnectionCredentialsOptions.d.ts +8 -8
  288. package/browser/driver/sqlserver/SqlServerConnectionCredentialsOptions.js.map +1 -1
  289. package/browser/driver/sqlserver/SqlServerConnectionOptions.d.ts +2 -2
  290. package/browser/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
  291. package/browser/driver/sqlserver/SqlServerDriver.d.ts +16 -16
  292. package/browser/driver/sqlserver/SqlServerDriver.js +2 -2
  293. package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
  294. package/browser/driver/sqlserver/SqlServerQueryRunner.d.ts +7 -7
  295. package/browser/driver/sqlserver/SqlServerQueryRunner.js +4 -4
  296. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  297. package/browser/driver/types/ColumnTypes.d.ts +7 -7
  298. package/browser/driver/types/DatabaseType.d.ts +1 -1
  299. package/browser/driver/types/GeoJsonTypes.d.ts +12 -12
  300. package/browser/driver/types/IsolationLevel.d.ts +1 -1
  301. package/browser/driver/types/MappedColumnTypes.d.ts +1 -1
  302. package/browser/driver/types/MappedColumnTypes.js.map +1 -1
  303. package/browser/driver/types/ReplicationMode.d.ts +1 -1
  304. package/browser/driver/types/UpsertType.d.ts +1 -1
  305. package/browser/entity-manager/EntityManager.d.ts +37 -19
  306. package/browser/entity-manager/EntityManager.js +32 -0
  307. package/browser/entity-manager/EntityManager.js.map +1 -1
  308. package/browser/entity-manager/EntityManagerFactory.d.ts +2 -2
  309. package/browser/entity-manager/EntityManagerFactory.js.map +1 -1
  310. package/browser/entity-manager/MongoEntityManager.d.ts +12 -12
  311. package/browser/entity-manager/MongoEntityManager.js +5 -5
  312. package/browser/entity-manager/MongoEntityManager.js.map +1 -1
  313. package/browser/entity-manager/SqljsEntityManager.d.ts +2 -2
  314. package/browser/entity-manager/SqljsEntityManager.js.map +1 -1
  315. package/browser/entity-schema/EntitySchema.d.ts +1 -1
  316. package/browser/entity-schema/EntitySchema.js.map +1 -1
  317. package/browser/entity-schema/EntitySchemaColumnOptions.d.ts +3 -3
  318. package/browser/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
  319. package/browser/entity-schema/EntitySchemaEmbeddedColumnOptions.d.ts +1 -1
  320. package/browser/entity-schema/EntitySchemaEmbeddedColumnOptions.js.map +1 -1
  321. package/browser/entity-schema/EntitySchemaOptions.d.ts +10 -10
  322. package/browser/entity-schema/EntitySchemaOptions.js.map +1 -1
  323. package/browser/entity-schema/EntitySchemaRelationIdOptions.d.ts +1 -1
  324. package/browser/entity-schema/EntitySchemaRelationIdOptions.js.map +1 -1
  325. package/browser/entity-schema/EntitySchemaRelationOptions.d.ts +8 -8
  326. package/browser/entity-schema/EntitySchemaRelationOptions.js.map +1 -1
  327. package/browser/entity-schema/EntitySchemaTransformer.d.ts +1 -1
  328. package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
  329. package/browser/entity-schema/EntitySchemaUniqueOptions.d.ts +1 -1
  330. package/browser/entity-schema/EntitySchemaUniqueOptions.js.map +1 -1
  331. package/browser/error/CannotCreateEntityIdMapError.d.ts +1 -1
  332. package/browser/error/CannotCreateEntityIdMapError.js.map +1 -1
  333. package/browser/error/DataTypeNotSupportedError.d.ts +3 -3
  334. package/browser/error/DataTypeNotSupportedError.js.map +1 -1
  335. package/browser/error/EntityMetadataNotFoundError.d.ts +1 -1
  336. package/browser/error/EntityMetadataNotFoundError.js.map +1 -1
  337. package/browser/error/EntityNotFoundError.d.ts +1 -1
  338. package/browser/error/EntityNotFoundError.js.map +1 -1
  339. package/browser/error/EntityPropertyNotFoundError.d.ts +1 -1
  340. package/browser/error/EntityPropertyNotFoundError.js.map +1 -1
  341. package/browser/error/ForbiddenTransactionModeOverrideError.d.ts +1 -1
  342. package/browser/error/ForbiddenTransactionModeOverrideError.js.map +1 -1
  343. package/browser/error/InitializedRelationError.d.ts +1 -1
  344. package/browser/error/InitializedRelationError.js.map +1 -1
  345. package/browser/error/MissingDeleteDateColumnError.d.ts +1 -1
  346. package/browser/error/MissingDeleteDateColumnError.js.map +1 -1
  347. package/browser/error/MissingJoinColumnError.d.ts +2 -2
  348. package/browser/error/MissingJoinColumnError.js.map +1 -1
  349. package/browser/error/MissingJoinTableError.d.ts +2 -2
  350. package/browser/error/MissingJoinTableError.js.map +1 -1
  351. package/browser/error/MissingPrimaryColumnError.d.ts +1 -1
  352. package/browser/error/MissingPrimaryColumnError.js.map +1 -1
  353. package/browser/error/RepositoryNotTreeError.d.ts +1 -1
  354. package/browser/error/RepositoryNotTreeError.js.map +1 -1
  355. package/browser/error/SubjectRemovedAndUpdatedError.d.ts +1 -1
  356. package/browser/error/SubjectRemovedAndUpdatedError.js.map +1 -1
  357. package/browser/error/SubjectWithoutIdentifierError.d.ts +1 -1
  358. package/browser/error/SubjectWithoutIdentifierError.js.map +1 -1
  359. package/browser/error/TreeRepositoryNotSupportedError.d.ts +1 -1
  360. package/browser/error/TreeRepositoryNotSupportedError.js.map +1 -1
  361. package/browser/error/UsingJoinColumnIsNotAllowedError.d.ts +2 -2
  362. package/browser/error/UsingJoinColumnIsNotAllowedError.js.map +1 -1
  363. package/browser/error/UsingJoinColumnOnlyOnOneSideAllowedError.d.ts +2 -2
  364. package/browser/error/UsingJoinColumnOnlyOnOneSideAllowedError.js.map +1 -1
  365. package/browser/error/UsingJoinTableIsNotAllowedError.d.ts +2 -2
  366. package/browser/error/UsingJoinTableIsNotAllowedError.js.map +1 -1
  367. package/browser/error/UsingJoinTableOnlyOnOneSideAllowedError.d.ts +2 -2
  368. package/browser/error/UsingJoinTableOnlyOnOneSideAllowedError.js.map +1 -1
  369. package/browser/find-options/FindManyOptions.d.ts +1 -1
  370. package/browser/find-options/FindManyOptions.js.map +1 -1
  371. package/browser/find-options/FindOneOptions.d.ts +5 -5
  372. package/browser/find-options/FindOneOptions.js.map +1 -1
  373. package/browser/find-options/FindOperator.d.ts +3 -3
  374. package/browser/find-options/FindOperator.js.map +1 -1
  375. package/browser/find-options/FindOperatorType.d.ts +1 -1
  376. package/browser/find-options/FindOperatorType.js.map +1 -1
  377. package/browser/find-options/FindOptionsOrder.d.ts +4 -4
  378. package/browser/find-options/FindOptionsOrder.js.map +1 -1
  379. package/browser/find-options/FindOptionsRelations.d.ts +4 -4
  380. package/browser/find-options/FindOptionsRelations.js.map +1 -1
  381. package/browser/find-options/FindOptionsSelect.d.ts +4 -4
  382. package/browser/find-options/FindOptionsSelect.js.map +1 -1
  383. package/browser/find-options/FindOptionsUtils.d.ts +6 -6
  384. package/browser/find-options/FindOptionsUtils.js +1 -1
  385. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  386. package/browser/find-options/FindOptionsWhere.d.ts +9 -5
  387. package/browser/find-options/FindOptionsWhere.js.map +1 -1
  388. package/browser/find-options/OrderByCondition.d.ts +1 -1
  389. package/browser/find-options/mongodb/MongoFindManyOptions.d.ts +1 -1
  390. package/browser/find-options/mongodb/MongoFindManyOptions.js.map +1 -1
  391. package/browser/find-options/mongodb/MongoFindOneOptions.d.ts +3 -3
  392. package/browser/find-options/mongodb/MongoFindOneOptions.js.map +1 -1
  393. package/browser/find-options/operator/Equal.d.ts +1 -1
  394. package/browser/find-options/operator/Equal.js.map +1 -1
  395. package/browser/find-options/operator/JsonContains.d.ts +6 -0
  396. package/browser/find-options/operator/JsonContains.js +10 -0
  397. package/browser/find-options/operator/JsonContains.js.map +1 -0
  398. package/browser/find-options/operator/Raw.d.ts +1 -1
  399. package/browser/find-options/operator/Raw.js.map +1 -1
  400. package/browser/globals.d.ts +12 -12
  401. package/browser/globals.js.map +1 -1
  402. package/browser/index.d.ts +3 -0
  403. package/browser/index.js +3 -0
  404. package/browser/index.js.map +1 -1
  405. package/browser/logger/AbstractLogger.d.ts +49 -0
  406. package/browser/logger/AbstractLogger.js +230 -0
  407. package/browser/logger/AbstractLogger.js.map +1 -0
  408. package/browser/logger/AdvancedConsoleLogger.d.ts +6 -34
  409. package/browser/logger/AdvancedConsoleLogger.js +41 -106
  410. package/browser/logger/AdvancedConsoleLogger.js.map +1 -1
  411. package/browser/logger/DebugLogger.d.ts +10 -30
  412. package/browser/logger/DebugLogger.js +56 -74
  413. package/browser/logger/DebugLogger.js.map +1 -1
  414. package/browser/logger/FileLogger.d.ts +8 -34
  415. package/browser/logger/FileLogger.js +50 -97
  416. package/browser/logger/FileLogger.js.map +1 -1
  417. package/browser/logger/Logger.d.ts +32 -1
  418. package/browser/logger/Logger.js.map +1 -1
  419. package/browser/logger/LoggerFactory.d.ts +2 -2
  420. package/browser/logger/LoggerFactory.js.map +1 -1
  421. package/browser/logger/LoggerOptions.d.ts +3 -2
  422. package/browser/logger/LoggerOptions.js.map +1 -1
  423. package/browser/logger/SimpleConsoleLogger.d.ts +6 -34
  424. package/browser/logger/SimpleConsoleLogger.js +43 -106
  425. package/browser/logger/SimpleConsoleLogger.js.map +1 -1
  426. package/browser/metadata/CheckMetadata.d.ts +3 -3
  427. package/browser/metadata/CheckMetadata.js.map +1 -1
  428. package/browser/metadata/ColumnMetadata.d.ts +8 -8
  429. package/browser/metadata/ColumnMetadata.js.map +1 -1
  430. package/browser/metadata/EmbeddedMetadata.d.ts +10 -10
  431. package/browser/metadata/EmbeddedMetadata.js +1 -1
  432. package/browser/metadata/EmbeddedMetadata.js.map +1 -1
  433. package/browser/metadata/EntityListenerMetadata.d.ts +5 -5
  434. package/browser/metadata/EntityListenerMetadata.js.map +1 -1
  435. package/browser/metadata/EntityMetadata.d.ts +20 -20
  436. package/browser/metadata/EntityMetadata.js.map +1 -1
  437. package/browser/metadata/ExclusionMetadata.d.ts +3 -3
  438. package/browser/metadata/ExclusionMetadata.js.map +1 -1
  439. package/browser/metadata/ForeignKeyMetadata.d.ts +6 -6
  440. package/browser/metadata/ForeignKeyMetadata.js.map +1 -1
  441. package/browser/metadata/IndexMetadata.d.ts +5 -5
  442. package/browser/metadata/IndexMetadata.js.map +1 -1
  443. package/browser/metadata/RelationCountMetadata.d.ts +4 -4
  444. package/browser/metadata/RelationCountMetadata.js.map +1 -1
  445. package/browser/metadata/RelationIdMetadata.d.ts +5 -5
  446. package/browser/metadata/RelationIdMetadata.js.map +1 -1
  447. package/browser/metadata/RelationMetadata.d.ts +10 -10
  448. package/browser/metadata/RelationMetadata.js.map +1 -1
  449. package/browser/metadata/UniqueMetadata.d.ts +6 -6
  450. package/browser/metadata/UniqueMetadata.js.map +1 -1
  451. package/browser/metadata/types/ClosureTreeOptions.d.ts +1 -1
  452. package/browser/metadata/types/ClosureTreeOptions.js.map +1 -1
  453. package/browser/metadata/types/DeferrableType.d.ts +1 -1
  454. package/browser/metadata/types/EventListenerTypes.d.ts +1 -1
  455. package/browser/metadata/types/OnDeleteType.d.ts +1 -1
  456. package/browser/metadata/types/OnUpdateType.d.ts +1 -1
  457. package/browser/metadata/types/PropertyTypeInFunction.d.ts +1 -1
  458. package/browser/metadata/types/RelationTypeInFunction.d.ts +2 -2
  459. package/browser/metadata/types/RelationTypeInFunction.js.map +1 -1
  460. package/browser/metadata/types/RelationTypes.d.ts +1 -1
  461. package/browser/metadata/types/TableTypes.d.ts +1 -1
  462. package/browser/metadata/types/TreeTypes.d.ts +1 -1
  463. package/browser/metadata-args/ColumnMetadataArgs.d.ts +2 -2
  464. package/browser/metadata-args/ColumnMetadataArgs.js.map +1 -1
  465. package/browser/metadata-args/EntityListenerMetadataArgs.d.ts +1 -1
  466. package/browser/metadata-args/EntityListenerMetadataArgs.js.map +1 -1
  467. package/browser/metadata-args/EntityRepositoryMetadataArgs.d.ts +1 -1
  468. package/browser/metadata-args/EntityRepositoryMetadataArgs.js.map +1 -1
  469. package/browser/metadata-args/InheritanceMetadataArgs.d.ts +1 -1
  470. package/browser/metadata-args/InheritanceMetadataArgs.js.map +1 -1
  471. package/browser/metadata-args/JoinTableMetadataArgs.d.ts +1 -1
  472. package/browser/metadata-args/JoinTableMetadataArgs.js.map +1 -1
  473. package/browser/metadata-args/MetadataArgsStorage.d.ts +22 -22
  474. package/browser/metadata-args/MetadataArgsStorage.js.map +1 -1
  475. package/browser/metadata-args/RelationCountMetadataArgs.d.ts +1 -1
  476. package/browser/metadata-args/RelationCountMetadataArgs.js.map +1 -1
  477. package/browser/metadata-args/RelationIdMetadataArgs.d.ts +1 -1
  478. package/browser/metadata-args/RelationIdMetadataArgs.js.map +1 -1
  479. package/browser/metadata-args/RelationMetadataArgs.d.ts +4 -4
  480. package/browser/metadata-args/RelationMetadataArgs.js.map +1 -1
  481. package/browser/metadata-args/TableMetadataArgs.d.ts +3 -3
  482. package/browser/metadata-args/TableMetadataArgs.js.map +1 -1
  483. package/browser/metadata-args/TreeMetadataArgs.d.ts +2 -2
  484. package/browser/metadata-args/TreeMetadataArgs.js.map +1 -1
  485. package/browser/metadata-args/UniqueMetadataArgs.d.ts +1 -1
  486. package/browser/metadata-args/UniqueMetadataArgs.js.map +1 -1
  487. package/browser/metadata-args/types/ColumnMode.d.ts +1 -1
  488. package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.d.ts +1 -1
  489. package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
  490. package/browser/metadata-builder/EntityMetadataBuilder.d.ts +4 -4
  491. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  492. package/browser/metadata-builder/EntityMetadataValidator.d.ts +2 -2
  493. package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
  494. package/browser/metadata-builder/JunctionEntityMetadataBuilder.d.ts +3 -3
  495. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  496. package/browser/metadata-builder/RelationJoinColumnBuilder.d.ts +3 -3
  497. package/browser/metadata-builder/RelationJoinColumnBuilder.js +2 -1
  498. package/browser/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  499. package/browser/migration/Migration.d.ts +1 -1
  500. package/browser/migration/Migration.js.map +1 -1
  501. package/browser/migration/MigrationExecutor.d.ts +2 -2
  502. package/browser/migration/MigrationExecutor.js +3 -3
  503. package/browser/migration/MigrationExecutor.js.map +1 -1
  504. package/browser/migration/MigrationInterface.d.ts +1 -1
  505. package/browser/migration/MigrationInterface.js.map +1 -1
  506. package/browser/naming-strategy/DefaultNamingStrategy.d.ts +2 -2
  507. package/browser/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  508. package/browser/naming-strategy/LegacyOracleNamingStrategy.d.ts +21 -0
  509. package/browser/naming-strategy/LegacyOracleNamingStrategy.js +46 -0
  510. package/browser/naming-strategy/LegacyOracleNamingStrategy.js.map +1 -0
  511. package/browser/naming-strategy/NamingStrategyInterface.d.ts +2 -2
  512. package/browser/naming-strategy/NamingStrategyInterface.js.map +1 -1
  513. package/browser/persistence/EntityPersistExecutor.d.ts +5 -5
  514. package/browser/persistence/EntityPersistExecutor.js +1 -1
  515. package/browser/persistence/EntityPersistExecutor.js.map +1 -1
  516. package/browser/persistence/Subject.d.ts +5 -5
  517. package/browser/persistence/Subject.js.map +1 -1
  518. package/browser/persistence/SubjectChangeMap.d.ts +3 -3
  519. package/browser/persistence/SubjectChangeMap.js.map +1 -1
  520. package/browser/persistence/SubjectChangedColumnsComputer.d.ts +1 -1
  521. package/browser/persistence/SubjectChangedColumnsComputer.js.map +1 -1
  522. package/browser/persistence/SubjectDatabaseEntityLoader.d.ts +3 -3
  523. package/browser/persistence/SubjectDatabaseEntityLoader.js +1 -1
  524. package/browser/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  525. package/browser/persistence/SubjectExecutor.d.ts +4 -4
  526. package/browser/persistence/SubjectExecutor.js +1 -1
  527. package/browser/persistence/SubjectExecutor.js.map +1 -1
  528. package/browser/persistence/SubjectTopoligicalSorter.d.ts +2 -2
  529. package/browser/persistence/SubjectTopoligicalSorter.js +7 -11
  530. package/browser/persistence/SubjectTopoligicalSorter.js.map +1 -1
  531. package/browser/persistence/subject-builder/CascadesSubjectBuilder.d.ts +1 -1
  532. package/browser/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  533. package/browser/persistence/subject-builder/ManyToManySubjectBuilder.d.ts +2 -2
  534. package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  535. package/browser/persistence/subject-builder/OneToManySubjectBuilder.d.ts +1 -1
  536. package/browser/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  537. package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.d.ts +1 -1
  538. package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +1 -1
  539. package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
  540. package/browser/persistence/tree/ClosureSubjectExecutor.d.ts +2 -2
  541. package/browser/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  542. package/browser/persistence/tree/MaterializedPathSubjectExecutor.d.ts +2 -2
  543. package/browser/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  544. package/browser/persistence/tree/NestedSetSubjectExecutor.d.ts +4 -4
  545. package/browser/persistence/tree/NestedSetSubjectExecutor.js +2 -2
  546. package/browser/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
  547. package/browser/platform/BrowserPlatformTools.js +2 -2
  548. package/browser/platform/BrowserPlatformTools.js.map +1 -1
  549. package/browser/platform/PlatformTools.d.ts +2 -0
  550. package/browser/platform/PlatformTools.js +6 -0
  551. package/browser/platform/PlatformTools.js.map +1 -1
  552. package/browser/query-builder/Alias.d.ts +1 -1
  553. package/browser/query-builder/Alias.js.map +1 -1
  554. package/browser/query-builder/Brackets.d.ts +1 -1
  555. package/browser/query-builder/Brackets.js.map +1 -1
  556. package/browser/query-builder/DeleteQueryBuilder.d.ts +6 -6
  557. package/browser/query-builder/DeleteQueryBuilder.js.map +1 -1
  558. package/browser/query-builder/InsertOrUpdateOptions.d.ts +2 -2
  559. package/browser/query-builder/InsertOrUpdateOptions.js.map +1 -1
  560. package/browser/query-builder/InsertQueryBuilder.d.ts +5 -5
  561. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  562. package/browser/query-builder/JoinAttribute.d.ts +5 -5
  563. package/browser/query-builder/JoinAttribute.js +2 -2
  564. package/browser/query-builder/JoinAttribute.js.map +1 -1
  565. package/browser/query-builder/QueryBuilder.d.ts +18 -18
  566. package/browser/query-builder/QueryBuilder.js +3 -1
  567. package/browser/query-builder/QueryBuilder.js.map +1 -1
  568. package/browser/query-builder/QueryExpressionMap.d.ts +12 -12
  569. package/browser/query-builder/QueryExpressionMap.js.map +1 -1
  570. package/browser/query-builder/QueryPartialEntity.d.ts +4 -4
  571. package/browser/query-builder/QueryPartialEntity.js.map +1 -1
  572. package/browser/query-builder/RelationIdLoader.d.ts +4 -4
  573. package/browser/query-builder/RelationIdLoader.js +2 -2
  574. package/browser/query-builder/RelationIdLoader.js.map +1 -1
  575. package/browser/query-builder/RelationLoader.d.ts +5 -5
  576. package/browser/query-builder/RelationLoader.js.map +1 -1
  577. package/browser/query-builder/RelationQueryBuilder.d.ts +1 -1
  578. package/browser/query-builder/RelationQueryBuilder.js.map +1 -1
  579. package/browser/query-builder/RelationRemover.d.ts +2 -2
  580. package/browser/query-builder/RelationRemover.js.map +1 -1
  581. package/browser/query-builder/RelationUpdater.d.ts +2 -2
  582. package/browser/query-builder/RelationUpdater.js.map +1 -1
  583. package/browser/query-builder/ReturningResultsEntityUpdator.d.ts +6 -6
  584. package/browser/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
  585. package/browser/query-builder/SelectQueryBuilder.d.ts +18 -18
  586. package/browser/query-builder/SelectQueryBuilder.js +12 -8
  587. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  588. package/browser/query-builder/SelectQueryBuilderOption.d.ts +1 -1
  589. package/browser/query-builder/SoftDeleteQueryBuilder.d.ts +7 -7
  590. package/browser/query-builder/SoftDeleteQueryBuilder.js +1 -1
  591. package/browser/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  592. package/browser/query-builder/UpdateQueryBuilder.d.ts +7 -7
  593. package/browser/query-builder/UpdateQueryBuilder.js +3 -3
  594. package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
  595. package/browser/query-builder/WhereClause.d.ts +3 -3
  596. package/browser/query-builder/WhereClause.js.map +1 -1
  597. package/browser/query-builder/WhereExpressionBuilder.d.ts +3 -4
  598. package/browser/query-builder/WhereExpressionBuilder.js.map +1 -1
  599. package/browser/query-builder/relation-count/RelationCountAttribute.d.ts +4 -4
  600. package/browser/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
  601. package/browser/query-builder/relation-count/RelationCountLoadResult.d.ts +1 -1
  602. package/browser/query-builder/relation-count/RelationCountLoadResult.js.map +1 -1
  603. package/browser/query-builder/relation-count/RelationCountLoader.d.ts +4 -4
  604. package/browser/query-builder/relation-count/RelationCountLoader.js.map +1 -1
  605. package/browser/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.d.ts +1 -1
  606. package/browser/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js.map +1 -1
  607. package/browser/query-builder/relation-id/RelationIdAttribute.d.ts +4 -4
  608. package/browser/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
  609. package/browser/query-builder/relation-id/RelationIdLoadResult.d.ts +1 -1
  610. package/browser/query-builder/relation-id/RelationIdLoadResult.js.map +1 -1
  611. package/browser/query-builder/relation-id/RelationIdLoader.d.ts +4 -4
  612. package/browser/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  613. package/browser/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.d.ts +1 -1
  614. package/browser/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js.map +1 -1
  615. package/browser/query-builder/result/DeleteResult.d.ts +1 -1
  616. package/browser/query-builder/result/DeleteResult.js.map +1 -1
  617. package/browser/query-builder/result/InsertResult.d.ts +2 -2
  618. package/browser/query-builder/result/InsertResult.js.map +1 -1
  619. package/browser/query-builder/result/UpdateResult.d.ts +2 -2
  620. package/browser/query-builder/result/UpdateResult.js.map +1 -1
  621. package/browser/query-builder/transformer/DocumentToEntityTransformer.d.ts +2 -2
  622. package/browser/query-builder/transformer/DocumentToEntityTransformer.js.map +1 -1
  623. package/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.d.ts +3 -3
  624. package/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
  625. package/browser/query-builder/transformer/PlainObjectToNewEntityTransformer.d.ts +2 -2
  626. package/browser/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
  627. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.d.ts +8 -8
  628. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js +1 -1
  629. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  630. package/browser/query-runner/BaseQueryRunner.d.ts +11 -11
  631. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  632. package/browser/query-runner/QueryRunner.d.ts +17 -17
  633. package/browser/query-runner/QueryRunner.js.map +1 -1
  634. package/browser/repository/AbstractRepository.d.ts +6 -6
  635. package/browser/repository/AbstractRepository.js.map +1 -1
  636. package/browser/repository/BaseEntity.d.ts +41 -16
  637. package/browser/repository/BaseEntity.js +24 -0
  638. package/browser/repository/BaseEntity.js.map +1 -1
  639. package/browser/repository/EntityId.d.ts +2 -2
  640. package/browser/repository/EntityId.js.map +1 -1
  641. package/browser/repository/MongoRepository.d.ts +8 -8
  642. package/browser/repository/MongoRepository.js.map +1 -1
  643. package/browser/repository/Repository.d.ts +34 -17
  644. package/browser/repository/Repository.js +32 -8
  645. package/browser/repository/Repository.js.map +1 -1
  646. package/browser/repository/TreeRepository.d.ts +3 -3
  647. package/browser/repository/TreeRepository.js.map +1 -1
  648. package/browser/repository/UpsertOptions.d.ts +2 -2
  649. package/browser/repository/UpsertOptions.js.map +1 -1
  650. package/browser/schema-builder/MongoSchemaBuilder.d.ts +2 -2
  651. package/browser/schema-builder/MongoSchemaBuilder.js.map +1 -1
  652. package/browser/schema-builder/RdbmsSchemaBuilder.d.ts +7 -7
  653. package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  654. package/browser/schema-builder/SchemaBuilder.d.ts +1 -1
  655. package/browser/schema-builder/SchemaBuilder.js.map +1 -1
  656. package/browser/schema-builder/options/TableOptions.d.ts +6 -6
  657. package/browser/schema-builder/options/TableOptions.js.map +1 -1
  658. package/browser/schema-builder/options/ViewOptions.d.ts +1 -1
  659. package/browser/schema-builder/options/ViewOptions.js.map +1 -1
  660. package/browser/schema-builder/table/Table.d.ts +3 -3
  661. package/browser/schema-builder/table/Table.js.map +1 -1
  662. package/browser/schema-builder/table/TableCheck.d.ts +2 -2
  663. package/browser/schema-builder/table/TableCheck.js.map +1 -1
  664. package/browser/schema-builder/table/TableColumn.d.ts +1 -1
  665. package/browser/schema-builder/table/TableColumn.js.map +1 -1
  666. package/browser/schema-builder/table/TableExclusion.d.ts +2 -2
  667. package/browser/schema-builder/table/TableExclusion.js.map +1 -1
  668. package/browser/schema-builder/table/TableForeignKey.d.ts +3 -3
  669. package/browser/schema-builder/table/TableForeignKey.js.map +1 -1
  670. package/browser/schema-builder/table/TableIndex.d.ts +2 -2
  671. package/browser/schema-builder/table/TableIndex.js.map +1 -1
  672. package/browser/schema-builder/table/TableUnique.d.ts +2 -2
  673. package/browser/schema-builder/table/TableUnique.js.map +1 -1
  674. package/browser/schema-builder/util/TableUtils.d.ts +3 -3
  675. package/browser/schema-builder/util/TableUtils.js.map +1 -1
  676. package/browser/schema-builder/util/ViewUtils.d.ts +1 -1
  677. package/browser/schema-builder/util/ViewUtils.js.map +1 -1
  678. package/browser/schema-builder/view/View.d.ts +2 -2
  679. package/browser/schema-builder/view/View.js.map +1 -1
  680. package/browser/subscriber/Broadcaster.d.ts +6 -6
  681. package/browser/subscriber/Broadcaster.js.map +1 -1
  682. package/browser/subscriber/BroadcasterResult.js.map +1 -1
  683. package/browser/subscriber/EntitySubscriberInterface.d.ts +9 -9
  684. package/browser/subscriber/EntitySubscriberInterface.js.map +1 -1
  685. package/browser/subscriber/event/InsertEvent.d.ts +4 -4
  686. package/browser/subscriber/event/InsertEvent.js.map +1 -1
  687. package/browser/subscriber/event/LoadEvent.d.ts +4 -4
  688. package/browser/subscriber/event/LoadEvent.js.map +1 -1
  689. package/browser/subscriber/event/RecoverEvent.d.ts +2 -3
  690. package/browser/subscriber/event/RecoverEvent.js.map +1 -1
  691. package/browser/subscriber/event/RemoveEvent.d.ts +4 -4
  692. package/browser/subscriber/event/RemoveEvent.js.map +1 -1
  693. package/browser/subscriber/event/SoftRemoveEvent.d.ts +2 -3
  694. package/browser/subscriber/event/SoftRemoveEvent.js.map +1 -1
  695. package/browser/subscriber/event/TransactionCommitEvent.d.ts +3 -3
  696. package/browser/subscriber/event/TransactionCommitEvent.js.map +1 -1
  697. package/browser/subscriber/event/TransactionRollbackEvent.d.ts +3 -3
  698. package/browser/subscriber/event/TransactionRollbackEvent.js.map +1 -1
  699. package/browser/subscriber/event/TransactionStartEvent.d.ts +3 -3
  700. package/browser/subscriber/event/TransactionStartEvent.js.map +1 -1
  701. package/browser/subscriber/event/UpdateEvent.d.ts +7 -7
  702. package/browser/subscriber/event/UpdateEvent.js.map +1 -1
  703. package/browser/util/ApplyValueTransformers.d.ts +1 -1
  704. package/browser/util/ApplyValueTransformers.js.map +1 -1
  705. package/browser/util/DateUtils.d.ts +1 -1
  706. package/browser/util/DateUtils.js.map +1 -1
  707. package/browser/util/DepGraph.js +14 -14
  708. package/browser/util/DepGraph.js.map +1 -1
  709. package/browser/util/DirectoryExportedClassesLoader.d.ts +1 -1
  710. package/browser/util/DirectoryExportedClassesLoader.js.map +1 -1
  711. package/browser/util/InstanceChecker.d.ts +2 -2
  712. package/browser/util/InstanceChecker.js.map +1 -1
  713. package/browser/util/ObjectUtils.d.ts +1 -1
  714. package/browser/util/ObjectUtils.js.map +1 -1
  715. package/browser/util/OrmUtils.d.ts +1 -1
  716. package/browser/util/OrmUtils.js +4 -4
  717. package/browser/util/OrmUtils.js.map +1 -1
  718. package/browser/util/RandomGenerator.js +6 -6
  719. package/browser/util/RandomGenerator.js.map +1 -1
  720. package/browser/util/StringUtils.js.map +1 -1
  721. package/browser/util/TreeRepositoryUtils.d.ts +3 -3
  722. package/browser/util/TreeRepositoryUtils.js.map +1 -1
  723. package/browser/util/VersionUtils.d.ts +1 -1
  724. package/browser/util/VersionUtils.js.map +1 -1
  725. package/browser/util/escapeRegExp.d.ts +1 -1
  726. package/browser/util/escapeRegExp.js.map +1 -1
  727. package/cache/DbQueryResultCache.d.ts +4 -4
  728. package/cache/DbQueryResultCache.js +1 -1
  729. package/cache/DbQueryResultCache.js.map +1 -1
  730. package/cache/QueryResultCache.d.ts +2 -2
  731. package/cache/QueryResultCache.js.map +1 -1
  732. package/cache/QueryResultCacheFactory.d.ts +2 -2
  733. package/cache/QueryResultCacheFactory.js.map +1 -1
  734. package/cache/RedisQueryResultCache.d.ts +4 -4
  735. package/cache/RedisQueryResultCache.js.map +1 -1
  736. package/cli-ts-node-commonjs.js +0 -0
  737. package/cli-ts-node-esm.js +0 -0
  738. package/cli.js +0 -0
  739. package/commands/CacheClearCommand.d.ts +1 -1
  740. package/commands/CacheClearCommand.js.map +1 -1
  741. package/commands/CommandUtils.d.ts +2 -2
  742. package/commands/CommandUtils.js.map +1 -1
  743. package/commands/EntityCreateCommand.d.ts +1 -1
  744. package/commands/EntityCreateCommand.js.map +1 -1
  745. package/commands/InitCommand.d.ts +1 -1
  746. package/commands/InitCommand.js.map +1 -1
  747. package/commands/MigrationCreateCommand.d.ts +2 -2
  748. package/commands/MigrationCreateCommand.js.map +1 -1
  749. package/commands/MigrationGenerateCommand.d.ts +2 -2
  750. package/commands/MigrationGenerateCommand.js.map +1 -1
  751. package/commands/MigrationRevertCommand.d.ts +1 -1
  752. package/commands/MigrationRevertCommand.js.map +1 -1
  753. package/commands/MigrationRunCommand.d.ts +1 -1
  754. package/commands/MigrationRunCommand.js.map +1 -1
  755. package/commands/MigrationShowCommand.d.ts +1 -1
  756. package/commands/MigrationShowCommand.js.map +1 -1
  757. package/commands/QueryCommand.d.ts +1 -1
  758. package/commands/QueryCommand.js.map +1 -1
  759. package/commands/SchemaDropCommand.d.ts +1 -1
  760. package/commands/SchemaDropCommand.js.map +1 -1
  761. package/commands/SchemaLogCommand.d.ts +1 -1
  762. package/commands/SchemaLogCommand.js.map +1 -1
  763. package/commands/SchemaSyncCommand.d.ts +1 -1
  764. package/commands/SchemaSyncCommand.js.map +1 -1
  765. package/commands/SubscriberCreateCommand.d.ts +1 -1
  766. package/commands/SubscriberCreateCommand.js.map +1 -1
  767. package/commands/VersionCommand.d.ts +1 -1
  768. package/commands/VersionCommand.js.map +1 -1
  769. package/common/DeepPartial.d.ts +1 -1
  770. package/common/EntityTarget.d.ts +3 -3
  771. package/common/EntityTarget.js.map +1 -1
  772. package/common/MixedList.d.ts +1 -1
  773. package/common/NonNever.d.ts +1 -1
  774. package/common/ObjectType.d.ts +1 -1
  775. package/common/PickKeysByType.d.ts +6 -0
  776. package/common/PickKeysByType.js +4 -0
  777. package/common/PickKeysByType.js.map +1 -0
  778. package/common/RelationType.d.ts +1 -1
  779. package/connection/BaseConnectionOptions.d.ts +2 -2
  780. package/connection/BaseConnectionOptions.js.map +1 -1
  781. package/connection/ConnectionManager.d.ts +1 -1
  782. package/connection/ConnectionManager.js.map +1 -1
  783. package/connection/ConnectionMetadataBuilder.d.ts +5 -5
  784. package/connection/ConnectionMetadataBuilder.js.map +1 -1
  785. package/connection/ConnectionOptions.d.ts +2 -2
  786. package/connection/ConnectionOptions.js.map +1 -1
  787. package/connection/ConnectionOptionsReader.d.ts +1 -1
  788. package/connection/ConnectionOptionsReader.js.map +1 -1
  789. package/connection/options-reader/ConnectionOptionsEnvReader.d.ts +1 -1
  790. package/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
  791. package/connection/options-reader/ConnectionOptionsXmlReader.d.ts +1 -1
  792. package/connection/options-reader/ConnectionOptionsXmlReader.js.map +1 -1
  793. package/connection/options-reader/ConnectionOptionsYmlReader.d.ts +1 -1
  794. package/connection/options-reader/ConnectionOptionsYmlReader.js.map +1 -1
  795. package/container.d.ts +1 -1
  796. package/data-source/BaseDataSourceOptions.d.ts +8 -8
  797. package/data-source/BaseDataSourceOptions.js.map +1 -1
  798. package/data-source/DataSource.d.ts +21 -21
  799. package/data-source/DataSource.js +1 -1
  800. package/data-source/DataSource.js.map +1 -1
  801. package/data-source/DataSourceOptions.d.ts +19 -19
  802. package/data-source/DataSourceOptions.js.map +1 -1
  803. package/decorator/Check.js.map +1 -1
  804. package/decorator/EntityRepository.d.ts +1 -1
  805. package/decorator/EntityRepository.js.map +1 -1
  806. package/decorator/Exclusion.js.map +1 -1
  807. package/decorator/Generated.js.map +1 -1
  808. package/decorator/Index.d.ts +1 -1
  809. package/decorator/Index.js.map +1 -1
  810. package/decorator/Unique.d.ts +1 -1
  811. package/decorator/Unique.js.map +1 -1
  812. package/decorator/columns/Column.d.ts +10 -10
  813. package/decorator/columns/Column.js.map +1 -1
  814. package/decorator/columns/CreateDateColumn.d.ts +1 -1
  815. package/decorator/columns/CreateDateColumn.js.map +1 -1
  816. package/decorator/columns/DeleteDateColumn.d.ts +1 -1
  817. package/decorator/columns/DeleteDateColumn.js.map +1 -1
  818. package/decorator/columns/ObjectIdColumn.d.ts +1 -1
  819. package/decorator/columns/ObjectIdColumn.js.map +1 -1
  820. package/decorator/columns/PrimaryColumn.d.ts +3 -3
  821. package/decorator/columns/PrimaryColumn.js.map +1 -1
  822. package/decorator/columns/PrimaryGeneratedColumn.d.ts +3 -3
  823. package/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
  824. package/decorator/columns/UpdateDateColumn.d.ts +1 -1
  825. package/decorator/columns/UpdateDateColumn.js.map +1 -1
  826. package/decorator/columns/VersionColumn.d.ts +1 -1
  827. package/decorator/columns/VersionColumn.js.map +1 -1
  828. package/decorator/columns/ViewColumn.d.ts +1 -1
  829. package/decorator/columns/ViewColumn.js.map +1 -1
  830. package/decorator/columns/VirtualColumn.d.ts +2 -2
  831. package/decorator/columns/VirtualColumn.js.map +1 -1
  832. package/decorator/entity/ChildEntity.js.map +1 -1
  833. package/decorator/entity/Entity.d.ts +1 -1
  834. package/decorator/entity/Entity.js.map +1 -1
  835. package/decorator/entity/TableInheritance.d.ts +1 -1
  836. package/decorator/entity/TableInheritance.js.map +1 -1
  837. package/decorator/entity-view/ViewEntity.d.ts +1 -1
  838. package/decorator/entity-view/ViewEntity.js.map +1 -1
  839. package/decorator/listeners/AfterInsert.js.map +1 -1
  840. package/decorator/listeners/AfterLoad.js.map +1 -1
  841. package/decorator/listeners/AfterRecover.js.map +1 -1
  842. package/decorator/listeners/AfterRemove.js.map +1 -1
  843. package/decorator/listeners/AfterSoftRemove.js.map +1 -1
  844. package/decorator/listeners/AfterUpdate.js.map +1 -1
  845. package/decorator/listeners/BeforeInsert.js.map +1 -1
  846. package/decorator/listeners/BeforeRecover.js.map +1 -1
  847. package/decorator/listeners/BeforeRemove.js.map +1 -1
  848. package/decorator/listeners/BeforeSoftRemove.js.map +1 -1
  849. package/decorator/listeners/BeforeUpdate.js.map +1 -1
  850. package/decorator/listeners/EventSubscriber.js.map +1 -1
  851. package/decorator/options/ColumnCommonOptions.d.ts +1 -1
  852. package/decorator/options/ColumnCommonOptions.js.map +1 -1
  853. package/decorator/options/ColumnOptions.d.ts +3 -3
  854. package/decorator/options/ColumnOptions.js.map +1 -1
  855. package/decorator/options/EntityOptions.d.ts +1 -1
  856. package/decorator/options/EntityOptions.js.map +1 -1
  857. package/decorator/options/JoinTableMultipleColumnsOptions.d.ts +1 -1
  858. package/decorator/options/JoinTableMultipleColumnsOptions.js.map +1 -1
  859. package/decorator/options/JoinTableOptions.d.ts +1 -1
  860. package/decorator/options/JoinTableOptions.js.map +1 -1
  861. package/decorator/options/PrimaryGeneratedColumnIdentityOptions.d.ts +1 -1
  862. package/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -1
  863. package/decorator/options/PrimaryGeneratedColumnNumericOptions.d.ts +1 -1
  864. package/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
  865. package/decorator/options/RelationOptions.d.ts +3 -3
  866. package/decorator/options/RelationOptions.js.map +1 -1
  867. package/decorator/options/SpatialColumnOptions.d.ts +1 -1
  868. package/decorator/options/SpatialColumnOptions.js.map +1 -1
  869. package/decorator/options/TransactionOptions.d.ts +1 -1
  870. package/decorator/options/TransactionOptions.js.map +1 -1
  871. package/decorator/options/UniqueOptions.d.ts +1 -1
  872. package/decorator/options/UniqueOptions.js.map +1 -1
  873. package/decorator/options/ViewColumnOptions.d.ts +1 -1
  874. package/decorator/options/ViewColumnOptions.js.map +1 -1
  875. package/decorator/options/ViewEntityOptions.d.ts +1 -1
  876. package/decorator/options/ViewEntityOptions.js.map +1 -1
  877. package/decorator/options/VirtualColumnOptions.d.ts +2 -2
  878. package/decorator/options/VirtualColumnOptions.js.map +1 -1
  879. package/decorator/relations/JoinColumn.d.ts +1 -1
  880. package/decorator/relations/JoinColumn.js.map +1 -1
  881. package/decorator/relations/JoinTable.d.ts +2 -2
  882. package/decorator/relations/JoinTable.js.map +1 -1
  883. package/decorator/relations/ManyToMany.d.ts +2 -2
  884. package/decorator/relations/ManyToMany.js.map +1 -1
  885. package/decorator/relations/ManyToOne.d.ts +2 -2
  886. package/decorator/relations/ManyToOne.js.map +1 -1
  887. package/decorator/relations/OneToMany.d.ts +2 -2
  888. package/decorator/relations/OneToMany.js.map +1 -1
  889. package/decorator/relations/OneToOne.d.ts +2 -2
  890. package/decorator/relations/OneToOne.js.map +1 -1
  891. package/decorator/relations/RelationCount.d.ts +1 -1
  892. package/decorator/relations/RelationCount.js.map +1 -1
  893. package/decorator/relations/RelationId.d.ts +1 -1
  894. package/decorator/relations/RelationId.js.map +1 -1
  895. package/decorator/tree/Tree.d.ts +2 -2
  896. package/decorator/tree/Tree.js.map +1 -1
  897. package/decorator/tree/TreeChildren.js.map +1 -1
  898. package/decorator/tree/TreeLevelColumn.js.map +1 -1
  899. package/decorator/tree/TreeParent.d.ts +1 -1
  900. package/decorator/tree/TreeParent.js.map +1 -1
  901. package/driver/Driver.d.ts +17 -17
  902. package/driver/Driver.js.map +1 -1
  903. package/driver/DriverFactory.d.ts +2 -2
  904. package/driver/DriverFactory.js.map +1 -1
  905. package/driver/DriverUtils.d.ts +1 -1
  906. package/driver/DriverUtils.js +2 -2
  907. package/driver/DriverUtils.js.map +1 -1
  908. package/driver/SqlInMemory.d.ts +1 -1
  909. package/driver/SqlInMemory.js.map +1 -1
  910. package/driver/aurora-mysql/AuroraMysqlConnection.d.ts +4 -4
  911. package/driver/aurora-mysql/AuroraMysqlConnection.js.map +1 -1
  912. package/driver/aurora-mysql/AuroraMysqlConnectionOptions.d.ts +2 -2
  913. package/driver/aurora-mysql/AuroraMysqlConnectionOptions.js.map +1 -1
  914. package/driver/aurora-mysql/AuroraMysqlDriver.d.ts +17 -17
  915. package/driver/aurora-mysql/AuroraMysqlDriver.js +2 -2
  916. package/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  917. package/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts +6 -6
  918. package/driver/aurora-mysql/AuroraMysqlQueryRunner.js +1 -1
  919. package/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
  920. package/driver/aurora-postgres/AuroraPostgresConnectionOptions.d.ts +1 -1
  921. package/driver/aurora-postgres/AuroraPostgresConnectionOptions.js.map +1 -1
  922. package/driver/aurora-postgres/AuroraPostgresDriver.d.ts +5 -5
  923. package/driver/aurora-postgres/AuroraPostgresDriver.js.map +1 -1
  924. package/driver/aurora-postgres/AuroraPostgresQueryRunner.d.ts +4 -4
  925. package/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
  926. package/driver/better-sqlite3/BetterSqlite3ConnectionOptions.d.ts +7 -1
  927. package/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js.map +1 -1
  928. package/driver/better-sqlite3/BetterSqlite3Driver.d.ts +5 -5
  929. package/driver/better-sqlite3/BetterSqlite3Driver.js +3 -1
  930. package/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  931. package/driver/better-sqlite3/BetterSqlite3QueryRunner.d.ts +1 -1
  932. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  933. package/driver/capacitor/CapacitorConnectionOptions.d.ts +1 -1
  934. package/driver/capacitor/CapacitorConnectionOptions.js.map +1 -1
  935. package/driver/capacitor/CapacitorDriver.d.ts +4 -4
  936. package/driver/capacitor/CapacitorDriver.js.map +1 -1
  937. package/driver/capacitor/CapacitorQueryRunner.d.ts +2 -2
  938. package/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
  939. package/driver/cockroachdb/CockroachConnectionCredentialsOptions.d.ts +1 -1
  940. package/driver/cockroachdb/CockroachConnectionCredentialsOptions.js.map +1 -1
  941. package/driver/cockroachdb/CockroachConnectionOptions.d.ts +2 -2
  942. package/driver/cockroachdb/CockroachConnectionOptions.js.map +1 -1
  943. package/driver/cockroachdb/CockroachDriver.d.ts +18 -18
  944. package/driver/cockroachdb/CockroachDriver.js +2 -2
  945. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  946. package/driver/cockroachdb/CockroachQueryRunner.d.ts +5 -5
  947. package/driver/cockroachdb/CockroachQueryRunner.js +2 -2
  948. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  949. package/driver/cordova/CordovaConnectionOptions.d.ts +1 -1
  950. package/driver/cordova/CordovaConnectionOptions.js.map +1 -1
  951. package/driver/cordova/CordovaDriver.d.ts +4 -4
  952. package/driver/cordova/CordovaDriver.js.map +1 -1
  953. package/driver/cordova/CordovaQueryRunner.d.ts +2 -2
  954. package/driver/cordova/CordovaQueryRunner.js +1 -1
  955. package/driver/cordova/CordovaQueryRunner.js.map +1 -1
  956. package/driver/expo/ExpoConnectionOptions.d.ts +1 -1
  957. package/driver/expo/ExpoConnectionOptions.js.map +1 -1
  958. package/driver/expo/ExpoDriver.d.ts +4 -4
  959. package/driver/expo/ExpoDriver.js.map +1 -1
  960. package/driver/expo/ExpoQueryRunner.d.ts +1 -1
  961. package/driver/expo/ExpoQueryRunner.js +1 -1
  962. package/driver/expo/ExpoQueryRunner.js.map +1 -1
  963. package/driver/mongodb/MongoConnectionOptions.d.ts +2 -2
  964. package/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  965. package/driver/mongodb/MongoDriver.d.ts +17 -17
  966. package/driver/mongodb/MongoDriver.js.map +1 -1
  967. package/driver/mongodb/MongoQueryRunner.d.ts +16 -16
  968. package/driver/mongodb/MongoQueryRunner.js.map +1 -1
  969. package/driver/mongodb/typings.d.ts +6 -6
  970. package/driver/mysql/MysqlConnectionOptions.d.ts +2 -2
  971. package/driver/mysql/MysqlConnectionOptions.js.map +1 -1
  972. package/driver/mysql/MysqlDriver.d.ts +17 -17
  973. package/driver/mysql/MysqlDriver.js +2 -2
  974. package/driver/mysql/MysqlDriver.js.map +1 -1
  975. package/driver/mysql/MysqlQueryRunner.d.ts +7 -7
  976. package/driver/mysql/MysqlQueryRunner.js +1 -1
  977. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  978. package/driver/nativescript/NativescriptConnectionOptions.d.ts +1 -1
  979. package/driver/nativescript/NativescriptConnectionOptions.js.map +1 -1
  980. package/driver/nativescript/NativescriptDriver.d.ts +5 -5
  981. package/driver/nativescript/NativescriptDriver.js.map +1 -1
  982. package/driver/nativescript/NativescriptQueryRunner.d.ts +2 -2
  983. package/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  984. package/driver/oracle/OracleConnectionOptions.d.ts +2 -2
  985. package/driver/oracle/OracleConnectionOptions.js.map +1 -1
  986. package/driver/oracle/OracleDriver.d.ts +17 -17
  987. package/driver/oracle/OracleDriver.js +2 -2
  988. package/driver/oracle/OracleDriver.js.map +1 -1
  989. package/driver/oracle/OracleQueryRunner.d.ts +6 -6
  990. package/driver/oracle/OracleQueryRunner.js +2 -2
  991. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  992. package/driver/postgres/PostgresConnectionCredentialsOptions.d.ts +1 -1
  993. package/driver/postgres/PostgresConnectionCredentialsOptions.js.map +1 -1
  994. package/driver/postgres/PostgresConnectionOptions.d.ts +2 -2
  995. package/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  996. package/driver/postgres/PostgresDriver.d.ts +18 -18
  997. package/driver/postgres/PostgresDriver.js +2 -2
  998. package/driver/postgres/PostgresDriver.js.map +1 -1
  999. package/driver/postgres/PostgresQueryRunner.d.ts +5 -5
  1000. package/driver/postgres/PostgresQueryRunner.js +3 -3
  1001. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  1002. package/driver/react-native/ReactNativeConnectionOptions.d.ts +1 -1
  1003. package/driver/react-native/ReactNativeConnectionOptions.js.map +1 -1
  1004. package/driver/react-native/ReactNativeDriver.d.ts +4 -4
  1005. package/driver/react-native/ReactNativeDriver.js.map +1 -1
  1006. package/driver/react-native/ReactNativeQueryRunner.d.ts +2 -2
  1007. package/driver/react-native/ReactNativeQueryRunner.js +1 -1
  1008. package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  1009. package/driver/sap/SapConnectionOptions.d.ts +2 -2
  1010. package/driver/sap/SapConnectionOptions.js.map +1 -1
  1011. package/driver/sap/SapDriver.d.ts +10 -10
  1012. package/driver/sap/SapDriver.js +2 -2
  1013. package/driver/sap/SapDriver.js.map +1 -1
  1014. package/driver/sap/SapQueryRunner.d.ts +6 -6
  1015. package/driver/sap/SapQueryRunner.js +1 -1
  1016. package/driver/sap/SapQueryRunner.js.map +1 -1
  1017. package/driver/spanner/SpannerConnectionOptions.d.ts +2 -2
  1018. package/driver/spanner/SpannerConnectionOptions.js.map +1 -1
  1019. package/driver/spanner/SpannerDriver.d.ts +12 -12
  1020. package/driver/spanner/SpannerDriver.js +3 -3
  1021. package/driver/spanner/SpannerDriver.js.map +1 -1
  1022. package/driver/spanner/SpannerQueryRunner.d.ts +6 -6
  1023. package/driver/spanner/SpannerQueryRunner.js +7 -7
  1024. package/driver/spanner/SpannerQueryRunner.js.map +1 -1
  1025. package/driver/sqlite/SqliteConnectionOptions.d.ts +1 -1
  1026. package/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
  1027. package/driver/sqlite/SqliteDriver.d.ts +5 -5
  1028. package/driver/sqlite/SqliteDriver.js.map +1 -1
  1029. package/driver/sqlite/SqliteQueryRunner.d.ts +1 -1
  1030. package/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  1031. package/driver/sqlite-abstract/AbstractSqliteDriver.d.ts +18 -18
  1032. package/driver/sqlite-abstract/AbstractSqliteDriver.js +13 -1
  1033. package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  1034. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +5 -5
  1035. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +10 -10
  1036. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  1037. package/driver/sqljs/SqljsConnectionOptions.d.ts +1 -1
  1038. package/driver/sqljs/SqljsConnectionOptions.js.map +1 -1
  1039. package/driver/sqljs/SqljsDriver.d.ts +5 -5
  1040. package/driver/sqljs/SqljsDriver.js +1 -1
  1041. package/driver/sqljs/SqljsDriver.js.map +1 -1
  1042. package/driver/sqljs/SqljsQueryRunner.d.ts +1 -1
  1043. package/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  1044. package/driver/sqlserver/SqlServerConnectionCredentialsOptions.d.ts +8 -8
  1045. package/driver/sqlserver/SqlServerConnectionCredentialsOptions.js.map +1 -1
  1046. package/driver/sqlserver/SqlServerConnectionOptions.d.ts +2 -2
  1047. package/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
  1048. package/driver/sqlserver/SqlServerDriver.d.ts +16 -16
  1049. package/driver/sqlserver/SqlServerDriver.js +2 -2
  1050. package/driver/sqlserver/SqlServerDriver.js.map +1 -1
  1051. package/driver/sqlserver/SqlServerQueryRunner.d.ts +7 -7
  1052. package/driver/sqlserver/SqlServerQueryRunner.js +4 -4
  1053. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  1054. package/driver/types/ColumnTypes.d.ts +7 -7
  1055. package/driver/types/DatabaseType.d.ts +1 -1
  1056. package/driver/types/GeoJsonTypes.d.ts +12 -12
  1057. package/driver/types/IsolationLevel.d.ts +1 -1
  1058. package/driver/types/MappedColumnTypes.d.ts +1 -1
  1059. package/driver/types/MappedColumnTypes.js.map +1 -1
  1060. package/driver/types/ReplicationMode.d.ts +1 -1
  1061. package/driver/types/UpsertType.d.ts +1 -1
  1062. package/entity-manager/EntityManager.d.ts +37 -19
  1063. package/entity-manager/EntityManager.js +32 -0
  1064. package/entity-manager/EntityManager.js.map +1 -1
  1065. package/entity-manager/EntityManagerFactory.d.ts +2 -2
  1066. package/entity-manager/EntityManagerFactory.js.map +1 -1
  1067. package/entity-manager/MongoEntityManager.d.ts +12 -12
  1068. package/entity-manager/MongoEntityManager.js +5 -5
  1069. package/entity-manager/MongoEntityManager.js.map +1 -1
  1070. package/entity-manager/SqljsEntityManager.d.ts +2 -2
  1071. package/entity-manager/SqljsEntityManager.js.map +1 -1
  1072. package/entity-schema/EntitySchema.d.ts +1 -1
  1073. package/entity-schema/EntitySchema.js.map +1 -1
  1074. package/entity-schema/EntitySchemaColumnOptions.d.ts +3 -3
  1075. package/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
  1076. package/entity-schema/EntitySchemaEmbeddedColumnOptions.d.ts +1 -1
  1077. package/entity-schema/EntitySchemaEmbeddedColumnOptions.js.map +1 -1
  1078. package/entity-schema/EntitySchemaOptions.d.ts +10 -10
  1079. package/entity-schema/EntitySchemaOptions.js.map +1 -1
  1080. package/entity-schema/EntitySchemaRelationIdOptions.d.ts +1 -1
  1081. package/entity-schema/EntitySchemaRelationIdOptions.js.map +1 -1
  1082. package/entity-schema/EntitySchemaRelationOptions.d.ts +8 -8
  1083. package/entity-schema/EntitySchemaRelationOptions.js.map +1 -1
  1084. package/entity-schema/EntitySchemaTransformer.d.ts +1 -1
  1085. package/entity-schema/EntitySchemaTransformer.js.map +1 -1
  1086. package/entity-schema/EntitySchemaUniqueOptions.d.ts +1 -1
  1087. package/entity-schema/EntitySchemaUniqueOptions.js.map +1 -1
  1088. package/error/CannotCreateEntityIdMapError.d.ts +1 -1
  1089. package/error/CannotCreateEntityIdMapError.js.map +1 -1
  1090. package/error/DataTypeNotSupportedError.d.ts +3 -3
  1091. package/error/DataTypeNotSupportedError.js.map +1 -1
  1092. package/error/EntityMetadataNotFoundError.d.ts +1 -1
  1093. package/error/EntityMetadataNotFoundError.js.map +1 -1
  1094. package/error/EntityNotFoundError.d.ts +1 -1
  1095. package/error/EntityNotFoundError.js.map +1 -1
  1096. package/error/EntityPropertyNotFoundError.d.ts +1 -1
  1097. package/error/EntityPropertyNotFoundError.js.map +1 -1
  1098. package/error/ForbiddenTransactionModeOverrideError.d.ts +1 -1
  1099. package/error/ForbiddenTransactionModeOverrideError.js.map +1 -1
  1100. package/error/InitializedRelationError.d.ts +1 -1
  1101. package/error/InitializedRelationError.js.map +1 -1
  1102. package/error/MissingDeleteDateColumnError.d.ts +1 -1
  1103. package/error/MissingDeleteDateColumnError.js.map +1 -1
  1104. package/error/MissingJoinColumnError.d.ts +2 -2
  1105. package/error/MissingJoinColumnError.js.map +1 -1
  1106. package/error/MissingJoinTableError.d.ts +2 -2
  1107. package/error/MissingJoinTableError.js.map +1 -1
  1108. package/error/MissingPrimaryColumnError.d.ts +1 -1
  1109. package/error/MissingPrimaryColumnError.js.map +1 -1
  1110. package/error/RepositoryNotTreeError.d.ts +1 -1
  1111. package/error/RepositoryNotTreeError.js.map +1 -1
  1112. package/error/SubjectRemovedAndUpdatedError.d.ts +1 -1
  1113. package/error/SubjectRemovedAndUpdatedError.js.map +1 -1
  1114. package/error/SubjectWithoutIdentifierError.d.ts +1 -1
  1115. package/error/SubjectWithoutIdentifierError.js.map +1 -1
  1116. package/error/TreeRepositoryNotSupportedError.d.ts +1 -1
  1117. package/error/TreeRepositoryNotSupportedError.js.map +1 -1
  1118. package/error/UsingJoinColumnIsNotAllowedError.d.ts +2 -2
  1119. package/error/UsingJoinColumnIsNotAllowedError.js.map +1 -1
  1120. package/error/UsingJoinColumnOnlyOnOneSideAllowedError.d.ts +2 -2
  1121. package/error/UsingJoinColumnOnlyOnOneSideAllowedError.js.map +1 -1
  1122. package/error/UsingJoinTableIsNotAllowedError.d.ts +2 -2
  1123. package/error/UsingJoinTableIsNotAllowedError.js.map +1 -1
  1124. package/error/UsingJoinTableOnlyOnOneSideAllowedError.d.ts +2 -2
  1125. package/error/UsingJoinTableOnlyOnOneSideAllowedError.js.map +1 -1
  1126. package/find-options/FindManyOptions.d.ts +1 -1
  1127. package/find-options/FindManyOptions.js.map +1 -1
  1128. package/find-options/FindOneOptions.d.ts +5 -5
  1129. package/find-options/FindOneOptions.js.map +1 -1
  1130. package/find-options/FindOperator.d.ts +3 -3
  1131. package/find-options/FindOperator.js.map +1 -1
  1132. package/find-options/FindOperatorType.d.ts +1 -1
  1133. package/find-options/FindOperatorType.js.map +1 -1
  1134. package/find-options/FindOptionsOrder.d.ts +4 -4
  1135. package/find-options/FindOptionsOrder.js.map +1 -1
  1136. package/find-options/FindOptionsRelations.d.ts +4 -4
  1137. package/find-options/FindOptionsRelations.js.map +1 -1
  1138. package/find-options/FindOptionsSelect.d.ts +4 -4
  1139. package/find-options/FindOptionsSelect.js.map +1 -1
  1140. package/find-options/FindOptionsUtils.d.ts +6 -6
  1141. package/find-options/FindOptionsUtils.js +1 -1
  1142. package/find-options/FindOptionsUtils.js.map +1 -1
  1143. package/find-options/FindOptionsWhere.d.ts +9 -5
  1144. package/find-options/FindOptionsWhere.js.map +1 -1
  1145. package/find-options/OrderByCondition.d.ts +1 -1
  1146. package/find-options/mongodb/MongoFindManyOptions.d.ts +1 -1
  1147. package/find-options/mongodb/MongoFindManyOptions.js.map +1 -1
  1148. package/find-options/mongodb/MongoFindOneOptions.d.ts +3 -3
  1149. package/find-options/mongodb/MongoFindOneOptions.js.map +1 -1
  1150. package/find-options/operator/Equal.d.ts +1 -1
  1151. package/find-options/operator/Equal.js.map +1 -1
  1152. package/find-options/operator/JsonContains.d.ts +6 -0
  1153. package/find-options/operator/JsonContains.js +14 -0
  1154. package/find-options/operator/JsonContains.js.map +1 -0
  1155. package/find-options/operator/Raw.d.ts +1 -1
  1156. package/find-options/operator/Raw.js.map +1 -1
  1157. package/globals.d.ts +12 -12
  1158. package/globals.js.map +1 -1
  1159. package/index.d.ts +3 -0
  1160. package/index.js +5 -1
  1161. package/index.js.map +1 -1
  1162. package/index.mjs +6 -0
  1163. package/logger/AbstractLogger.d.ts +49 -0
  1164. package/logger/AbstractLogger.js +234 -0
  1165. package/logger/AbstractLogger.js.map +1 -0
  1166. package/logger/AdvancedConsoleLogger.d.ts +6 -34
  1167. package/logger/AdvancedConsoleLogger.js +41 -106
  1168. package/logger/AdvancedConsoleLogger.js.map +1 -1
  1169. package/logger/DebugLogger.d.ts +10 -30
  1170. package/logger/DebugLogger.js +56 -75
  1171. package/logger/DebugLogger.js.map +1 -1
  1172. package/logger/FileLogger.d.ts +8 -34
  1173. package/logger/FileLogger.js +50 -97
  1174. package/logger/FileLogger.js.map +1 -1
  1175. package/logger/Logger.d.ts +32 -1
  1176. package/logger/Logger.js.map +1 -1
  1177. package/logger/LoggerFactory.d.ts +2 -2
  1178. package/logger/LoggerFactory.js.map +1 -1
  1179. package/logger/LoggerOptions.d.ts +3 -2
  1180. package/logger/LoggerOptions.js.map +1 -1
  1181. package/logger/SimpleConsoleLogger.d.ts +6 -34
  1182. package/logger/SimpleConsoleLogger.js +43 -106
  1183. package/logger/SimpleConsoleLogger.js.map +1 -1
  1184. package/metadata/CheckMetadata.d.ts +3 -3
  1185. package/metadata/CheckMetadata.js.map +1 -1
  1186. package/metadata/ColumnMetadata.d.ts +8 -8
  1187. package/metadata/ColumnMetadata.js.map +1 -1
  1188. package/metadata/EmbeddedMetadata.d.ts +10 -10
  1189. package/metadata/EmbeddedMetadata.js +1 -1
  1190. package/metadata/EmbeddedMetadata.js.map +1 -1
  1191. package/metadata/EntityListenerMetadata.d.ts +5 -5
  1192. package/metadata/EntityListenerMetadata.js.map +1 -1
  1193. package/metadata/EntityMetadata.d.ts +20 -20
  1194. package/metadata/EntityMetadata.js.map +1 -1
  1195. package/metadata/ExclusionMetadata.d.ts +3 -3
  1196. package/metadata/ExclusionMetadata.js.map +1 -1
  1197. package/metadata/ForeignKeyMetadata.d.ts +6 -6
  1198. package/metadata/ForeignKeyMetadata.js.map +1 -1
  1199. package/metadata/IndexMetadata.d.ts +5 -5
  1200. package/metadata/IndexMetadata.js.map +1 -1
  1201. package/metadata/RelationCountMetadata.d.ts +4 -4
  1202. package/metadata/RelationCountMetadata.js.map +1 -1
  1203. package/metadata/RelationIdMetadata.d.ts +5 -5
  1204. package/metadata/RelationIdMetadata.js.map +1 -1
  1205. package/metadata/RelationMetadata.d.ts +10 -10
  1206. package/metadata/RelationMetadata.js.map +1 -1
  1207. package/metadata/UniqueMetadata.d.ts +6 -6
  1208. package/metadata/UniqueMetadata.js.map +1 -1
  1209. package/metadata/types/ClosureTreeOptions.d.ts +1 -1
  1210. package/metadata/types/ClosureTreeOptions.js.map +1 -1
  1211. package/metadata/types/DeferrableType.d.ts +1 -1
  1212. package/metadata/types/EventListenerTypes.d.ts +1 -1
  1213. package/metadata/types/OnDeleteType.d.ts +1 -1
  1214. package/metadata/types/OnUpdateType.d.ts +1 -1
  1215. package/metadata/types/PropertyTypeInFunction.d.ts +1 -1
  1216. package/metadata/types/RelationTypeInFunction.d.ts +2 -2
  1217. package/metadata/types/RelationTypeInFunction.js.map +1 -1
  1218. package/metadata/types/RelationTypes.d.ts +1 -1
  1219. package/metadata/types/TableTypes.d.ts +1 -1
  1220. package/metadata/types/TreeTypes.d.ts +1 -1
  1221. package/metadata-args/ColumnMetadataArgs.d.ts +2 -2
  1222. package/metadata-args/ColumnMetadataArgs.js.map +1 -1
  1223. package/metadata-args/EntityListenerMetadataArgs.d.ts +1 -1
  1224. package/metadata-args/EntityListenerMetadataArgs.js.map +1 -1
  1225. package/metadata-args/EntityRepositoryMetadataArgs.d.ts +1 -1
  1226. package/metadata-args/EntityRepositoryMetadataArgs.js.map +1 -1
  1227. package/metadata-args/InheritanceMetadataArgs.d.ts +1 -1
  1228. package/metadata-args/InheritanceMetadataArgs.js.map +1 -1
  1229. package/metadata-args/JoinTableMetadataArgs.d.ts +1 -1
  1230. package/metadata-args/JoinTableMetadataArgs.js.map +1 -1
  1231. package/metadata-args/MetadataArgsStorage.d.ts +22 -22
  1232. package/metadata-args/MetadataArgsStorage.js.map +1 -1
  1233. package/metadata-args/RelationCountMetadataArgs.d.ts +1 -1
  1234. package/metadata-args/RelationCountMetadataArgs.js.map +1 -1
  1235. package/metadata-args/RelationIdMetadataArgs.d.ts +1 -1
  1236. package/metadata-args/RelationIdMetadataArgs.js.map +1 -1
  1237. package/metadata-args/RelationMetadataArgs.d.ts +4 -4
  1238. package/metadata-args/RelationMetadataArgs.js.map +1 -1
  1239. package/metadata-args/TableMetadataArgs.d.ts +3 -3
  1240. package/metadata-args/TableMetadataArgs.js.map +1 -1
  1241. package/metadata-args/TreeMetadataArgs.d.ts +2 -2
  1242. package/metadata-args/TreeMetadataArgs.js.map +1 -1
  1243. package/metadata-args/UniqueMetadataArgs.d.ts +1 -1
  1244. package/metadata-args/UniqueMetadataArgs.js.map +1 -1
  1245. package/metadata-args/types/ColumnMode.d.ts +1 -1
  1246. package/metadata-builder/ClosureJunctionEntityMetadataBuilder.d.ts +1 -1
  1247. package/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
  1248. package/metadata-builder/EntityMetadataBuilder.d.ts +4 -4
  1249. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  1250. package/metadata-builder/EntityMetadataValidator.d.ts +2 -2
  1251. package/metadata-builder/EntityMetadataValidator.js.map +1 -1
  1252. package/metadata-builder/JunctionEntityMetadataBuilder.d.ts +3 -3
  1253. package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  1254. package/metadata-builder/RelationJoinColumnBuilder.d.ts +3 -3
  1255. package/metadata-builder/RelationJoinColumnBuilder.js +2 -1
  1256. package/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  1257. package/migration/Migration.d.ts +1 -1
  1258. package/migration/Migration.js.map +1 -1
  1259. package/migration/MigrationExecutor.d.ts +2 -2
  1260. package/migration/MigrationExecutor.js +3 -3
  1261. package/migration/MigrationExecutor.js.map +1 -1
  1262. package/migration/MigrationInterface.d.ts +1 -1
  1263. package/migration/MigrationInterface.js.map +1 -1
  1264. package/naming-strategy/DefaultNamingStrategy.d.ts +2 -2
  1265. package/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  1266. package/naming-strategy/LegacyOracleNamingStrategy.d.ts +21 -0
  1267. package/naming-strategy/LegacyOracleNamingStrategy.js +50 -0
  1268. package/naming-strategy/LegacyOracleNamingStrategy.js.map +1 -0
  1269. package/naming-strategy/NamingStrategyInterface.d.ts +2 -2
  1270. package/naming-strategy/NamingStrategyInterface.js.map +1 -1
  1271. package/package.json +273 -1
  1272. package/persistence/EntityPersistExecutor.d.ts +5 -5
  1273. package/persistence/EntityPersistExecutor.js +1 -1
  1274. package/persistence/EntityPersistExecutor.js.map +1 -1
  1275. package/persistence/Subject.d.ts +5 -5
  1276. package/persistence/Subject.js.map +1 -1
  1277. package/persistence/SubjectChangeMap.d.ts +3 -3
  1278. package/persistence/SubjectChangeMap.js.map +1 -1
  1279. package/persistence/SubjectChangedColumnsComputer.d.ts +1 -1
  1280. package/persistence/SubjectChangedColumnsComputer.js.map +1 -1
  1281. package/persistence/SubjectDatabaseEntityLoader.d.ts +3 -3
  1282. package/persistence/SubjectDatabaseEntityLoader.js +1 -1
  1283. package/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  1284. package/persistence/SubjectExecutor.d.ts +4 -4
  1285. package/persistence/SubjectExecutor.js +1 -1
  1286. package/persistence/SubjectExecutor.js.map +1 -1
  1287. package/persistence/SubjectTopoligicalSorter.d.ts +2 -2
  1288. package/persistence/SubjectTopoligicalSorter.js +7 -11
  1289. package/persistence/SubjectTopoligicalSorter.js.map +1 -1
  1290. package/persistence/subject-builder/CascadesSubjectBuilder.d.ts +1 -1
  1291. package/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  1292. package/persistence/subject-builder/ManyToManySubjectBuilder.d.ts +2 -2
  1293. package/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  1294. package/persistence/subject-builder/OneToManySubjectBuilder.d.ts +1 -1
  1295. package/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  1296. package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.d.ts +1 -1
  1297. package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +1 -1
  1298. package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
  1299. package/persistence/tree/ClosureSubjectExecutor.d.ts +2 -2
  1300. package/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  1301. package/persistence/tree/MaterializedPathSubjectExecutor.d.ts +2 -2
  1302. package/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  1303. package/persistence/tree/NestedSetSubjectExecutor.d.ts +4 -4
  1304. package/persistence/tree/NestedSetSubjectExecutor.js +2 -2
  1305. package/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
  1306. package/platform/PlatformTools.d.ts +2 -0
  1307. package/platform/PlatformTools.js +6 -0
  1308. package/platform/PlatformTools.js.map +1 -1
  1309. package/query-builder/Alias.d.ts +1 -1
  1310. package/query-builder/Alias.js.map +1 -1
  1311. package/query-builder/Brackets.d.ts +1 -1
  1312. package/query-builder/Brackets.js.map +1 -1
  1313. package/query-builder/DeleteQueryBuilder.d.ts +6 -6
  1314. package/query-builder/DeleteQueryBuilder.js.map +1 -1
  1315. package/query-builder/InsertOrUpdateOptions.d.ts +2 -2
  1316. package/query-builder/InsertOrUpdateOptions.js.map +1 -1
  1317. package/query-builder/InsertQueryBuilder.d.ts +5 -5
  1318. package/query-builder/InsertQueryBuilder.js.map +1 -1
  1319. package/query-builder/JoinAttribute.d.ts +5 -5
  1320. package/query-builder/JoinAttribute.js +2 -2
  1321. package/query-builder/JoinAttribute.js.map +1 -1
  1322. package/query-builder/QueryBuilder.d.ts +18 -18
  1323. package/query-builder/QueryBuilder.js +3 -1
  1324. package/query-builder/QueryBuilder.js.map +1 -1
  1325. package/query-builder/QueryExpressionMap.d.ts +12 -12
  1326. package/query-builder/QueryExpressionMap.js.map +1 -1
  1327. package/query-builder/QueryPartialEntity.d.ts +4 -4
  1328. package/query-builder/QueryPartialEntity.js.map +1 -1
  1329. package/query-builder/RelationIdLoader.d.ts +4 -4
  1330. package/query-builder/RelationIdLoader.js +2 -2
  1331. package/query-builder/RelationIdLoader.js.map +1 -1
  1332. package/query-builder/RelationLoader.d.ts +5 -5
  1333. package/query-builder/RelationLoader.js.map +1 -1
  1334. package/query-builder/RelationQueryBuilder.d.ts +1 -1
  1335. package/query-builder/RelationQueryBuilder.js.map +1 -1
  1336. package/query-builder/RelationRemover.d.ts +2 -2
  1337. package/query-builder/RelationRemover.js.map +1 -1
  1338. package/query-builder/RelationUpdater.d.ts +2 -2
  1339. package/query-builder/RelationUpdater.js.map +1 -1
  1340. package/query-builder/ReturningResultsEntityUpdator.d.ts +6 -6
  1341. package/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
  1342. package/query-builder/SelectQueryBuilder.d.ts +18 -18
  1343. package/query-builder/SelectQueryBuilder.js +12 -8
  1344. package/query-builder/SelectQueryBuilder.js.map +1 -1
  1345. package/query-builder/SelectQueryBuilderOption.d.ts +1 -1
  1346. package/query-builder/SoftDeleteQueryBuilder.d.ts +7 -7
  1347. package/query-builder/SoftDeleteQueryBuilder.js +1 -1
  1348. package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  1349. package/query-builder/UpdateQueryBuilder.d.ts +7 -7
  1350. package/query-builder/UpdateQueryBuilder.js +3 -3
  1351. package/query-builder/UpdateQueryBuilder.js.map +1 -1
  1352. package/query-builder/WhereClause.d.ts +3 -3
  1353. package/query-builder/WhereClause.js.map +1 -1
  1354. package/query-builder/WhereExpressionBuilder.d.ts +3 -4
  1355. package/query-builder/WhereExpressionBuilder.js.map +1 -1
  1356. package/query-builder/relation-count/RelationCountAttribute.d.ts +4 -4
  1357. package/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
  1358. package/query-builder/relation-count/RelationCountLoadResult.d.ts +1 -1
  1359. package/query-builder/relation-count/RelationCountLoadResult.js.map +1 -1
  1360. package/query-builder/relation-count/RelationCountLoader.d.ts +4 -4
  1361. package/query-builder/relation-count/RelationCountLoader.js.map +1 -1
  1362. package/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.d.ts +1 -1
  1363. package/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js.map +1 -1
  1364. package/query-builder/relation-id/RelationIdAttribute.d.ts +4 -4
  1365. package/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
  1366. package/query-builder/relation-id/RelationIdLoadResult.d.ts +1 -1
  1367. package/query-builder/relation-id/RelationIdLoadResult.js.map +1 -1
  1368. package/query-builder/relation-id/RelationIdLoader.d.ts +4 -4
  1369. package/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  1370. package/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.d.ts +1 -1
  1371. package/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js.map +1 -1
  1372. package/query-builder/result/DeleteResult.d.ts +1 -1
  1373. package/query-builder/result/DeleteResult.js.map +1 -1
  1374. package/query-builder/result/InsertResult.d.ts +2 -2
  1375. package/query-builder/result/InsertResult.js.map +1 -1
  1376. package/query-builder/result/UpdateResult.d.ts +2 -2
  1377. package/query-builder/result/UpdateResult.js.map +1 -1
  1378. package/query-builder/transformer/DocumentToEntityTransformer.d.ts +2 -2
  1379. package/query-builder/transformer/DocumentToEntityTransformer.js.map +1 -1
  1380. package/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.d.ts +3 -3
  1381. package/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
  1382. package/query-builder/transformer/PlainObjectToNewEntityTransformer.d.ts +2 -2
  1383. package/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
  1384. package/query-builder/transformer/RawSqlResultsToEntityTransformer.d.ts +8 -8
  1385. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js +1 -1
  1386. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  1387. package/query-runner/BaseQueryRunner.d.ts +11 -11
  1388. package/query-runner/BaseQueryRunner.js.map +1 -1
  1389. package/query-runner/QueryRunner.d.ts +17 -17
  1390. package/query-runner/QueryRunner.js.map +1 -1
  1391. package/repository/AbstractRepository.d.ts +6 -6
  1392. package/repository/AbstractRepository.js.map +1 -1
  1393. package/repository/BaseEntity.d.ts +41 -16
  1394. package/repository/BaseEntity.js +24 -0
  1395. package/repository/BaseEntity.js.map +1 -1
  1396. package/repository/EntityId.d.ts +2 -2
  1397. package/repository/EntityId.js.map +1 -1
  1398. package/repository/MongoRepository.d.ts +8 -8
  1399. package/repository/MongoRepository.js.map +1 -1
  1400. package/repository/Repository.d.ts +34 -17
  1401. package/repository/Repository.js +32 -8
  1402. package/repository/Repository.js.map +1 -1
  1403. package/repository/TreeRepository.d.ts +3 -3
  1404. package/repository/TreeRepository.js.map +1 -1
  1405. package/repository/UpsertOptions.d.ts +2 -2
  1406. package/repository/UpsertOptions.js.map +1 -1
  1407. package/schema-builder/MongoSchemaBuilder.d.ts +2 -2
  1408. package/schema-builder/MongoSchemaBuilder.js.map +1 -1
  1409. package/schema-builder/RdbmsSchemaBuilder.d.ts +7 -7
  1410. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  1411. package/schema-builder/SchemaBuilder.d.ts +1 -1
  1412. package/schema-builder/SchemaBuilder.js.map +1 -1
  1413. package/schema-builder/options/TableOptions.d.ts +6 -6
  1414. package/schema-builder/options/TableOptions.js.map +1 -1
  1415. package/schema-builder/options/ViewOptions.d.ts +1 -1
  1416. package/schema-builder/options/ViewOptions.js.map +1 -1
  1417. package/schema-builder/table/Table.d.ts +3 -3
  1418. package/schema-builder/table/Table.js.map +1 -1
  1419. package/schema-builder/table/TableCheck.d.ts +2 -2
  1420. package/schema-builder/table/TableCheck.js.map +1 -1
  1421. package/schema-builder/table/TableColumn.d.ts +1 -1
  1422. package/schema-builder/table/TableColumn.js.map +1 -1
  1423. package/schema-builder/table/TableExclusion.d.ts +2 -2
  1424. package/schema-builder/table/TableExclusion.js.map +1 -1
  1425. package/schema-builder/table/TableForeignKey.d.ts +3 -3
  1426. package/schema-builder/table/TableForeignKey.js.map +1 -1
  1427. package/schema-builder/table/TableIndex.d.ts +2 -2
  1428. package/schema-builder/table/TableIndex.js.map +1 -1
  1429. package/schema-builder/table/TableUnique.d.ts +2 -2
  1430. package/schema-builder/table/TableUnique.js.map +1 -1
  1431. package/schema-builder/util/TableUtils.d.ts +3 -3
  1432. package/schema-builder/util/TableUtils.js.map +1 -1
  1433. package/schema-builder/util/ViewUtils.d.ts +1 -1
  1434. package/schema-builder/util/ViewUtils.js.map +1 -1
  1435. package/schema-builder/view/View.d.ts +2 -2
  1436. package/schema-builder/view/View.js.map +1 -1
  1437. package/subscriber/Broadcaster.d.ts +6 -6
  1438. package/subscriber/Broadcaster.js.map +1 -1
  1439. package/subscriber/BroadcasterResult.js.map +1 -1
  1440. package/subscriber/EntitySubscriberInterface.d.ts +9 -9
  1441. package/subscriber/EntitySubscriberInterface.js.map +1 -1
  1442. package/subscriber/event/InsertEvent.d.ts +4 -4
  1443. package/subscriber/event/InsertEvent.js.map +1 -1
  1444. package/subscriber/event/LoadEvent.d.ts +4 -4
  1445. package/subscriber/event/LoadEvent.js.map +1 -1
  1446. package/subscriber/event/RecoverEvent.d.ts +2 -3
  1447. package/subscriber/event/RecoverEvent.js.map +1 -1
  1448. package/subscriber/event/RemoveEvent.d.ts +4 -4
  1449. package/subscriber/event/RemoveEvent.js.map +1 -1
  1450. package/subscriber/event/SoftRemoveEvent.d.ts +2 -3
  1451. package/subscriber/event/SoftRemoveEvent.js.map +1 -1
  1452. package/subscriber/event/TransactionCommitEvent.d.ts +3 -3
  1453. package/subscriber/event/TransactionCommitEvent.js.map +1 -1
  1454. package/subscriber/event/TransactionRollbackEvent.d.ts +3 -3
  1455. package/subscriber/event/TransactionRollbackEvent.js.map +1 -1
  1456. package/subscriber/event/TransactionStartEvent.d.ts +3 -3
  1457. package/subscriber/event/TransactionStartEvent.js.map +1 -1
  1458. package/subscriber/event/UpdateEvent.d.ts +7 -7
  1459. package/subscriber/event/UpdateEvent.js.map +1 -1
  1460. package/util/ApplyValueTransformers.d.ts +1 -1
  1461. package/util/ApplyValueTransformers.js.map +1 -1
  1462. package/util/DateUtils.d.ts +1 -1
  1463. package/util/DateUtils.js.map +1 -1
  1464. package/util/DepGraph.js +14 -14
  1465. package/util/DepGraph.js.map +1 -1
  1466. package/util/DirectoryExportedClassesLoader.d.ts +1 -1
  1467. package/util/DirectoryExportedClassesLoader.js.map +1 -1
  1468. package/util/InstanceChecker.d.ts +2 -2
  1469. package/util/InstanceChecker.js.map +1 -1
  1470. package/util/ObjectUtils.d.ts +1 -1
  1471. package/util/ObjectUtils.js.map +1 -1
  1472. package/util/OrmUtils.d.ts +1 -1
  1473. package/util/OrmUtils.js +4 -4
  1474. package/util/OrmUtils.js.map +1 -1
  1475. package/util/RandomGenerator.js +6 -6
  1476. package/util/RandomGenerator.js.map +1 -1
  1477. package/util/StringUtils.js.map +1 -1
  1478. package/util/TreeRepositoryUtils.d.ts +3 -3
  1479. package/util/TreeRepositoryUtils.js.map +1 -1
  1480. package/util/VersionUtils.d.ts +1 -1
  1481. package/util/VersionUtils.js.map +1 -1
  1482. package/util/escapeRegExp.d.ts +1 -1
  1483. package/util/escapeRegExp.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/metadata-builder/EntityMetadataBuilder.ts"],"names":[],"mappings":"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","file":"EntityMetadataBuilder.js","sourcesContent":["import { EntityMetadata } from \"../metadata/EntityMetadata\"\nimport { ColumnMetadata } from \"../metadata/ColumnMetadata\"\nimport { IndexMetadata } from \"../metadata/IndexMetadata\"\nimport { RelationMetadata } from \"../metadata/RelationMetadata\"\nimport { EmbeddedMetadata } from \"../metadata/EmbeddedMetadata\"\nimport { MetadataArgsStorage } from \"../metadata-args/MetadataArgsStorage\"\nimport { EmbeddedMetadataArgs } from \"../metadata-args/EmbeddedMetadataArgs\"\nimport { RelationIdMetadata } from \"../metadata/RelationIdMetadata\"\nimport { RelationCountMetadata } from \"../metadata/RelationCountMetadata\"\nimport { EventListenerTypes } from \"../metadata/types/EventListenerTypes\"\nimport { MetadataUtils } from \"./MetadataUtils\"\nimport { TableMetadataArgs } from \"../metadata-args/TableMetadataArgs\"\nimport { JunctionEntityMetadataBuilder } from \"./JunctionEntityMetadataBuilder\"\nimport { ClosureJunctionEntityMetadataBuilder } from \"./ClosureJunctionEntityMetadataBuilder\"\nimport { RelationJoinColumnBuilder } from \"./RelationJoinColumnBuilder\"\nimport { DataSource } from \"../data-source/DataSource\"\nimport { EntityListenerMetadata } from \"../metadata/EntityListenerMetadata\"\nimport { UniqueMetadata } from \"../metadata/UniqueMetadata\"\nimport { CheckMetadata } from \"../metadata/CheckMetadata\"\nimport { ExclusionMetadata } from \"../metadata/ExclusionMetadata\"\nimport { TypeORMError } from \"../error\"\nimport { DriverUtils } from \"../driver/DriverUtils\"\n\n/**\n * Builds EntityMetadata objects and all its sub-metadatas.\n */\nexport class EntityMetadataBuilder {\n // -------------------------------------------------------------------------\n // Protected Properties\n // -------------------------------------------------------------------------\n\n /**\n * Used to build entity metadatas of the junction entities.\n */\n protected junctionEntityMetadataBuilder: JunctionEntityMetadataBuilder\n\n /**\n * Used to build entity metadatas of the closure junction entities.\n */\n protected closureJunctionEntityMetadataBuilder: ClosureJunctionEntityMetadataBuilder\n\n /**\n * Used to build join columns of the relations.\n */\n protected relationJoinColumnBuilder: RelationJoinColumnBuilder\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(\n private connection: DataSource,\n private metadataArgsStorage: MetadataArgsStorage,\n ) {\n this.junctionEntityMetadataBuilder = new JunctionEntityMetadataBuilder(\n connection,\n )\n this.closureJunctionEntityMetadataBuilder =\n new ClosureJunctionEntityMetadataBuilder(connection)\n this.relationJoinColumnBuilder = new RelationJoinColumnBuilder(\n connection,\n )\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Builds a complete entity metadatas for the given entity classes.\n */\n build(entityClasses?: Function[]): EntityMetadata[] {\n // if entity classes to filter entities by are given then do filtering, otherwise use all\n const allTables = entityClasses\n ? this.metadataArgsStorage.filterTables(entityClasses)\n : this.metadataArgsStorage.tables\n\n // filter out table metadata args for those we really create entity metadatas and tables in the db\n const realTables = allTables.filter(\n (table) =>\n table.type === \"regular\" ||\n table.type === \"closure\" ||\n table.type === \"entity-child\" ||\n table.type === \"view\",\n )\n\n // create entity metadatas for a user defined entities (marked with @Entity decorator or loaded from entity schemas)\n const entityMetadatas = realTables.map((tableArgs) =>\n this.createEntityMetadata(tableArgs),\n )\n\n // compute parent entity metadatas for table inheritance\n entityMetadatas.forEach((entityMetadata) =>\n this.computeParentEntityMetadata(entityMetadatas, entityMetadata),\n )\n\n // after all metadatas created we set child entity metadatas for table inheritance\n entityMetadatas.forEach((metadata) => {\n metadata.childEntityMetadatas = entityMetadatas.filter(\n (childMetadata) => {\n return (\n typeof metadata.target === \"function\" &&\n typeof childMetadata.target === \"function\" &&\n MetadataUtils.isInherited(\n childMetadata.target,\n metadata.target,\n )\n )\n },\n )\n })\n\n // build entity metadata (step0), first for non-single-table-inherited entity metadatas (dependant)\n entityMetadatas\n .filter(\n (entityMetadata) => entityMetadata.tableType !== \"entity-child\",\n )\n .forEach((entityMetadata) => entityMetadata.build())\n\n // build entity metadata (step0), now for single-table-inherited entity metadatas (dependant)\n entityMetadatas\n .filter(\n (entityMetadata) => entityMetadata.tableType === \"entity-child\",\n )\n .forEach((entityMetadata) => entityMetadata.build())\n\n // compute entity metadata columns, relations, etc. first for the regular, non-single-table-inherited entity metadatas\n entityMetadatas\n .filter(\n (entityMetadata) => entityMetadata.tableType !== \"entity-child\",\n )\n .forEach((entityMetadata) =>\n this.computeEntityMetadataStep1(\n entityMetadatas,\n entityMetadata,\n ),\n )\n\n // then do it for single table inheritance children (since they are depend on their parents to be built)\n entityMetadatas\n .filter(\n (entityMetadata) => entityMetadata.tableType === \"entity-child\",\n )\n .forEach((entityMetadata) =>\n this.computeEntityMetadataStep1(\n entityMetadatas,\n entityMetadata,\n ),\n )\n\n // calculate entity metadata computed properties and all its sub-metadatas\n entityMetadatas.forEach((entityMetadata) =>\n this.computeEntityMetadataStep2(entityMetadata),\n )\n\n // calculate entity metadata's inverse properties\n entityMetadatas.forEach((entityMetadata) =>\n this.computeInverseProperties(entityMetadata, entityMetadatas),\n )\n\n // go through all entity metadatas and create foreign keys / junction entity metadatas for their relations\n entityMetadatas\n .filter(\n (entityMetadata) => entityMetadata.tableType !== \"entity-child\",\n )\n .forEach((entityMetadata) => {\n // create entity's relations join columns (for many-to-one and one-to-one owner)\n entityMetadata.relations\n .filter(\n (relation) =>\n relation.isOneToOne || relation.isManyToOne,\n )\n .forEach((relation) => {\n const joinColumns =\n this.metadataArgsStorage.filterJoinColumns(\n relation.target,\n relation.propertyName,\n )\n const { foreignKey, columns, uniqueConstraint } =\n this.relationJoinColumnBuilder.build(\n joinColumns,\n relation,\n ) // create a foreign key based on its metadata args\n if (foreignKey) {\n relation.registerForeignKeys(foreignKey) // push it to the relation and thus register there a join column\n entityMetadata.foreignKeys.push(foreignKey)\n }\n if (columns) {\n relation.registerJoinColumns(columns)\n }\n if (uniqueConstraint) {\n if (\n DriverUtils.isMySQLFamily(\n this.connection.driver,\n ) ||\n this.connection.driver.options.type ===\n \"aurora-mysql\" ||\n this.connection.driver.options.type ===\n \"mssql\" ||\n this.connection.driver.options.type === \"sap\" ||\n this.connection.driver.options.type ===\n \"spanner\"\n ) {\n const index = new IndexMetadata({\n entityMetadata:\n uniqueConstraint.entityMetadata,\n columns: uniqueConstraint.columns,\n args: {\n target: uniqueConstraint.target!,\n name: uniqueConstraint.name,\n unique: true,\n synchronize: true,\n },\n })\n\n if (\n this.connection.driver.options.type ===\n \"mssql\"\n ) {\n index.where = index.columns\n .map((column) => {\n return `${this.connection.driver.escape(\n column.databaseName,\n )} IS NOT NULL`\n })\n .join(\" AND \")\n }\n\n if (\n this.connection.driver.options.type ===\n \"spanner\"\n ) {\n index.isNullFiltered = true\n }\n\n if (relation.embeddedMetadata) {\n relation.embeddedMetadata.indices.push(\n index,\n )\n } else {\n relation.entityMetadata.ownIndices.push(\n index,\n )\n }\n this.computeEntityMetadataStep2(entityMetadata)\n } else {\n if (relation.embeddedMetadata) {\n relation.embeddedMetadata.uniques.push(\n uniqueConstraint,\n )\n } else {\n relation.entityMetadata.ownUniques.push(\n uniqueConstraint,\n )\n }\n this.computeEntityMetadataStep2(entityMetadata)\n }\n }\n\n if (\n foreignKey &&\n this.connection.driver.options.type ===\n \"cockroachdb\"\n ) {\n const index = new IndexMetadata({\n entityMetadata: relation.entityMetadata,\n columns: foreignKey.columns,\n args: {\n target: relation.entityMetadata.target!,\n synchronize: true,\n },\n })\n if (relation.embeddedMetadata) {\n relation.embeddedMetadata.indices.push(index)\n } else {\n relation.entityMetadata.ownIndices.push(index)\n }\n this.computeEntityMetadataStep2(entityMetadata)\n }\n })\n\n // create junction entity metadatas for entity many-to-many relations\n entityMetadata.relations\n .filter((relation) => relation.isManyToMany)\n .forEach((relation) => {\n const joinTable =\n this.metadataArgsStorage.findJoinTable(\n relation.target,\n relation.propertyName,\n )!\n if (!joinTable) return // no join table set - no need to do anything (it means this is many-to-many inverse side)\n\n // here we create a junction entity metadata for a new junction table of many-to-many relation\n const junctionEntityMetadata =\n this.junctionEntityMetadataBuilder.build(\n relation,\n joinTable,\n )\n relation.registerForeignKeys(\n ...junctionEntityMetadata.foreignKeys,\n )\n relation.registerJoinColumns(\n junctionEntityMetadata.ownIndices[0].columns,\n junctionEntityMetadata.ownIndices[1].columns,\n )\n relation.registerJunctionEntityMetadata(\n junctionEntityMetadata,\n )\n\n // compute new entity metadata properties and push it to entity metadatas pool\n this.computeEntityMetadataStep2(junctionEntityMetadata)\n this.computeInverseProperties(\n junctionEntityMetadata,\n entityMetadatas,\n )\n entityMetadatas.push(junctionEntityMetadata)\n })\n })\n\n // update entity metadata depend properties\n entityMetadatas.forEach((entityMetadata) => {\n entityMetadata.relationsWithJoinColumns =\n entityMetadata.relations.filter(\n (relation) => relation.isWithJoinColumn,\n )\n entityMetadata.hasNonNullableRelations =\n entityMetadata.relationsWithJoinColumns.some(\n (relation) => !relation.isNullable || relation.isPrimary,\n )\n })\n\n // generate closure junction tables for all closure tables\n entityMetadatas\n .filter((metadata) => metadata.treeType === \"closure-table\")\n .forEach((entityMetadata) => {\n const closureJunctionEntityMetadata =\n this.closureJunctionEntityMetadataBuilder.build(\n entityMetadata,\n )\n entityMetadata.closureJunctionTable =\n closureJunctionEntityMetadata\n this.computeEntityMetadataStep2(closureJunctionEntityMetadata)\n this.computeInverseProperties(\n closureJunctionEntityMetadata,\n entityMetadatas,\n )\n entityMetadatas.push(closureJunctionEntityMetadata)\n })\n\n // generate keys for tables with single-table inheritance\n entityMetadatas\n .filter(\n (metadata) =>\n metadata.inheritancePattern === \"STI\" &&\n metadata.discriminatorColumn,\n )\n .forEach((entityMetadata) =>\n this.createKeysForTableInheritance(entityMetadata),\n )\n\n // build all indices (need to do it after relations and their join columns are built)\n entityMetadatas.forEach((entityMetadata) => {\n entityMetadata.indices.forEach((index) =>\n index.build(this.connection.namingStrategy),\n )\n })\n\n // build all unique constraints (need to do it after relations and their join columns are built)\n entityMetadatas.forEach((entityMetadata) => {\n entityMetadata.uniques.forEach((unique) =>\n unique.build(this.connection.namingStrategy),\n )\n })\n\n // build all check constraints\n entityMetadatas.forEach((entityMetadata) => {\n entityMetadata.checks.forEach((check) =>\n check.build(this.connection.namingStrategy),\n )\n })\n\n // build all exclusion constraints\n entityMetadatas.forEach((entityMetadata) => {\n entityMetadata.exclusions.forEach((exclusion) =>\n exclusion.build(this.connection.namingStrategy),\n )\n })\n\n // add lazy initializer for entity relations\n entityMetadatas\n .filter((metadata) => typeof metadata.target === \"function\")\n .forEach((entityMetadata) => {\n entityMetadata.relations\n .filter((relation) => relation.isLazy)\n .forEach((relation) => {\n this.connection.relationLoader.enableLazyLoad(\n relation,\n (entityMetadata.target as Function).prototype,\n )\n })\n })\n\n entityMetadatas.forEach((entityMetadata) => {\n entityMetadata.columns.forEach((column) => {\n // const target = column.embeddedMetadata ? column.embeddedMetadata.type : column.target;\n const generated = this.metadataArgsStorage.findGenerated(\n column.target,\n column.propertyName,\n )\n if (generated) {\n column.isGenerated = true\n column.generationStrategy = generated.strategy\n if (generated.strategy === \"uuid\") {\n column.type = \"uuid\"\n } else if (generated.strategy === \"rowid\") {\n column.type = \"int\"\n } else {\n column.type = column.type || Number\n }\n column.build(this.connection)\n this.computeEntityMetadataStep2(entityMetadata)\n }\n })\n })\n\n return entityMetadatas\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates entity metadata from the given table args.\n * Creates column, relation, etc. metadatas for everything this entity metadata owns.\n */\n protected createEntityMetadata(\n tableArgs: TableMetadataArgs,\n ): EntityMetadata {\n // we take all \"inheritance tree\" from a target entity to collect all stored metadata args\n // (by decorators or inside entity schemas). For example for target Post < ContentModel < Unit\n // it will be an array of [Post, ContentModel, Unit] and we can then get all metadata args of those classes\n const inheritanceTree: any[] =\n typeof tableArgs.target === \"function\"\n ? MetadataUtils.getInheritanceTree(tableArgs.target)\n : [tableArgs.target] // todo: implement later here inheritance for string-targets\n\n const tableInheritance = this.metadataArgsStorage.findInheritanceType(\n tableArgs.target,\n )\n const tableTree = this.metadataArgsStorage.findTree(tableArgs.target)\n\n // if single table inheritance used, we need to copy all children columns in to parent table\n let singleTableChildrenTargets: any[]\n if (\n (tableInheritance && tableInheritance.pattern === \"STI\") ||\n tableArgs.type === \"entity-child\"\n ) {\n singleTableChildrenTargets = this.metadataArgsStorage\n .filterSingleTableChildren(tableArgs.target)\n .map((args) => args.target)\n .filter((target) => typeof target === \"function\")\n\n inheritanceTree.push(...singleTableChildrenTargets)\n }\n\n return new EntityMetadata({\n connection: this.connection,\n args: tableArgs,\n inheritanceTree: inheritanceTree,\n tableTree: tableTree,\n inheritancePattern: tableInheritance\n ? tableInheritance.pattern\n : undefined,\n })\n }\n\n protected computeParentEntityMetadata(\n allEntityMetadatas: EntityMetadata[],\n entityMetadata: EntityMetadata,\n ) {\n // after all metadatas created we set parent entity metadata for table inheritance\n if (entityMetadata.tableType === \"entity-child\") {\n entityMetadata.parentEntityMetadata = allEntityMetadatas.find(\n (allEntityMetadata) => {\n return (\n allEntityMetadata.inheritanceTree.indexOf(\n entityMetadata.target as Function,\n ) !== -1 &&\n allEntityMetadata.inheritancePattern === \"STI\"\n )\n },\n )!\n }\n }\n\n protected computeEntityMetadataStep1(\n allEntityMetadatas: EntityMetadata[],\n entityMetadata: EntityMetadata,\n ) {\n const entityInheritance = this.metadataArgsStorage.findInheritanceType(\n entityMetadata.target,\n )\n\n const discriminatorValue =\n this.metadataArgsStorage.findDiscriminatorValue(\n entityMetadata.target,\n )\n\n if (typeof discriminatorValue !== \"undefined\") {\n entityMetadata.discriminatorValue = discriminatorValue.value\n } else {\n entityMetadata.discriminatorValue = (\n entityMetadata.target as any\n ).name\n }\n\n // if single table inheritance is used, we need to mark all embedded columns as nullable\n entityMetadata.embeddeds = this.createEmbeddedsRecursively(\n entityMetadata,\n this.metadataArgsStorage.filterEmbeddeds(\n entityMetadata.inheritanceTree,\n ),\n ).map((embedded: EmbeddedMetadata): EmbeddedMetadata => {\n if (entityMetadata.inheritancePattern === \"STI\") {\n embedded.columns = embedded.columns.map(\n (column: ColumnMetadata): ColumnMetadata => {\n column.isNullable = true\n return column\n },\n )\n }\n return embedded\n })\n\n entityMetadata.ownColumns = this.metadataArgsStorage\n .filterColumns(entityMetadata.inheritanceTree)\n .map((args) => {\n // for single table children we reuse columns created for their parents\n if (entityMetadata.tableType === \"entity-child\")\n return entityMetadata.parentEntityMetadata.ownColumns.find(\n (column) => column.propertyName === args.propertyName,\n )!\n\n const column = new ColumnMetadata({\n connection: this.connection,\n entityMetadata,\n args,\n })\n\n // if single table inheritance used, we need to mark all inherit table columns as nullable\n const columnInSingleTableInheritedChild =\n allEntityMetadatas.find(\n (otherEntityMetadata) =>\n otherEntityMetadata.tableType === \"entity-child\" &&\n otherEntityMetadata.target === args.target,\n )\n if (columnInSingleTableInheritedChild) column.isNullable = true\n return column\n })\n\n // for table inheritance we need to add a discriminator column\n //\n if (entityInheritance && entityInheritance.column) {\n const discriminatorColumnName =\n entityInheritance.column && entityInheritance.column.name\n ? entityInheritance.column.name\n : \"type\"\n let discriminatorColumn = entityMetadata.ownColumns.find(\n (column) => column.propertyName === discriminatorColumnName,\n )\n if (!discriminatorColumn) {\n discriminatorColumn = new ColumnMetadata({\n connection: this.connection,\n entityMetadata: entityMetadata,\n args: {\n target: entityMetadata.target,\n mode: \"virtual\",\n propertyName: discriminatorColumnName,\n options: entityInheritance.column || {\n name: discriminatorColumnName,\n type: \"varchar\",\n nullable: false,\n },\n },\n })\n discriminatorColumn.isVirtual = true\n discriminatorColumn.isDiscriminator = true\n entityMetadata.ownColumns.push(discriminatorColumn)\n } else {\n discriminatorColumn.isDiscriminator = true\n }\n }\n\n // add discriminator column to the child entity metadatas\n // discriminator column will not be there automatically since we are creating it in the code above\n if (entityMetadata.tableType === \"entity-child\") {\n const discriminatorColumn =\n entityMetadata.parentEntityMetadata.ownColumns.find(\n (column) => column.isDiscriminator,\n )\n if (\n discriminatorColumn &&\n !entityMetadata.ownColumns.find(\n (column) => column === discriminatorColumn,\n )\n ) {\n entityMetadata.ownColumns.push(discriminatorColumn)\n }\n }\n\n const { namingStrategy } = this.connection\n\n // check if tree is used then we need to add extra columns for specific tree types\n if (entityMetadata.treeType === \"materialized-path\") {\n entityMetadata.ownColumns.push(\n new ColumnMetadata({\n connection: this.connection,\n entityMetadata: entityMetadata,\n materializedPath: true,\n args: {\n target: entityMetadata.target,\n mode: \"virtual\",\n propertyName: \"mpath\",\n options: /*tree.column || */ {\n name: namingStrategy.materializedPathColumnName,\n type: String,\n nullable: true,\n default: \"\",\n },\n },\n }),\n )\n } else if (entityMetadata.treeType === \"nested-set\") {\n const { left, right } = namingStrategy.nestedSetColumnNames\n entityMetadata.ownColumns.push(\n new ColumnMetadata({\n connection: this.connection,\n entityMetadata: entityMetadata,\n nestedSetLeft: true,\n args: {\n target: entityMetadata.target,\n mode: \"virtual\",\n propertyName: left,\n options: /*tree.column || */ {\n name: left,\n type: Number,\n nullable: false,\n default: 1,\n },\n },\n }),\n )\n entityMetadata.ownColumns.push(\n new ColumnMetadata({\n connection: this.connection,\n entityMetadata: entityMetadata,\n nestedSetRight: true,\n args: {\n target: entityMetadata.target,\n mode: \"virtual\",\n propertyName: right,\n options: /*tree.column || */ {\n name: right,\n type: Number,\n nullable: false,\n default: 2,\n },\n },\n }),\n )\n }\n\n entityMetadata.ownRelations = this.metadataArgsStorage\n .filterRelations(entityMetadata.inheritanceTree)\n .map((args) => {\n // for single table children we reuse relations created for their parents\n if (entityMetadata.tableType === \"entity-child\") {\n const parentRelation =\n entityMetadata.parentEntityMetadata.ownRelations.find(\n (relation) =>\n relation.propertyName === args.propertyName,\n )!\n const type =\n typeof args.type === \"function\"\n ? (args.type as () => any)()\n : args.type\n if (parentRelation.type !== type) {\n const clone = Object.create(parentRelation)\n clone.type = type\n return clone\n }\n\n return parentRelation\n }\n\n return new RelationMetadata({ entityMetadata, args })\n })\n entityMetadata.relationIds = this.metadataArgsStorage\n .filterRelationIds(entityMetadata.inheritanceTree)\n .map((args) => {\n // for single table children we reuse relation ids created for their parents\n if (entityMetadata.tableType === \"entity-child\")\n return entityMetadata.parentEntityMetadata.relationIds.find(\n (relationId) =>\n relationId.propertyName === args.propertyName,\n )!\n\n return new RelationIdMetadata({ entityMetadata, args })\n })\n entityMetadata.relationCounts = this.metadataArgsStorage\n .filterRelationCounts(entityMetadata.inheritanceTree)\n .map((args) => {\n // for single table children we reuse relation counts created for their parents\n if (entityMetadata.tableType === \"entity-child\")\n return entityMetadata.parentEntityMetadata.relationCounts.find(\n (relationCount) =>\n relationCount.propertyName === args.propertyName,\n )!\n\n return new RelationCountMetadata({ entityMetadata, args })\n })\n entityMetadata.ownListeners = this.metadataArgsStorage\n .filterListeners(entityMetadata.inheritanceTree)\n .map((args) => {\n return new EntityListenerMetadata({\n entityMetadata: entityMetadata,\n args: args,\n })\n })\n entityMetadata.checks = this.metadataArgsStorage\n .filterChecks(entityMetadata.inheritanceTree)\n .map((args) => {\n return new CheckMetadata({ entityMetadata, args })\n })\n\n // Only PostgreSQL supports exclusion constraints.\n if (this.connection.driver.options.type === \"postgres\") {\n entityMetadata.exclusions = this.metadataArgsStorage\n .filterExclusions(entityMetadata.inheritanceTree)\n .map((args) => {\n return new ExclusionMetadata({ entityMetadata, args })\n })\n }\n\n if (this.connection.driver.options.type === \"cockroachdb\") {\n entityMetadata.ownIndices = this.metadataArgsStorage\n .filterIndices(entityMetadata.inheritanceTree)\n .filter((args) => !args.unique)\n .map((args) => {\n return new IndexMetadata({ entityMetadata, args })\n })\n\n const uniques = this.metadataArgsStorage\n .filterIndices(entityMetadata.inheritanceTree)\n .filter((args) => args.unique)\n .map((args) => {\n return new UniqueMetadata({\n entityMetadata: entityMetadata,\n args: {\n target: args.target,\n name: args.name,\n columns: args.columns,\n },\n })\n })\n entityMetadata.ownUniques.push(...uniques)\n } else {\n entityMetadata.ownIndices = this.metadataArgsStorage\n .filterIndices(entityMetadata.inheritanceTree)\n .map((args) => {\n return new IndexMetadata({ entityMetadata, args })\n })\n }\n\n // This drivers stores unique constraints as unique indices.\n if (\n DriverUtils.isMySQLFamily(this.connection.driver) ||\n this.connection.driver.options.type === \"aurora-mysql\" ||\n this.connection.driver.options.type === \"sap\" ||\n this.connection.driver.options.type === \"spanner\"\n ) {\n const indices = this.metadataArgsStorage\n .filterUniques(entityMetadata.inheritanceTree)\n .map((args) => {\n return new IndexMetadata({\n entityMetadata: entityMetadata,\n args: {\n target: args.target,\n name: args.name,\n columns: args.columns,\n unique: true,\n synchronize: true,\n },\n })\n })\n entityMetadata.ownIndices.push(...indices)\n } else {\n const uniques = this.metadataArgsStorage\n .filterUniques(entityMetadata.inheritanceTree)\n .map((args) => {\n return new UniqueMetadata({ entityMetadata, args })\n })\n entityMetadata.ownUniques.push(...uniques)\n }\n }\n\n /**\n * Creates from the given embedded metadata args real embedded metadatas with its columns and relations,\n * and does the same for all its sub-embeddeds (goes recursively).\n */\n protected createEmbeddedsRecursively(\n entityMetadata: EntityMetadata,\n embeddedArgs: EmbeddedMetadataArgs[],\n ): EmbeddedMetadata[] {\n return embeddedArgs.map((embeddedArgs) => {\n const embeddedMetadata = new EmbeddedMetadata({\n entityMetadata: entityMetadata,\n args: embeddedArgs,\n })\n const targets: any[] =\n typeof embeddedMetadata.type === \"function\"\n ? MetadataUtils.getInheritanceTree(embeddedMetadata.type)\n : [embeddedMetadata.type] // todo: implement later here inheritance for string-targets\n\n embeddedMetadata.columns = this.metadataArgsStorage\n .filterColumns(targets)\n .map((args) => {\n return new ColumnMetadata({\n connection: this.connection,\n entityMetadata,\n embeddedMetadata,\n args,\n })\n })\n embeddedMetadata.relations = this.metadataArgsStorage\n .filterRelations(targets)\n .map((args) => {\n return new RelationMetadata({\n entityMetadata,\n embeddedMetadata,\n args,\n })\n })\n embeddedMetadata.listeners = this.metadataArgsStorage\n .filterListeners(targets)\n .map((args) => {\n return new EntityListenerMetadata({\n entityMetadata,\n embeddedMetadata,\n args,\n })\n })\n embeddedMetadata.indices = this.metadataArgsStorage\n .filterIndices(targets)\n .map((args) => {\n return new IndexMetadata({\n entityMetadata,\n embeddedMetadata,\n args,\n })\n })\n embeddedMetadata.uniques = this.metadataArgsStorage\n .filterUniques(targets)\n .map((args) => {\n return new UniqueMetadata({\n entityMetadata,\n embeddedMetadata,\n args,\n })\n })\n embeddedMetadata.relationIds = this.metadataArgsStorage\n .filterRelationIds(targets)\n .map((args) => {\n return new RelationIdMetadata({ entityMetadata, args })\n })\n embeddedMetadata.relationCounts = this.metadataArgsStorage\n .filterRelationCounts(targets)\n .map((args) => {\n return new RelationCountMetadata({ entityMetadata, args })\n })\n embeddedMetadata.embeddeds = this.createEmbeddedsRecursively(\n entityMetadata,\n this.metadataArgsStorage.filterEmbeddeds(targets),\n )\n embeddedMetadata.embeddeds.forEach(\n (subEmbedded) =>\n (subEmbedded.parentEmbeddedMetadata = embeddedMetadata),\n )\n entityMetadata.allEmbeddeds.push(embeddedMetadata)\n return embeddedMetadata\n })\n }\n\n /**\n * Computes all entity metadata's computed properties, and all its sub-metadatas (relations, columns, embeds, etc).\n */\n protected computeEntityMetadataStep2(entityMetadata: EntityMetadata) {\n entityMetadata.embeddeds.forEach((embedded) =>\n embedded.build(this.connection),\n )\n entityMetadata.embeddeds.forEach((embedded) => {\n embedded.columnsFromTree.forEach((column) =>\n column.build(this.connection),\n )\n embedded.relationsFromTree.forEach((relation) => relation.build())\n })\n entityMetadata.ownColumns.forEach((column) =>\n column.build(this.connection),\n )\n entityMetadata.ownRelations.forEach((relation) => relation.build())\n entityMetadata.relations = entityMetadata.embeddeds.reduce(\n (relations, embedded) =>\n relations.concat(embedded.relationsFromTree),\n entityMetadata.ownRelations,\n )\n entityMetadata.eagerRelations = entityMetadata.relations.filter(\n (relation) => relation.isEager,\n )\n entityMetadata.lazyRelations = entityMetadata.relations.filter(\n (relation) => relation.isLazy,\n )\n entityMetadata.oneToOneRelations = entityMetadata.relations.filter(\n (relation) => relation.isOneToOne,\n )\n entityMetadata.oneToManyRelations = entityMetadata.relations.filter(\n (relation) => relation.isOneToMany,\n )\n entityMetadata.manyToOneRelations = entityMetadata.relations.filter(\n (relation) => relation.isManyToOne,\n )\n entityMetadata.manyToManyRelations = entityMetadata.relations.filter(\n (relation) => relation.isManyToMany,\n )\n entityMetadata.ownerOneToOneRelations = entityMetadata.relations.filter(\n (relation) => relation.isOneToOneOwner,\n )\n entityMetadata.ownerManyToManyRelations =\n entityMetadata.relations.filter(\n (relation) => relation.isManyToManyOwner,\n )\n entityMetadata.treeParentRelation = entityMetadata.relations.find(\n (relation) => relation.isTreeParent,\n )\n entityMetadata.treeChildrenRelation = entityMetadata.relations.find(\n (relation) => relation.isTreeChildren,\n )\n entityMetadata.columns = entityMetadata.embeddeds.reduce(\n (columns, embedded) => columns.concat(embedded.columnsFromTree),\n entityMetadata.ownColumns,\n )\n entityMetadata.listeners = entityMetadata.embeddeds.reduce(\n (listeners, embedded) =>\n listeners.concat(embedded.listenersFromTree),\n entityMetadata.ownListeners,\n )\n entityMetadata.afterLoadListeners = entityMetadata.listeners.filter(\n (listener) => listener.type === EventListenerTypes.AFTER_LOAD,\n )\n entityMetadata.afterInsertListeners = entityMetadata.listeners.filter(\n (listener) => listener.type === EventListenerTypes.AFTER_INSERT,\n )\n entityMetadata.afterUpdateListeners = entityMetadata.listeners.filter(\n (listener) => listener.type === EventListenerTypes.AFTER_UPDATE,\n )\n entityMetadata.afterRemoveListeners = entityMetadata.listeners.filter(\n (listener) => listener.type === EventListenerTypes.AFTER_REMOVE,\n )\n entityMetadata.afterSoftRemoveListeners =\n entityMetadata.listeners.filter(\n (listener) =>\n listener.type === EventListenerTypes.AFTER_SOFT_REMOVE,\n )\n entityMetadata.afterRecoverListeners = entityMetadata.listeners.filter(\n (listener) => listener.type === EventListenerTypes.AFTER_RECOVER,\n )\n entityMetadata.beforeInsertListeners = entityMetadata.listeners.filter(\n (listener) => listener.type === EventListenerTypes.BEFORE_INSERT,\n )\n entityMetadata.beforeUpdateListeners = entityMetadata.listeners.filter(\n (listener) => listener.type === EventListenerTypes.BEFORE_UPDATE,\n )\n entityMetadata.beforeRemoveListeners = entityMetadata.listeners.filter(\n (listener) => listener.type === EventListenerTypes.BEFORE_REMOVE,\n )\n entityMetadata.beforeSoftRemoveListeners =\n entityMetadata.listeners.filter(\n (listener) =>\n listener.type === EventListenerTypes.BEFORE_SOFT_REMOVE,\n )\n entityMetadata.beforeRecoverListeners = entityMetadata.listeners.filter(\n (listener) => listener.type === EventListenerTypes.BEFORE_RECOVER,\n )\n entityMetadata.indices = entityMetadata.embeddeds.reduce(\n (indices, embedded) => indices.concat(embedded.indicesFromTree),\n entityMetadata.ownIndices,\n )\n entityMetadata.uniques = entityMetadata.embeddeds.reduce(\n (uniques, embedded) => uniques.concat(embedded.uniquesFromTree),\n entityMetadata.ownUniques,\n )\n entityMetadata.primaryColumns = entityMetadata.columns.filter(\n (column) => column.isPrimary,\n )\n entityMetadata.nonVirtualColumns = entityMetadata.columns.filter(\n (column) => !column.isVirtual,\n )\n entityMetadata.ancestorColumns = entityMetadata.columns.filter(\n (column) => column.closureType === \"ancestor\",\n )\n entityMetadata.descendantColumns = entityMetadata.columns.filter(\n (column) => column.closureType === \"descendant\",\n )\n entityMetadata.hasMultiplePrimaryKeys =\n entityMetadata.primaryColumns.length > 1\n entityMetadata.generatedColumns = entityMetadata.columns.filter(\n (column) => column.isGenerated || column.isObjectId,\n )\n entityMetadata.hasUUIDGeneratedColumns =\n entityMetadata.columns.filter(\n (column) =>\n column.isGenerated || column.generationStrategy === \"uuid\",\n ).length > 0\n entityMetadata.createDateColumn = entityMetadata.columns.find(\n (column) => column.isCreateDate,\n )\n entityMetadata.updateDateColumn = entityMetadata.columns.find(\n (column) => column.isUpdateDate,\n )\n entityMetadata.deleteDateColumn = entityMetadata.columns.find(\n (column) => column.isDeleteDate,\n )\n entityMetadata.versionColumn = entityMetadata.columns.find(\n (column) => column.isVersion,\n )\n entityMetadata.discriminatorColumn = entityMetadata.columns.find(\n (column) => column.isDiscriminator,\n )\n entityMetadata.treeLevelColumn = entityMetadata.columns.find(\n (column) => column.isTreeLevel,\n )\n entityMetadata.nestedSetLeftColumn = entityMetadata.columns.find(\n (column) => column.isNestedSetLeft,\n )\n entityMetadata.nestedSetRightColumn = entityMetadata.columns.find(\n (column) => column.isNestedSetRight,\n )\n entityMetadata.materializedPathColumn = entityMetadata.columns.find(\n (column) => column.isMaterializedPath,\n )\n entityMetadata.objectIdColumn = entityMetadata.columns.find(\n (column) => column.isObjectId,\n )\n entityMetadata.foreignKeys.forEach((foreignKey) =>\n foreignKey.build(this.connection.namingStrategy),\n )\n entityMetadata.propertiesMap = entityMetadata.createPropertiesMap()\n entityMetadata.relationIds.forEach((relationId) => relationId.build())\n entityMetadata.relationCounts.forEach((relationCount) =>\n relationCount.build(),\n )\n entityMetadata.embeddeds.forEach((embedded) => {\n embedded.relationIdsFromTree.forEach((relationId) =>\n relationId.build(),\n )\n embedded.relationCountsFromTree.forEach((relationCount) =>\n relationCount.build(),\n )\n })\n }\n\n /**\n * Computes entity metadata's relations inverse side properties.\n */\n protected computeInverseProperties(\n entityMetadata: EntityMetadata,\n entityMetadatas: EntityMetadata[],\n ) {\n entityMetadata.relations.forEach((relation) => {\n // compute inverse side (related) entity metadatas for all relation metadatas\n const inverseEntityMetadata = entityMetadatas.find(\n (m) =>\n m.target === relation.type ||\n (typeof relation.type === \"string\" &&\n (m.targetName === relation.type ||\n m.givenTableName === relation.type)),\n )\n if (!inverseEntityMetadata)\n throw new TypeORMError(\n \"Entity metadata for \" +\n entityMetadata.name +\n \"#\" +\n relation.propertyPath +\n \" was not found. Check if you specified a correct entity object and if it's connected in the connection options.\",\n )\n\n relation.inverseEntityMetadata = inverseEntityMetadata\n relation.inverseSidePropertyPath =\n relation.buildInverseSidePropertyPath()\n\n // and compute inverse relation and mark if it has such\n relation.inverseRelation = inverseEntityMetadata.relations.find(\n (foundRelation) =>\n foundRelation.propertyPath ===\n relation.inverseSidePropertyPath,\n )\n })\n }\n\n /**\n * Creates indices for the table of single table inheritance.\n */\n protected createKeysForTableInheritance(entityMetadata: EntityMetadata) {\n entityMetadata.indices.push(\n new IndexMetadata({\n entityMetadata: entityMetadata,\n columns: [entityMetadata.discriminatorColumn!],\n args: {\n target: entityMetadata.target,\n unique: false,\n },\n }),\n )\n }\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/metadata-builder/EntityMetadataBuilder.ts"],"names":[],"mappings":"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","file":"EntityMetadataBuilder.js","sourcesContent":["import { EntityMetadata } from \"../metadata/EntityMetadata\"\nimport { ColumnMetadata } from \"../metadata/ColumnMetadata\"\nimport { IndexMetadata } from \"../metadata/IndexMetadata\"\nimport { RelationMetadata } from \"../metadata/RelationMetadata\"\nimport { EmbeddedMetadata } from \"../metadata/EmbeddedMetadata\"\nimport type { MetadataArgsStorage } from \"../metadata-args/MetadataArgsStorage\"\nimport type { EmbeddedMetadataArgs } from \"../metadata-args/EmbeddedMetadataArgs\"\nimport { RelationIdMetadata } from \"../metadata/RelationIdMetadata\"\nimport { RelationCountMetadata } from \"../metadata/RelationCountMetadata\"\nimport { EventListenerTypes } from \"../metadata/types/EventListenerTypes\"\nimport { MetadataUtils } from \"./MetadataUtils\"\nimport type { TableMetadataArgs } from \"../metadata-args/TableMetadataArgs\"\nimport { JunctionEntityMetadataBuilder } from \"./JunctionEntityMetadataBuilder\"\nimport { ClosureJunctionEntityMetadataBuilder } from \"./ClosureJunctionEntityMetadataBuilder\"\nimport { RelationJoinColumnBuilder } from \"./RelationJoinColumnBuilder\"\nimport type { DataSource } from \"../data-source/DataSource\"\nimport { EntityListenerMetadata } from \"../metadata/EntityListenerMetadata\"\nimport { UniqueMetadata } from \"../metadata/UniqueMetadata\"\nimport { CheckMetadata } from \"../metadata/CheckMetadata\"\nimport { ExclusionMetadata } from \"../metadata/ExclusionMetadata\"\nimport { TypeORMError } from \"../error\"\nimport { DriverUtils } from \"../driver/DriverUtils\"\n\n/**\n * Builds EntityMetadata objects and all its sub-metadatas.\n */\nexport class EntityMetadataBuilder {\n // -------------------------------------------------------------------------\n // Protected Properties\n // -------------------------------------------------------------------------\n\n /**\n * Used to build entity metadatas of the junction entities.\n */\n protected junctionEntityMetadataBuilder: JunctionEntityMetadataBuilder\n\n /**\n * Used to build entity metadatas of the closure junction entities.\n */\n protected closureJunctionEntityMetadataBuilder: ClosureJunctionEntityMetadataBuilder\n\n /**\n * Used to build join columns of the relations.\n */\n protected relationJoinColumnBuilder: RelationJoinColumnBuilder\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(\n private connection: DataSource,\n private metadataArgsStorage: MetadataArgsStorage,\n ) {\n this.junctionEntityMetadataBuilder = new JunctionEntityMetadataBuilder(\n connection,\n )\n this.closureJunctionEntityMetadataBuilder =\n new ClosureJunctionEntityMetadataBuilder(connection)\n this.relationJoinColumnBuilder = new RelationJoinColumnBuilder(\n connection,\n )\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Builds a complete entity metadatas for the given entity classes.\n */\n build(entityClasses?: Function[]): EntityMetadata[] {\n // if entity classes to filter entities by are given then do filtering, otherwise use all\n const allTables = entityClasses\n ? this.metadataArgsStorage.filterTables(entityClasses)\n : this.metadataArgsStorage.tables\n\n // filter out table metadata args for those we really create entity metadatas and tables in the db\n const realTables = allTables.filter(\n (table) =>\n table.type === \"regular\" ||\n table.type === \"closure\" ||\n table.type === \"entity-child\" ||\n table.type === \"view\",\n )\n\n // create entity metadatas for a user defined entities (marked with @Entity decorator or loaded from entity schemas)\n const entityMetadatas = realTables.map((tableArgs) =>\n this.createEntityMetadata(tableArgs),\n )\n\n // compute parent entity metadatas for table inheritance\n entityMetadatas.forEach((entityMetadata) =>\n this.computeParentEntityMetadata(entityMetadatas, entityMetadata),\n )\n\n // after all metadatas created we set child entity metadatas for table inheritance\n entityMetadatas.forEach((metadata) => {\n metadata.childEntityMetadatas = entityMetadatas.filter(\n (childMetadata) => {\n return (\n typeof metadata.target === \"function\" &&\n typeof childMetadata.target === \"function\" &&\n MetadataUtils.isInherited(\n childMetadata.target,\n metadata.target,\n )\n )\n },\n )\n })\n\n // build entity metadata (step0), first for non-single-table-inherited entity metadatas (dependant)\n entityMetadatas\n .filter(\n (entityMetadata) => entityMetadata.tableType !== \"entity-child\",\n )\n .forEach((entityMetadata) => entityMetadata.build())\n\n // build entity metadata (step0), now for single-table-inherited entity metadatas (dependant)\n entityMetadatas\n .filter(\n (entityMetadata) => entityMetadata.tableType === \"entity-child\",\n )\n .forEach((entityMetadata) => entityMetadata.build())\n\n // compute entity metadata columns, relations, etc. first for the regular, non-single-table-inherited entity metadatas\n entityMetadatas\n .filter(\n (entityMetadata) => entityMetadata.tableType !== \"entity-child\",\n )\n .forEach((entityMetadata) =>\n this.computeEntityMetadataStep1(\n entityMetadatas,\n entityMetadata,\n ),\n )\n\n // then do it for single table inheritance children (since they are depend on their parents to be built)\n entityMetadatas\n .filter(\n (entityMetadata) => entityMetadata.tableType === \"entity-child\",\n )\n .forEach((entityMetadata) =>\n this.computeEntityMetadataStep1(\n entityMetadatas,\n entityMetadata,\n ),\n )\n\n // calculate entity metadata computed properties and all its sub-metadatas\n entityMetadatas.forEach((entityMetadata) =>\n this.computeEntityMetadataStep2(entityMetadata),\n )\n\n // calculate entity metadata's inverse properties\n entityMetadatas.forEach((entityMetadata) =>\n this.computeInverseProperties(entityMetadata, entityMetadatas),\n )\n\n // go through all entity metadatas and create foreign keys / junction entity metadatas for their relations\n entityMetadatas\n .filter(\n (entityMetadata) => entityMetadata.tableType !== \"entity-child\",\n )\n .forEach((entityMetadata) => {\n // create entity's relations join columns (for many-to-one and one-to-one owner)\n entityMetadata.relations\n .filter(\n (relation) =>\n relation.isOneToOne || relation.isManyToOne,\n )\n .forEach((relation) => {\n const joinColumns =\n this.metadataArgsStorage.filterJoinColumns(\n relation.target,\n relation.propertyName,\n )\n const { foreignKey, columns, uniqueConstraint } =\n this.relationJoinColumnBuilder.build(\n joinColumns,\n relation,\n ) // create a foreign key based on its metadata args\n if (foreignKey) {\n relation.registerForeignKeys(foreignKey) // push it to the relation and thus register there a join column\n entityMetadata.foreignKeys.push(foreignKey)\n }\n if (columns) {\n relation.registerJoinColumns(columns)\n }\n if (uniqueConstraint) {\n if (\n DriverUtils.isMySQLFamily(\n this.connection.driver,\n ) ||\n this.connection.driver.options.type ===\n \"aurora-mysql\" ||\n this.connection.driver.options.type ===\n \"mssql\" ||\n this.connection.driver.options.type === \"sap\" ||\n this.connection.driver.options.type ===\n \"spanner\"\n ) {\n const index = new IndexMetadata({\n entityMetadata:\n uniqueConstraint.entityMetadata,\n columns: uniqueConstraint.columns,\n args: {\n target: uniqueConstraint.target!,\n name: uniqueConstraint.name,\n unique: true,\n synchronize: true,\n },\n })\n\n if (\n this.connection.driver.options.type ===\n \"mssql\"\n ) {\n index.where = index.columns\n .map((column) => {\n return `${this.connection.driver.escape(\n column.databaseName,\n )} IS NOT NULL`\n })\n .join(\" AND \")\n }\n\n if (\n this.connection.driver.options.type ===\n \"spanner\"\n ) {\n index.isNullFiltered = true\n }\n\n if (relation.embeddedMetadata) {\n relation.embeddedMetadata.indices.push(\n index,\n )\n } else {\n relation.entityMetadata.ownIndices.push(\n index,\n )\n }\n this.computeEntityMetadataStep2(entityMetadata)\n } else {\n if (relation.embeddedMetadata) {\n relation.embeddedMetadata.uniques.push(\n uniqueConstraint,\n )\n } else {\n relation.entityMetadata.ownUniques.push(\n uniqueConstraint,\n )\n }\n this.computeEntityMetadataStep2(entityMetadata)\n }\n }\n\n if (\n foreignKey &&\n this.connection.driver.options.type ===\n \"cockroachdb\"\n ) {\n const index = new IndexMetadata({\n entityMetadata: relation.entityMetadata,\n columns: foreignKey.columns,\n args: {\n target: relation.entityMetadata.target!,\n synchronize: true,\n },\n })\n if (relation.embeddedMetadata) {\n relation.embeddedMetadata.indices.push(index)\n } else {\n relation.entityMetadata.ownIndices.push(index)\n }\n this.computeEntityMetadataStep2(entityMetadata)\n }\n })\n\n // create junction entity metadatas for entity many-to-many relations\n entityMetadata.relations\n .filter((relation) => relation.isManyToMany)\n .forEach((relation) => {\n const joinTable =\n this.metadataArgsStorage.findJoinTable(\n relation.target,\n relation.propertyName,\n )!\n if (!joinTable) return // no join table set - no need to do anything (it means this is many-to-many inverse side)\n\n // here we create a junction entity metadata for a new junction table of many-to-many relation\n const junctionEntityMetadata =\n this.junctionEntityMetadataBuilder.build(\n relation,\n joinTable,\n )\n relation.registerForeignKeys(\n ...junctionEntityMetadata.foreignKeys,\n )\n relation.registerJoinColumns(\n junctionEntityMetadata.ownIndices[0].columns,\n junctionEntityMetadata.ownIndices[1].columns,\n )\n relation.registerJunctionEntityMetadata(\n junctionEntityMetadata,\n )\n\n // compute new entity metadata properties and push it to entity metadatas pool\n this.computeEntityMetadataStep2(junctionEntityMetadata)\n this.computeInverseProperties(\n junctionEntityMetadata,\n entityMetadatas,\n )\n entityMetadatas.push(junctionEntityMetadata)\n })\n })\n\n // update entity metadata depend properties\n entityMetadatas.forEach((entityMetadata) => {\n entityMetadata.relationsWithJoinColumns =\n entityMetadata.relations.filter(\n (relation) => relation.isWithJoinColumn,\n )\n entityMetadata.hasNonNullableRelations =\n entityMetadata.relationsWithJoinColumns.some(\n (relation) => !relation.isNullable || relation.isPrimary,\n )\n })\n\n // generate closure junction tables for all closure tables\n entityMetadatas\n .filter((metadata) => metadata.treeType === \"closure-table\")\n .forEach((entityMetadata) => {\n const closureJunctionEntityMetadata =\n this.closureJunctionEntityMetadataBuilder.build(\n entityMetadata,\n )\n entityMetadata.closureJunctionTable =\n closureJunctionEntityMetadata\n this.computeEntityMetadataStep2(closureJunctionEntityMetadata)\n this.computeInverseProperties(\n closureJunctionEntityMetadata,\n entityMetadatas,\n )\n entityMetadatas.push(closureJunctionEntityMetadata)\n })\n\n // generate keys for tables with single-table inheritance\n entityMetadatas\n .filter(\n (metadata) =>\n metadata.inheritancePattern === \"STI\" &&\n metadata.discriminatorColumn,\n )\n .forEach((entityMetadata) =>\n this.createKeysForTableInheritance(entityMetadata),\n )\n\n // build all indices (need to do it after relations and their join columns are built)\n entityMetadatas.forEach((entityMetadata) => {\n entityMetadata.indices.forEach((index) =>\n index.build(this.connection.namingStrategy),\n )\n })\n\n // build all unique constraints (need to do it after relations and their join columns are built)\n entityMetadatas.forEach((entityMetadata) => {\n entityMetadata.uniques.forEach((unique) =>\n unique.build(this.connection.namingStrategy),\n )\n })\n\n // build all check constraints\n entityMetadatas.forEach((entityMetadata) => {\n entityMetadata.checks.forEach((check) =>\n check.build(this.connection.namingStrategy),\n )\n })\n\n // build all exclusion constraints\n entityMetadatas.forEach((entityMetadata) => {\n entityMetadata.exclusions.forEach((exclusion) =>\n exclusion.build(this.connection.namingStrategy),\n )\n })\n\n // add lazy initializer for entity relations\n entityMetadatas\n .filter((metadata) => typeof metadata.target === \"function\")\n .forEach((entityMetadata) => {\n entityMetadata.relations\n .filter((relation) => relation.isLazy)\n .forEach((relation) => {\n this.connection.relationLoader.enableLazyLoad(\n relation,\n (entityMetadata.target as Function).prototype,\n )\n })\n })\n\n entityMetadatas.forEach((entityMetadata) => {\n entityMetadata.columns.forEach((column) => {\n // const target = column.embeddedMetadata ? column.embeddedMetadata.type : column.target;\n const generated = this.metadataArgsStorage.findGenerated(\n column.target,\n column.propertyName,\n )\n if (generated) {\n column.isGenerated = true\n column.generationStrategy = generated.strategy\n if (generated.strategy === \"uuid\") {\n column.type = \"uuid\"\n } else if (generated.strategy === \"rowid\") {\n column.type = \"int\"\n } else {\n column.type = column.type || Number\n }\n column.build(this.connection)\n this.computeEntityMetadataStep2(entityMetadata)\n }\n })\n })\n\n return entityMetadatas\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates entity metadata from the given table args.\n * Creates column, relation, etc. metadatas for everything this entity metadata owns.\n */\n protected createEntityMetadata(\n tableArgs: TableMetadataArgs,\n ): EntityMetadata {\n // we take all \"inheritance tree\" from a target entity to collect all stored metadata args\n // (by decorators or inside entity schemas). For example for target Post < ContentModel < Unit\n // it will be an array of [Post, ContentModel, Unit] and we can then get all metadata args of those classes\n const inheritanceTree: any[] =\n typeof tableArgs.target === \"function\"\n ? MetadataUtils.getInheritanceTree(tableArgs.target)\n : [tableArgs.target] // todo: implement later here inheritance for string-targets\n\n const tableInheritance = this.metadataArgsStorage.findInheritanceType(\n tableArgs.target,\n )\n const tableTree = this.metadataArgsStorage.findTree(tableArgs.target)\n\n // if single table inheritance used, we need to copy all children columns in to parent table\n let singleTableChildrenTargets: any[]\n if (\n (tableInheritance && tableInheritance.pattern === \"STI\") ||\n tableArgs.type === \"entity-child\"\n ) {\n singleTableChildrenTargets = this.metadataArgsStorage\n .filterSingleTableChildren(tableArgs.target)\n .map((args) => args.target)\n .filter((target) => typeof target === \"function\")\n\n inheritanceTree.push(...singleTableChildrenTargets)\n }\n\n return new EntityMetadata({\n connection: this.connection,\n args: tableArgs,\n inheritanceTree: inheritanceTree,\n tableTree: tableTree,\n inheritancePattern: tableInheritance\n ? tableInheritance.pattern\n : undefined,\n })\n }\n\n protected computeParentEntityMetadata(\n allEntityMetadatas: EntityMetadata[],\n entityMetadata: EntityMetadata,\n ) {\n // after all metadatas created we set parent entity metadata for table inheritance\n if (entityMetadata.tableType === \"entity-child\") {\n entityMetadata.parentEntityMetadata = allEntityMetadatas.find(\n (allEntityMetadata) => {\n return (\n allEntityMetadata.inheritanceTree.indexOf(\n entityMetadata.target as Function,\n ) !== -1 &&\n allEntityMetadata.inheritancePattern === \"STI\"\n )\n },\n )!\n }\n }\n\n protected computeEntityMetadataStep1(\n allEntityMetadatas: EntityMetadata[],\n entityMetadata: EntityMetadata,\n ) {\n const entityInheritance = this.metadataArgsStorage.findInheritanceType(\n entityMetadata.target,\n )\n\n const discriminatorValue =\n this.metadataArgsStorage.findDiscriminatorValue(\n entityMetadata.target,\n )\n\n if (typeof discriminatorValue !== \"undefined\") {\n entityMetadata.discriminatorValue = discriminatorValue.value\n } else {\n entityMetadata.discriminatorValue = (\n entityMetadata.target as any\n ).name\n }\n\n // if single table inheritance is used, we need to mark all embedded columns as nullable\n entityMetadata.embeddeds = this.createEmbeddedsRecursively(\n entityMetadata,\n this.metadataArgsStorage.filterEmbeddeds(\n entityMetadata.inheritanceTree,\n ),\n ).map((embedded: EmbeddedMetadata): EmbeddedMetadata => {\n if (entityMetadata.inheritancePattern === \"STI\") {\n embedded.columns = embedded.columns.map(\n (column: ColumnMetadata): ColumnMetadata => {\n column.isNullable = true\n return column\n },\n )\n }\n return embedded\n })\n\n entityMetadata.ownColumns = this.metadataArgsStorage\n .filterColumns(entityMetadata.inheritanceTree)\n .map((args) => {\n // for single table children we reuse columns created for their parents\n if (entityMetadata.tableType === \"entity-child\")\n return entityMetadata.parentEntityMetadata.ownColumns.find(\n (column) => column.propertyName === args.propertyName,\n )!\n\n const column = new ColumnMetadata({\n connection: this.connection,\n entityMetadata,\n args,\n })\n\n // if single table inheritance used, we need to mark all inherit table columns as nullable\n const columnInSingleTableInheritedChild =\n allEntityMetadatas.find(\n (otherEntityMetadata) =>\n otherEntityMetadata.tableType === \"entity-child\" &&\n otherEntityMetadata.target === args.target,\n )\n if (columnInSingleTableInheritedChild) column.isNullable = true\n return column\n })\n\n // for table inheritance we need to add a discriminator column\n //\n if (entityInheritance && entityInheritance.column) {\n const discriminatorColumnName =\n entityInheritance.column && entityInheritance.column.name\n ? entityInheritance.column.name\n : \"type\"\n let discriminatorColumn = entityMetadata.ownColumns.find(\n (column) => column.propertyName === discriminatorColumnName,\n )\n if (!discriminatorColumn) {\n discriminatorColumn = new ColumnMetadata({\n connection: this.connection,\n entityMetadata: entityMetadata,\n args: {\n target: entityMetadata.target,\n mode: \"virtual\",\n propertyName: discriminatorColumnName,\n options: entityInheritance.column || {\n name: discriminatorColumnName,\n type: \"varchar\",\n nullable: false,\n },\n },\n })\n discriminatorColumn.isVirtual = true\n discriminatorColumn.isDiscriminator = true\n entityMetadata.ownColumns.push(discriminatorColumn)\n } else {\n discriminatorColumn.isDiscriminator = true\n }\n }\n\n // add discriminator column to the child entity metadatas\n // discriminator column will not be there automatically since we are creating it in the code above\n if (entityMetadata.tableType === \"entity-child\") {\n const discriminatorColumn =\n entityMetadata.parentEntityMetadata.ownColumns.find(\n (column) => column.isDiscriminator,\n )\n if (\n discriminatorColumn &&\n !entityMetadata.ownColumns.find(\n (column) => column === discriminatorColumn,\n )\n ) {\n entityMetadata.ownColumns.push(discriminatorColumn)\n }\n }\n\n const { namingStrategy } = this.connection\n\n // check if tree is used then we need to add extra columns for specific tree types\n if (entityMetadata.treeType === \"materialized-path\") {\n entityMetadata.ownColumns.push(\n new ColumnMetadata({\n connection: this.connection,\n entityMetadata: entityMetadata,\n materializedPath: true,\n args: {\n target: entityMetadata.target,\n mode: \"virtual\",\n propertyName: \"mpath\",\n options: /*tree.column || */ {\n name: namingStrategy.materializedPathColumnName,\n type: String,\n nullable: true,\n default: \"\",\n },\n },\n }),\n )\n } else if (entityMetadata.treeType === \"nested-set\") {\n const { left, right } = namingStrategy.nestedSetColumnNames\n entityMetadata.ownColumns.push(\n new ColumnMetadata({\n connection: this.connection,\n entityMetadata: entityMetadata,\n nestedSetLeft: true,\n args: {\n target: entityMetadata.target,\n mode: \"virtual\",\n propertyName: left,\n options: /*tree.column || */ {\n name: left,\n type: Number,\n nullable: false,\n default: 1,\n },\n },\n }),\n )\n entityMetadata.ownColumns.push(\n new ColumnMetadata({\n connection: this.connection,\n entityMetadata: entityMetadata,\n nestedSetRight: true,\n args: {\n target: entityMetadata.target,\n mode: \"virtual\",\n propertyName: right,\n options: /*tree.column || */ {\n name: right,\n type: Number,\n nullable: false,\n default: 2,\n },\n },\n }),\n )\n }\n\n entityMetadata.ownRelations = this.metadataArgsStorage\n .filterRelations(entityMetadata.inheritanceTree)\n .map((args) => {\n // for single table children we reuse relations created for their parents\n if (entityMetadata.tableType === \"entity-child\") {\n const parentRelation =\n entityMetadata.parentEntityMetadata.ownRelations.find(\n (relation) =>\n relation.propertyName === args.propertyName,\n )!\n const type =\n typeof args.type === \"function\"\n ? (args.type as () => any)()\n : args.type\n if (parentRelation.type !== type) {\n const clone = Object.create(parentRelation)\n clone.type = type\n return clone\n }\n\n return parentRelation\n }\n\n return new RelationMetadata({ entityMetadata, args })\n })\n entityMetadata.relationIds = this.metadataArgsStorage\n .filterRelationIds(entityMetadata.inheritanceTree)\n .map((args) => {\n // for single table children we reuse relation ids created for their parents\n if (entityMetadata.tableType === \"entity-child\")\n return entityMetadata.parentEntityMetadata.relationIds.find(\n (relationId) =>\n relationId.propertyName === args.propertyName,\n )!\n\n return new RelationIdMetadata({ entityMetadata, args })\n })\n entityMetadata.relationCounts = this.metadataArgsStorage\n .filterRelationCounts(entityMetadata.inheritanceTree)\n .map((args) => {\n // for single table children we reuse relation counts created for their parents\n if (entityMetadata.tableType === \"entity-child\")\n return entityMetadata.parentEntityMetadata.relationCounts.find(\n (relationCount) =>\n relationCount.propertyName === args.propertyName,\n )!\n\n return new RelationCountMetadata({ entityMetadata, args })\n })\n entityMetadata.ownListeners = this.metadataArgsStorage\n .filterListeners(entityMetadata.inheritanceTree)\n .map((args) => {\n return new EntityListenerMetadata({\n entityMetadata: entityMetadata,\n args: args,\n })\n })\n entityMetadata.checks = this.metadataArgsStorage\n .filterChecks(entityMetadata.inheritanceTree)\n .map((args) => {\n return new CheckMetadata({ entityMetadata, args })\n })\n\n // Only PostgreSQL supports exclusion constraints.\n if (this.connection.driver.options.type === \"postgres\") {\n entityMetadata.exclusions = this.metadataArgsStorage\n .filterExclusions(entityMetadata.inheritanceTree)\n .map((args) => {\n return new ExclusionMetadata({ entityMetadata, args })\n })\n }\n\n if (this.connection.driver.options.type === \"cockroachdb\") {\n entityMetadata.ownIndices = this.metadataArgsStorage\n .filterIndices(entityMetadata.inheritanceTree)\n .filter((args) => !args.unique)\n .map((args) => {\n return new IndexMetadata({ entityMetadata, args })\n })\n\n const uniques = this.metadataArgsStorage\n .filterIndices(entityMetadata.inheritanceTree)\n .filter((args) => args.unique)\n .map((args) => {\n return new UniqueMetadata({\n entityMetadata: entityMetadata,\n args: {\n target: args.target,\n name: args.name,\n columns: args.columns,\n },\n })\n })\n entityMetadata.ownUniques.push(...uniques)\n } else {\n entityMetadata.ownIndices = this.metadataArgsStorage\n .filterIndices(entityMetadata.inheritanceTree)\n .map((args) => {\n return new IndexMetadata({ entityMetadata, args })\n })\n }\n\n // This drivers stores unique constraints as unique indices.\n if (\n DriverUtils.isMySQLFamily(this.connection.driver) ||\n this.connection.driver.options.type === \"aurora-mysql\" ||\n this.connection.driver.options.type === \"sap\" ||\n this.connection.driver.options.type === \"spanner\"\n ) {\n const indices = this.metadataArgsStorage\n .filterUniques(entityMetadata.inheritanceTree)\n .map((args) => {\n return new IndexMetadata({\n entityMetadata: entityMetadata,\n args: {\n target: args.target,\n name: args.name,\n columns: args.columns,\n unique: true,\n synchronize: true,\n },\n })\n })\n entityMetadata.ownIndices.push(...indices)\n } else {\n const uniques = this.metadataArgsStorage\n .filterUniques(entityMetadata.inheritanceTree)\n .map((args) => {\n return new UniqueMetadata({ entityMetadata, args })\n })\n entityMetadata.ownUniques.push(...uniques)\n }\n }\n\n /**\n * Creates from the given embedded metadata args real embedded metadatas with its columns and relations,\n * and does the same for all its sub-embeddeds (goes recursively).\n */\n protected createEmbeddedsRecursively(\n entityMetadata: EntityMetadata,\n embeddedArgs: EmbeddedMetadataArgs[],\n ): EmbeddedMetadata[] {\n return embeddedArgs.map((embeddedArgs) => {\n const embeddedMetadata = new EmbeddedMetadata({\n entityMetadata: entityMetadata,\n args: embeddedArgs,\n })\n const targets: any[] =\n typeof embeddedMetadata.type === \"function\"\n ? MetadataUtils.getInheritanceTree(embeddedMetadata.type)\n : [embeddedMetadata.type] // todo: implement later here inheritance for string-targets\n\n embeddedMetadata.columns = this.metadataArgsStorage\n .filterColumns(targets)\n .map((args) => {\n return new ColumnMetadata({\n connection: this.connection,\n entityMetadata,\n embeddedMetadata,\n args,\n })\n })\n embeddedMetadata.relations = this.metadataArgsStorage\n .filterRelations(targets)\n .map((args) => {\n return new RelationMetadata({\n entityMetadata,\n embeddedMetadata,\n args,\n })\n })\n embeddedMetadata.listeners = this.metadataArgsStorage\n .filterListeners(targets)\n .map((args) => {\n return new EntityListenerMetadata({\n entityMetadata,\n embeddedMetadata,\n args,\n })\n })\n embeddedMetadata.indices = this.metadataArgsStorage\n .filterIndices(targets)\n .map((args) => {\n return new IndexMetadata({\n entityMetadata,\n embeddedMetadata,\n args,\n })\n })\n embeddedMetadata.uniques = this.metadataArgsStorage\n .filterUniques(targets)\n .map((args) => {\n return new UniqueMetadata({\n entityMetadata,\n embeddedMetadata,\n args,\n })\n })\n embeddedMetadata.relationIds = this.metadataArgsStorage\n .filterRelationIds(targets)\n .map((args) => {\n return new RelationIdMetadata({ entityMetadata, args })\n })\n embeddedMetadata.relationCounts = this.metadataArgsStorage\n .filterRelationCounts(targets)\n .map((args) => {\n return new RelationCountMetadata({ entityMetadata, args })\n })\n embeddedMetadata.embeddeds = this.createEmbeddedsRecursively(\n entityMetadata,\n this.metadataArgsStorage.filterEmbeddeds(targets),\n )\n embeddedMetadata.embeddeds.forEach(\n (subEmbedded) =>\n (subEmbedded.parentEmbeddedMetadata = embeddedMetadata),\n )\n entityMetadata.allEmbeddeds.push(embeddedMetadata)\n return embeddedMetadata\n })\n }\n\n /**\n * Computes all entity metadata's computed properties, and all its sub-metadatas (relations, columns, embeds, etc).\n */\n protected computeEntityMetadataStep2(entityMetadata: EntityMetadata) {\n entityMetadata.embeddeds.forEach((embedded) =>\n embedded.build(this.connection),\n )\n entityMetadata.embeddeds.forEach((embedded) => {\n embedded.columnsFromTree.forEach((column) =>\n column.build(this.connection),\n )\n embedded.relationsFromTree.forEach((relation) => relation.build())\n })\n entityMetadata.ownColumns.forEach((column) =>\n column.build(this.connection),\n )\n entityMetadata.ownRelations.forEach((relation) => relation.build())\n entityMetadata.relations = entityMetadata.embeddeds.reduce(\n (relations, embedded) =>\n relations.concat(embedded.relationsFromTree),\n entityMetadata.ownRelations,\n )\n entityMetadata.eagerRelations = entityMetadata.relations.filter(\n (relation) => relation.isEager,\n )\n entityMetadata.lazyRelations = entityMetadata.relations.filter(\n (relation) => relation.isLazy,\n )\n entityMetadata.oneToOneRelations = entityMetadata.relations.filter(\n (relation) => relation.isOneToOne,\n )\n entityMetadata.oneToManyRelations = entityMetadata.relations.filter(\n (relation) => relation.isOneToMany,\n )\n entityMetadata.manyToOneRelations = entityMetadata.relations.filter(\n (relation) => relation.isManyToOne,\n )\n entityMetadata.manyToManyRelations = entityMetadata.relations.filter(\n (relation) => relation.isManyToMany,\n )\n entityMetadata.ownerOneToOneRelations = entityMetadata.relations.filter(\n (relation) => relation.isOneToOneOwner,\n )\n entityMetadata.ownerManyToManyRelations =\n entityMetadata.relations.filter(\n (relation) => relation.isManyToManyOwner,\n )\n entityMetadata.treeParentRelation = entityMetadata.relations.find(\n (relation) => relation.isTreeParent,\n )\n entityMetadata.treeChildrenRelation = entityMetadata.relations.find(\n (relation) => relation.isTreeChildren,\n )\n entityMetadata.columns = entityMetadata.embeddeds.reduce(\n (columns, embedded) => columns.concat(embedded.columnsFromTree),\n entityMetadata.ownColumns,\n )\n entityMetadata.listeners = entityMetadata.embeddeds.reduce(\n (listeners, embedded) =>\n listeners.concat(embedded.listenersFromTree),\n entityMetadata.ownListeners,\n )\n entityMetadata.afterLoadListeners = entityMetadata.listeners.filter(\n (listener) => listener.type === EventListenerTypes.AFTER_LOAD,\n )\n entityMetadata.afterInsertListeners = entityMetadata.listeners.filter(\n (listener) => listener.type === EventListenerTypes.AFTER_INSERT,\n )\n entityMetadata.afterUpdateListeners = entityMetadata.listeners.filter(\n (listener) => listener.type === EventListenerTypes.AFTER_UPDATE,\n )\n entityMetadata.afterRemoveListeners = entityMetadata.listeners.filter(\n (listener) => listener.type === EventListenerTypes.AFTER_REMOVE,\n )\n entityMetadata.afterSoftRemoveListeners =\n entityMetadata.listeners.filter(\n (listener) =>\n listener.type === EventListenerTypes.AFTER_SOFT_REMOVE,\n )\n entityMetadata.afterRecoverListeners = entityMetadata.listeners.filter(\n (listener) => listener.type === EventListenerTypes.AFTER_RECOVER,\n )\n entityMetadata.beforeInsertListeners = entityMetadata.listeners.filter(\n (listener) => listener.type === EventListenerTypes.BEFORE_INSERT,\n )\n entityMetadata.beforeUpdateListeners = entityMetadata.listeners.filter(\n (listener) => listener.type === EventListenerTypes.BEFORE_UPDATE,\n )\n entityMetadata.beforeRemoveListeners = entityMetadata.listeners.filter(\n (listener) => listener.type === EventListenerTypes.BEFORE_REMOVE,\n )\n entityMetadata.beforeSoftRemoveListeners =\n entityMetadata.listeners.filter(\n (listener) =>\n listener.type === EventListenerTypes.BEFORE_SOFT_REMOVE,\n )\n entityMetadata.beforeRecoverListeners = entityMetadata.listeners.filter(\n (listener) => listener.type === EventListenerTypes.BEFORE_RECOVER,\n )\n entityMetadata.indices = entityMetadata.embeddeds.reduce(\n (indices, embedded) => indices.concat(embedded.indicesFromTree),\n entityMetadata.ownIndices,\n )\n entityMetadata.uniques = entityMetadata.embeddeds.reduce(\n (uniques, embedded) => uniques.concat(embedded.uniquesFromTree),\n entityMetadata.ownUniques,\n )\n entityMetadata.primaryColumns = entityMetadata.columns.filter(\n (column) => column.isPrimary,\n )\n entityMetadata.nonVirtualColumns = entityMetadata.columns.filter(\n (column) => !column.isVirtual,\n )\n entityMetadata.ancestorColumns = entityMetadata.columns.filter(\n (column) => column.closureType === \"ancestor\",\n )\n entityMetadata.descendantColumns = entityMetadata.columns.filter(\n (column) => column.closureType === \"descendant\",\n )\n entityMetadata.hasMultiplePrimaryKeys =\n entityMetadata.primaryColumns.length > 1\n entityMetadata.generatedColumns = entityMetadata.columns.filter(\n (column) => column.isGenerated || column.isObjectId,\n )\n entityMetadata.hasUUIDGeneratedColumns =\n entityMetadata.columns.filter(\n (column) =>\n column.isGenerated || column.generationStrategy === \"uuid\",\n ).length > 0\n entityMetadata.createDateColumn = entityMetadata.columns.find(\n (column) => column.isCreateDate,\n )\n entityMetadata.updateDateColumn = entityMetadata.columns.find(\n (column) => column.isUpdateDate,\n )\n entityMetadata.deleteDateColumn = entityMetadata.columns.find(\n (column) => column.isDeleteDate,\n )\n entityMetadata.versionColumn = entityMetadata.columns.find(\n (column) => column.isVersion,\n )\n entityMetadata.discriminatorColumn = entityMetadata.columns.find(\n (column) => column.isDiscriminator,\n )\n entityMetadata.treeLevelColumn = entityMetadata.columns.find(\n (column) => column.isTreeLevel,\n )\n entityMetadata.nestedSetLeftColumn = entityMetadata.columns.find(\n (column) => column.isNestedSetLeft,\n )\n entityMetadata.nestedSetRightColumn = entityMetadata.columns.find(\n (column) => column.isNestedSetRight,\n )\n entityMetadata.materializedPathColumn = entityMetadata.columns.find(\n (column) => column.isMaterializedPath,\n )\n entityMetadata.objectIdColumn = entityMetadata.columns.find(\n (column) => column.isObjectId,\n )\n entityMetadata.foreignKeys.forEach((foreignKey) =>\n foreignKey.build(this.connection.namingStrategy),\n )\n entityMetadata.propertiesMap = entityMetadata.createPropertiesMap()\n entityMetadata.relationIds.forEach((relationId) => relationId.build())\n entityMetadata.relationCounts.forEach((relationCount) =>\n relationCount.build(),\n )\n entityMetadata.embeddeds.forEach((embedded) => {\n embedded.relationIdsFromTree.forEach((relationId) =>\n relationId.build(),\n )\n embedded.relationCountsFromTree.forEach((relationCount) =>\n relationCount.build(),\n )\n })\n }\n\n /**\n * Computes entity metadata's relations inverse side properties.\n */\n protected computeInverseProperties(\n entityMetadata: EntityMetadata,\n entityMetadatas: EntityMetadata[],\n ) {\n entityMetadata.relations.forEach((relation) => {\n // compute inverse side (related) entity metadatas for all relation metadatas\n const inverseEntityMetadata = entityMetadatas.find(\n (m) =>\n m.target === relation.type ||\n (typeof relation.type === \"string\" &&\n (m.targetName === relation.type ||\n m.givenTableName === relation.type)),\n )\n if (!inverseEntityMetadata)\n throw new TypeORMError(\n \"Entity metadata for \" +\n entityMetadata.name +\n \"#\" +\n relation.propertyPath +\n \" was not found. Check if you specified a correct entity object and if it's connected in the connection options.\",\n )\n\n relation.inverseEntityMetadata = inverseEntityMetadata\n relation.inverseSidePropertyPath =\n relation.buildInverseSidePropertyPath()\n\n // and compute inverse relation and mark if it has such\n relation.inverseRelation = inverseEntityMetadata.relations.find(\n (foundRelation) =>\n foundRelation.propertyPath ===\n relation.inverseSidePropertyPath,\n )\n })\n }\n\n /**\n * Creates indices for the table of single table inheritance.\n */\n protected createKeysForTableInheritance(entityMetadata: EntityMetadata) {\n entityMetadata.indices.push(\n new IndexMetadata({\n entityMetadata: entityMetadata,\n columns: [entityMetadata.discriminatorColumn!],\n args: {\n target: entityMetadata.target,\n unique: false,\n },\n }),\n )\n }\n}\n"],"sourceRoot":".."}
@@ -1,5 +1,5 @@
1
- import { EntityMetadata } from "../metadata/EntityMetadata";
2
- import { Driver } from "../driver/Driver";
1
+ import type { EntityMetadata } from "../metadata/EntityMetadata";
2
+ import type { Driver } from "../driver/Driver";
3
3
  /**
4
4
  * Validates built entity metadatas.
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/metadata-builder/EntityMetadataValidator.ts"],"names":[],"mappings":";;;AACA,kFAA8E;AAC9E,4EAAwE;AACxE,+CAA2C;AAE3C,kFAA8E;AAE9E,8EAA0E;AAC1E,gFAA4E;AAC5E,oCAAuC;AACvC,uDAAmD;AAEnD,mEAAmE;AACnE,6FAA6F;AAC7F,sEAAsE;AACtE,mGAAmG;AACnG,2GAA2G;AAC3G,6DAA6D;AAC7D,uEAAuE;AACvE,iFAAiF;AAEjF,2FAA2F;AAC3F,wHAAwH;AACxH,gIAAgI;AAChI,mGAAmG;AACnG,8EAA8E;AAC9E,8CAA8C;AAC9C,yDAAyD;AAEzD;;GAEG;AACH,MAAa,uBAAuB;IAChC,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E;;OAEG;IACH,YAAY,CAAC,eAAiC,EAAE,MAAc;QAC1D,eAAe,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,EAAE,CACvC,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,eAAe,EAAE,MAAM,CAAC,CACzD,CAAA;QACD,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAA;QAC1C,IAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC,CAAA;IAChD,CAAC;IAED;;OAEG;IACH,QAAQ,CACJ,cAA8B,EAC9B,kBAAoC,EACpC,MAAc;QAEd,oCAAoC;QACpC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU;YACnE,MAAM,IAAI,qDAAyB,CAAC,cAAc,CAAC,CAAA;QAEvD,uEAAuE;QACvE,6DAA6D;QAC7D,IAAI,cAAc,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1C,MAAM,uBAAuB,GAAG,cAAc,CAAC,cAAc,CAAC,KAAK,CAC/D,CAAC,cAAc,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,CACnC,cAAc,CAAC,wBAAwB;gBACvC,eAAe,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAClD,CAAA;YACD,IAAI,CAAC,uBAAuB,EAAE;gBAC1B,MAAM,IAAI,oBAAY,CAClB,UAAU,cAAc,CAAC,IAAI,sGAAsG,CACtI,CAAA;aACJ;SACJ;QAED,gEAAgE;QAChE,uEAAuE;QACvE,IACI,cAAc,CAAC,kBAAkB,KAAK,KAAK;YAC3C,cAAc,CAAC,SAAS,KAAK,cAAc,EAC7C;YACE,IAAI,CAAC,cAAc,CAAC,mBAAmB;gBACnC,MAAM,IAAI,oBAAY,CAClB,UAAU,cAAc,CAAC,IAAI,kIAAkI,CAClK,CAAA;YAEL,IAAI,OAAO,cAAc,CAAC,kBAAkB,KAAK,WAAW;gBACxD,MAAM,IAAI,oBAAY,CAClB,UAAU,cAAc,CAAC,IAAI,+EAA+E,CAC/G,CAAA;YAEL,MAAM,oCAAoC,GACtC,kBAAkB,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACjC,OAAO,CACH,QAAQ,KAAK,cAAc;oBAC3B,CAAC,QAAQ,CAAC,kBAAkB,KAAK,KAAK;wBAClC,QAAQ,CAAC,SAAS,KAAK,cAAc,CAAC;oBAC1C,QAAQ,CAAC,SAAS,KAAK,cAAc,CAAC,SAAS;oBAC/C,QAAQ,CAAC,kBAAkB;wBACvB,cAAc,CAAC,kBAAkB;oBACrC,QAAQ,CAAC,eAAe,CAAC,IAAI,CACzB,CAAC,MAAM,EAAE,EAAE,CACP,cAAc,CAAC,eAAe,CAAC,OAAO,CAClC,MAAM,CACT,KAAK,CAAC,CAAC,CACf,CACJ,CAAA;YACL,CAAC,CAAC,CAAA;YACN,IAAI,oCAAoC;gBACpC,MAAM,IAAI,oBAAY,CAClB,YAAY,cAAc,CAAC,IAAI,QAAQ,oCAAoC,CAAC,IAAI,2GAA2G,CAC9L,CAAA;SACR;QAED,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,EAAE;YACpD,IACI,aAAa,CAAC,QAAQ,CAAC,WAAW;gBAClC,aAAa,CAAC,QAAQ,CAAC,UAAU;gBAEjC,MAAM,IAAI,oBAAY,CAClB,2EAA2E,CAC9E,CAAA;QACT,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE;YACtC,cAAc,CAAC,OAAO;iBACjB,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC;iBAC7C,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBAChB,MAAM,gBAAgB,GAAG,MAAM,CAAC,aAAa,CACzC,MAAM,CACK,CAAA;gBACf,IACI,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,gBAAgB,CAAC;oBACnD,CAAC,CAAC;oBAEF,MAAM,IAAI,qDAAyB,CAC/B,MAAM,EACN,gBAAgB,EAChB,MAAM,CAAC,OAAO,CAAC,IAAI,CACtB,CAAA;gBACL,IACI,MAAM,CAAC,MAAM;oBACb,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAChC,gBAAgB,CACnB,KAAK,CAAC,CAAC;oBAER,MAAM,IAAI,oBAAY,CAClB,UAAU,MAAM,CAAC,YAAY,cAAc,cAAc,CAAC,IAAI,oCAAoC,CACrG,CAAA;gBACL,IACI,MAAM,CAAC,IAAI,KAAK,MAAM;oBACtB,CAAC,MAAM,CAAC,IAAI;oBACZ,CAAC,MAAM,CAAC,QAAQ;oBAEhB,MAAM,IAAI,oBAAY,CAClB,WAAW,MAAM,CAAC,YAAY,gBAAgB,cAAc,CAAC,IAAI,oEAAoE,CACxI,CAAA;YACT,CAAC,CAAC,CAAA;SACT;QAED,IACI,yBAAW,CAAC,aAAa,CAAC,MAAM,CAAC;YACjC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,cAAc,EACxC;YACE,MAAM,gBAAgB,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,CAClD,CAAC,MAAM,EAAE,EAAE,CACP,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,kBAAkB,KAAK,MAAM,CACjE,CAAA;YACD,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC;gBAC3B,MAAM,IAAI,oBAAY,CAClB,YAAY,cAAc,CAAC,IAAI,sEAAsE,CACxG,CAAA;SACR;QAED,gHAAgH;QAChH,4GAA4G;QAC5G,iHAAiH;QACjH,IAAI,yBAAW,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;YACnC,MAAM,qBAAqB,GAAG,kBAAkB,CAAC,MAAM,CACnD,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAClC,CAAA;YACD,IAAI,qBAAqB,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ;gBACtD,MAAM,IAAI,iDAAuB,CAAC,UAAU,CAAC,CAAA;SACpD;QAED,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE;YACjC,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,CAChD,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAC7B,CAAA;YACD,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC;gBACzB,MAAM,IAAI,oBAAY,CAClB,yDAAyD,CAC5D,CAAA;SACR;QAED,mDAAmD;QACnD,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE;YACpC,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAC7C,CAAC,MAAM,EAAE,EAAE,CACP,MAAM,CAAC,YAAY;gBACnB,CAAC,CAAC,MAAM,CAAC,aAAa;oBAClB,MAAM,CAAC,aAAa,KAAK,SAAS,CAAC,CAC9C,CAAA;YACD,IAAI,aAAa;gBACb,MAAM,IAAI,oBAAY,CAClB,WAAW,aAAa,CAAC,YAAY,gBAAgB,cAAc,CAAC,IAAI,+EAA+E,CAC1J,CAAA;SACR;QAED,4DAA4D;QAC5D,MAAM,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,SAAS,EAAE;YACpD,gBAAgB,EAAE,IAAI;SACzB,CAAC,CAAA;QACF,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC1C,IAAI,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,WAAW,EAAE;gBAC/C,uGAAuG;gBACvG,IAAI,QAAQ,CAAC,kBAAkB,KAAK,KAAK;oBAAE,OAAM;gBAEjD,sDAAsD;gBACtD,MAAM,wBAAwB,GAC1B,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,CAAA;gBAC3C,IAAI,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAAC;oBACvC,MAAM,IAAI,mDAAwB,CAAC,QAAQ,CAAC,CAAA;aACnD;QACL,CAAC,CAAC,CAAA;QAEF,qBAAqB;QACrB,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC1C,qBAAqB;YACrB,4EAA4E;YAC5E,kBAAkB;YAClB,4BAA4B;YAC5B,kCAAkC;YAClC,+EAA+E;YAC/E,iGAAiG;YACjG,yEAAyE;YACzE,uFAAuF;YACvF,IAAI;YACJ,sBAAsB;YACtB,8GAA8G;YAC9G,uDAAuD;YACvD,kBAAkB;YAClB;;;;;;;;;;;;;;;;;;;6EAmBiE;YACjE,wFAAwF;YACxF,qEAAqE;YACrE,qBAAqB;YACrB,yHAAyH;YACzH,iEAAiE;YACjE,mGAAmG;YACnG,oGAAoG;YACpG,oGAAoG;YACpG,6IAA6I;YAC7I,sLAAsL;YACtL,wEAAwE;YACxE,0IAA0I;YAC1I,8FAA8F;YAC9F,qJAAqJ;YACrJ,oHAAoH;YACpH,oEAAoE;QACxE,CAAC,CAAC,CAAA;QAEF,0GAA0G;QAC1G,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC1C,MAAM,uBAAuB,GACzB,QAAQ,CAAC,eAAe;gBACxB,QAAQ,CAAC,eAAe;gBACxB,QAAQ,CAAC,eAAgB,CAAC,eAAe,CAAA;YAC7C,IAAI,uBAAuB;gBACvB,MAAM,IAAI,oBAAY,CAClB,YAAY,cAAc,CAAC,IAAI,IAC3B,QAAQ,CAAC,YACb,QAAQ,QAAQ,CAAC,eAAgB,CAAC,cAAc,CAAC,IAAI,IACjD,QAAQ,CAAC,eAAgB,CAAC,YAC9B,gCAAgC;oBAC5B,8GAA8G,CACrH,CAAA;QACT,CAAC,CAAC,CAAA,CAAC,qFAAqF;QAExF,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,GAAE,CAAC,CAAC,CAAA;IAC3D,CAAC;IAED;;OAEG;IACO,oBAAoB,CAAC,eAAiC;QAC5D,MAAM,KAAK,GAAG,IAAI,mBAAQ,EAAE,CAAA;QAC5B,eAAe,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,EAAE;YACvC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QACtC,CAAC,CAAC,CAAA;QACF,eAAe,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,EAAE;YACvC,cAAc,CAAC,wBAAwB;iBAClC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;iBAC1C,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAClB,KAAK,CAAC,aAAa,CACf,cAAc,CAAC,IAAI,EACnB,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CACtC,CAAA;YACL,CAAC,CAAC,CAAA;QACV,CAAC,CAAC,CAAA;QACF,IAAI;YACA,KAAK,CAAC,YAAY,EAAE,CAAA;SACvB;QAAC,OAAO,GAAG,EAAE;YACV,MAAM,IAAI,+CAAsB,CAC5B,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,iCAAiC,EAAE,EAAE,CAAC,CAChE,CAAA;SACJ;IACL,CAAC;IAED;;OAEG;IACO,sBAAsB,CAAC,eAAiC;QAC9D,eAAe,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,EAAE;YACvC,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAC/C,IACI,QAAQ,CAAC,eAAe;oBACxB,QAAQ,CAAC,eAAe,CAAC,OAAO;oBAEhC,MAAM,IAAI,oBAAY,CAClB,2CAA2C;wBACvC,GAAG,cAAc,CAAC,UAAU,IAAI,QAAQ,CAAC,YAAY,gDAAgD;wBACrG,GAAG,QAAQ,CAAC,qBAAqB,CAAC,UAAU,IAAI,QAAQ,CAAC,eAAe,CAAC,YAAY,kCAAkC;wBACvH,sDAAsD,CAC7D,CAAA;YACT,CAAC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACN,CAAC;CACJ;AA1TD,0DA0TC","file":"EntityMetadataValidator.js","sourcesContent":["import { EntityMetadata } from \"../metadata/EntityMetadata\"\nimport { MissingPrimaryColumnError } from \"../error/MissingPrimaryColumnError\"\nimport { CircularRelationsError } from \"../error/CircularRelationsError\"\nimport { DepGraph } from \"../util/DepGraph\"\nimport { Driver } from \"../driver/Driver\"\nimport { DataTypeNotSupportedError } from \"../error/DataTypeNotSupportedError\"\nimport { ColumnType } from \"../driver/types/ColumnTypes\"\nimport { NoConnectionOptionError } from \"../error/NoConnectionOptionError\"\nimport { InitializedRelationError } from \"../error/InitializedRelationError\"\nimport { TypeORMError } from \"../error\"\nimport { DriverUtils } from \"../driver/DriverUtils\"\n\n/// todo: add check if there are multiple tables with the same name\n/// todo: add checks when generated column / table names are too long for the specific driver\n// todo: type in function validation, inverse side function validation\n// todo: check on build for duplicate names, since naming checking was removed from MetadataStorage\n// todo: duplicate name checking for: table, relation, column, index, naming strategy, join tables/columns?\n// todo: check if multiple tree parent metadatas in validator\n// todo: tree decorators can be used only on closure table (validation)\n// todo: throw error if parent tree metadata was not specified in a closure table\n\n// todo: MetadataArgsStorage: type in function validation, inverse side function validation\n// todo: MetadataArgsStorage: check on build for duplicate names, since naming checking was removed from MetadataStorage\n// todo: MetadataArgsStorage: duplicate name checking for: table, relation, column, index, naming strategy, join tables/columns?\n// todo: MetadataArgsStorage: check for duplicate targets too since this check has been removed too\n// todo: check if relation decorator contains primary: true and nullable: true\n// todo: check column length, precision. scale\n// todo: MySQL index can be unique or spatial or fulltext\n\n/**\n * Validates built entity metadatas.\n */\nexport class EntityMetadataValidator {\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Validates all given entity metadatas.\n */\n validateMany(entityMetadatas: EntityMetadata[], driver: Driver) {\n entityMetadatas.forEach((entityMetadata) =>\n this.validate(entityMetadata, entityMetadatas, driver),\n )\n this.validateDependencies(entityMetadatas)\n this.validateEagerRelations(entityMetadatas)\n }\n\n /**\n * Validates given entity metadata.\n */\n validate(\n entityMetadata: EntityMetadata,\n allEntityMetadatas: EntityMetadata[],\n driver: Driver,\n ) {\n // check if table metadata has an id\n if (!entityMetadata.primaryColumns.length && !entityMetadata.isJunction)\n throw new MissingPrimaryColumnError(entityMetadata)\n\n // if entity has multiple primary keys and uses custom constraint name,\n // then all primary keys should have the same constraint name\n if (entityMetadata.primaryColumns.length > 1) {\n const areConstraintNamesEqual = entityMetadata.primaryColumns.every(\n (columnMetadata, i, columnMetadatas) =>\n columnMetadata.primaryKeyConstraintName ===\n columnMetadatas[0].primaryKeyConstraintName,\n )\n if (!areConstraintNamesEqual) {\n throw new TypeORMError(\n `Entity ${entityMetadata.name} has multiple primary columns with different constraint names. Constraint names should be the equal.`,\n )\n }\n }\n\n // validate if table is using inheritance it has a discriminator\n // also validate if discriminator values are not empty and not repeated\n if (\n entityMetadata.inheritancePattern === \"STI\" ||\n entityMetadata.tableType === \"entity-child\"\n ) {\n if (!entityMetadata.discriminatorColumn)\n throw new TypeORMError(\n `Entity ${entityMetadata.name} using single-table inheritance, it should also have a discriminator column. Did you forget to put discriminator column options?`,\n )\n\n if (typeof entityMetadata.discriminatorValue === \"undefined\")\n throw new TypeORMError(\n `Entity ${entityMetadata.name} has an undefined discriminator value. Discriminator value should be defined.`,\n )\n\n const sameDiscriminatorValueEntityMetadata =\n allEntityMetadatas.find((metadata) => {\n return (\n metadata !== entityMetadata &&\n (metadata.inheritancePattern === \"STI\" ||\n metadata.tableType === \"entity-child\") &&\n metadata.tableName === entityMetadata.tableName &&\n metadata.discriminatorValue ===\n entityMetadata.discriminatorValue &&\n metadata.inheritanceTree.some(\n (parent) =>\n entityMetadata.inheritanceTree.indexOf(\n parent,\n ) !== -1,\n )\n )\n })\n if (sameDiscriminatorValueEntityMetadata)\n throw new TypeORMError(\n `Entities ${entityMetadata.name} and ${sameDiscriminatorValueEntityMetadata.name} have the same discriminator values. Make sure they are different while using the @ChildEntity decorator.`,\n )\n }\n\n entityMetadata.relationCounts.forEach((relationCount) => {\n if (\n relationCount.relation.isManyToOne ||\n relationCount.relation.isOneToOne\n )\n throw new TypeORMError(\n `Relation count can not be implemented on ManyToOne or OneToOne relations.`,\n )\n })\n\n if (!(driver.options.type === \"mongodb\")) {\n entityMetadata.columns\n .filter((column) => !column.isVirtualProperty)\n .forEach((column) => {\n const normalizedColumn = driver.normalizeType(\n column,\n ) as ColumnType\n if (\n driver.supportedDataTypes.indexOf(normalizedColumn) ===\n -1\n )\n throw new DataTypeNotSupportedError(\n column,\n normalizedColumn,\n driver.options.type,\n )\n if (\n column.length &&\n driver.withLengthColumnTypes.indexOf(\n normalizedColumn,\n ) === -1\n )\n throw new TypeORMError(\n `Column ${column.propertyName} of Entity ${entityMetadata.name} does not support length property.`,\n )\n if (\n column.type === \"enum\" &&\n !column.enum &&\n !column.enumName\n )\n throw new TypeORMError(\n `Column \"${column.propertyName}\" of Entity \"${entityMetadata.name}\" is defined as enum, but missing \"enum\" or \"enumName\" properties.`,\n )\n })\n }\n\n if (\n DriverUtils.isMySQLFamily(driver) ||\n driver.options.type === \"aurora-mysql\"\n ) {\n const generatedColumns = entityMetadata.columns.filter(\n (column) =>\n column.isGenerated && column.generationStrategy !== \"uuid\",\n )\n if (generatedColumns.length > 1)\n throw new TypeORMError(\n `Error in ${entityMetadata.name} entity. There can be only one auto-increment column in MySql table.`,\n )\n }\n\n // for mysql we are able to not define a default selected database, instead all entities can have their database\n // defined in their decorators. To make everything work either all entities must have database define and we\n // can live without database set in the connection options, either database in the connection options must be set\n if (DriverUtils.isMySQLFamily(driver)) {\n const metadatasWithDatabase = allEntityMetadatas.filter(\n (metadata) => metadata.database,\n )\n if (metadatasWithDatabase.length === 0 && !driver.database)\n throw new NoConnectionOptionError(\"database\")\n }\n\n if (driver.options.type === \"mssql\") {\n const charsetColumns = entityMetadata.columns.filter(\n (column) => column.charset,\n )\n if (charsetColumns.length > 1)\n throw new TypeORMError(\n `Character set specifying is not supported in Sql Server`,\n )\n }\n\n // Postgres supports only STORED generated columns.\n if (driver.options.type === \"postgres\") {\n const virtualColumn = entityMetadata.columns.find(\n (column) =>\n column.asExpression &&\n (!column.generatedType ||\n column.generatedType === \"VIRTUAL\"),\n )\n if (virtualColumn)\n throw new TypeORMError(\n `Column \"${virtualColumn.propertyName}\" of Entity \"${entityMetadata.name}\" is defined as VIRTUAL, but Postgres supports only STORED generated columns.`,\n )\n }\n\n // check if relations are all without initialized properties\n const entityInstance = entityMetadata.create(undefined, {\n fromDeserializer: true,\n })\n entityMetadata.relations.forEach((relation) => {\n if (relation.isManyToMany || relation.isOneToMany) {\n // we skip relations for which persistence is disabled since initialization in them cannot harm somehow\n if (relation.persistenceEnabled === false) return\n\n // get entity relation value and check if its an array\n const relationInitializedValue =\n relation.getEntityValue(entityInstance)\n if (Array.isArray(relationInitializedValue))\n throw new InitializedRelationError(relation)\n }\n })\n\n // validate relations\n entityMetadata.relations.forEach((relation) => {\n // check join tables:\n // using JoinTable is possible only on one side of the many-to-many relation\n // todo(dima): fix\n // if (relation.joinTable) {\n // if (!relation.isManyToMany)\n // throw new UsingJoinTableIsNotAllowedError(entityMetadata, relation);\n // // if there is inverse side of the relation, then check if it does not have join table too\n // if (relation.hasInverseSide && relation.inverseRelation.joinTable)\n // throw new UsingJoinTableOnlyOnOneSideAllowedError(entityMetadata, relation);\n // }\n // check join columns:\n // using JoinColumn is possible only on one side of the relation and on one-to-one, many-to-one relation types\n // first check if relation is one-to-one or many-to-one\n // todo(dima): fix\n /*if (relation.joinColumn) {\n\n // join column can be applied only on one-to-one and many-to-one relations\n if (!relation.isOneToOne && !relation.isManyToOne)\n throw new UsingJoinColumnIsNotAllowedError(entityMetadata, relation);\n\n // if there is inverse side of the relation, then check if it does not have join table too\n if (relation.hasInverseSide && relation.inverseRelation.joinColumn && relation.isOneToOne)\n throw new UsingJoinColumnOnlyOnOneSideAllowedError(entityMetadata, relation);\n\n // check if join column really has referenced column\n if (relation.joinColumn && !relation.joinColumn.referencedColumn)\n throw new TypeORMError(`Join column does not have referenced column set`);\n\n }\n\n // if its a one-to-one relation and JoinColumn is missing on both sides of the relation\n // or its one-side relation without JoinColumn we should give an error\n if (!relation.joinColumn && relation.isOneToOne && (!relation.hasInverseSide || !relation.inverseRelation.joinColumn))\n throw new MissingJoinColumnError(entityMetadata, relation);*/\n // if its a many-to-many relation and JoinTable is missing on both sides of the relation\n // or its one-side relation without JoinTable we should give an error\n // todo(dima): fix it\n // if (!relation.joinTable && relation.isManyToMany && (!relation.hasInverseSide || !relation.inverseRelation.joinTable))\n // throw new MissingJoinTableError(entityMetadata, relation);\n // todo: validate if its one-to-one and side which does not have join column MUST have inverse side\n // todo: validate if its many-to-many and side which does not have join table MUST have inverse side\n // todo: if there is a relation, and inverse side is specified only on one side, shall we give error\n // todo: with message like: \"Inverse side is specified only on one side of the relationship. Specify on other side too to prevent confusion\".\n // todo: add validation if there two entities with the same target, and show error message with description of the problem (maybe file was renamed/moved but left in output directory)\n // todo: check if there are multiple columns on the same column applied.\n // todo: check column type if is missing in relational databases (throw new TypeORMError(`Column type of ${type} cannot be determined.`);)\n // todo: include driver-specific checks. for example in mongodb empty prefixes are not allowed\n // todo: if multiple columns with same name - throw exception, including cases when columns are in embeds with same prefixes or without prefix at all\n // todo: if multiple primary key used, at least one of them must be unique or @Index decorator must be set on entity\n // todo: check if entity with duplicate names, some decorators exist\n })\n\n // make sure cascade remove is not set for both sides of relationships (can be set in OneToOne decorators)\n entityMetadata.relations.forEach((relation) => {\n const isCircularCascadeRemove =\n relation.isCascadeRemove &&\n relation.inverseRelation &&\n relation.inverseRelation!.isCascadeRemove\n if (isCircularCascadeRemove)\n throw new TypeORMError(\n `Relation ${entityMetadata.name}#${\n relation.propertyName\n } and ${relation.inverseRelation!.entityMetadata.name}#${\n relation.inverseRelation!.propertyName\n } both has cascade remove set. ` +\n `This may lead to unexpected circular removals. Please set cascade remove only from one side of relationship.`,\n )\n }) // todo: maybe better just deny removal from one to one relation without join column?\n\n entityMetadata.eagerRelations.forEach((relation) => {})\n }\n\n /**\n * Validates dependencies of the entity metadatas.\n */\n protected validateDependencies(entityMetadatas: EntityMetadata[]) {\n const graph = new DepGraph()\n entityMetadatas.forEach((entityMetadata) => {\n graph.addNode(entityMetadata.name)\n })\n entityMetadatas.forEach((entityMetadata) => {\n entityMetadata.relationsWithJoinColumns\n .filter((relation) => !relation.isNullable)\n .forEach((relation) => {\n graph.addDependency(\n entityMetadata.name,\n relation.inverseEntityMetadata.name,\n )\n })\n })\n try {\n graph.overallOrder()\n } catch (err) {\n throw new CircularRelationsError(\n err.toString().replace(\"Error: Dependency Cycle Found: \", \"\"),\n )\n }\n }\n\n /**\n * Validates eager relations to prevent circular dependency in them.\n */\n protected validateEagerRelations(entityMetadatas: EntityMetadata[]) {\n entityMetadatas.forEach((entityMetadata) => {\n entityMetadata.eagerRelations.forEach((relation) => {\n if (\n relation.inverseRelation &&\n relation.inverseRelation.isEager\n )\n throw new TypeORMError(\n `Circular eager relations are disallowed. ` +\n `${entityMetadata.targetName}#${relation.propertyPath} contains \"eager: true\", and its inverse side ` +\n `${relation.inverseEntityMetadata.targetName}#${relation.inverseRelation.propertyPath} contains \"eager: true\" as well.` +\n ` Remove \"eager: true\" from one side of the relation.`,\n )\n })\n })\n }\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/metadata-builder/EntityMetadataValidator.ts"],"names":[],"mappings":"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","file":"EntityMetadataValidator.js","sourcesContent":["import type { EntityMetadata } from \"../metadata/EntityMetadata\"\nimport { MissingPrimaryColumnError } from \"../error/MissingPrimaryColumnError\"\nimport { CircularRelationsError } from \"../error/CircularRelationsError\"\nimport { DepGraph } from \"../util/DepGraph\"\nimport type { Driver } from \"../driver/Driver\"\nimport { DataTypeNotSupportedError } from \"../error/DataTypeNotSupportedError\"\nimport type { ColumnType } from \"../driver/types/ColumnTypes\"\nimport { NoConnectionOptionError } from \"../error/NoConnectionOptionError\"\nimport { InitializedRelationError } from \"../error/InitializedRelationError\"\nimport { TypeORMError } from \"../error\"\nimport { DriverUtils } from \"../driver/DriverUtils\"\n\n/// todo: add check if there are multiple tables with the same name\n/// todo: add checks when generated column / table names are too long for the specific driver\n// todo: type in function validation, inverse side function validation\n// todo: check on build for duplicate names, since naming checking was removed from MetadataStorage\n// todo: duplicate name checking for: table, relation, column, index, naming strategy, join tables/columns?\n// todo: check if multiple tree parent metadatas in validator\n// todo: tree decorators can be used only on closure table (validation)\n// todo: throw error if parent tree metadata was not specified in a closure table\n\n// todo: MetadataArgsStorage: type in function validation, inverse side function validation\n// todo: MetadataArgsStorage: check on build for duplicate names, since naming checking was removed from MetadataStorage\n// todo: MetadataArgsStorage: duplicate name checking for: table, relation, column, index, naming strategy, join tables/columns?\n// todo: MetadataArgsStorage: check for duplicate targets too since this check has been removed too\n// todo: check if relation decorator contains primary: true and nullable: true\n// todo: check column length, precision. scale\n// todo: MySQL index can be unique or spatial or fulltext\n\n/**\n * Validates built entity metadatas.\n */\nexport class EntityMetadataValidator {\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Validates all given entity metadatas.\n */\n validateMany(entityMetadatas: EntityMetadata[], driver: Driver) {\n entityMetadatas.forEach((entityMetadata) =>\n this.validate(entityMetadata, entityMetadatas, driver),\n )\n this.validateDependencies(entityMetadatas)\n this.validateEagerRelations(entityMetadatas)\n }\n\n /**\n * Validates given entity metadata.\n */\n validate(\n entityMetadata: EntityMetadata,\n allEntityMetadatas: EntityMetadata[],\n driver: Driver,\n ) {\n // check if table metadata has an id\n if (!entityMetadata.primaryColumns.length && !entityMetadata.isJunction)\n throw new MissingPrimaryColumnError(entityMetadata)\n\n // if entity has multiple primary keys and uses custom constraint name,\n // then all primary keys should have the same constraint name\n if (entityMetadata.primaryColumns.length > 1) {\n const areConstraintNamesEqual = entityMetadata.primaryColumns.every(\n (columnMetadata, i, columnMetadatas) =>\n columnMetadata.primaryKeyConstraintName ===\n columnMetadatas[0].primaryKeyConstraintName,\n )\n if (!areConstraintNamesEqual) {\n throw new TypeORMError(\n `Entity ${entityMetadata.name} has multiple primary columns with different constraint names. Constraint names should be the equal.`,\n )\n }\n }\n\n // validate if table is using inheritance it has a discriminator\n // also validate if discriminator values are not empty and not repeated\n if (\n entityMetadata.inheritancePattern === \"STI\" ||\n entityMetadata.tableType === \"entity-child\"\n ) {\n if (!entityMetadata.discriminatorColumn)\n throw new TypeORMError(\n `Entity ${entityMetadata.name} using single-table inheritance, it should also have a discriminator column. Did you forget to put discriminator column options?`,\n )\n\n if (typeof entityMetadata.discriminatorValue === \"undefined\")\n throw new TypeORMError(\n `Entity ${entityMetadata.name} has an undefined discriminator value. Discriminator value should be defined.`,\n )\n\n const sameDiscriminatorValueEntityMetadata =\n allEntityMetadatas.find((metadata) => {\n return (\n metadata !== entityMetadata &&\n (metadata.inheritancePattern === \"STI\" ||\n metadata.tableType === \"entity-child\") &&\n metadata.tableName === entityMetadata.tableName &&\n metadata.discriminatorValue ===\n entityMetadata.discriminatorValue &&\n metadata.inheritanceTree.some(\n (parent) =>\n entityMetadata.inheritanceTree.indexOf(\n parent,\n ) !== -1,\n )\n )\n })\n if (sameDiscriminatorValueEntityMetadata)\n throw new TypeORMError(\n `Entities ${entityMetadata.name} and ${sameDiscriminatorValueEntityMetadata.name} have the same discriminator values. Make sure they are different while using the @ChildEntity decorator.`,\n )\n }\n\n entityMetadata.relationCounts.forEach((relationCount) => {\n if (\n relationCount.relation.isManyToOne ||\n relationCount.relation.isOneToOne\n )\n throw new TypeORMError(\n `Relation count can not be implemented on ManyToOne or OneToOne relations.`,\n )\n })\n\n if (!(driver.options.type === \"mongodb\")) {\n entityMetadata.columns\n .filter((column) => !column.isVirtualProperty)\n .forEach((column) => {\n const normalizedColumn = driver.normalizeType(\n column,\n ) as ColumnType\n if (\n driver.supportedDataTypes.indexOf(normalizedColumn) ===\n -1\n )\n throw new DataTypeNotSupportedError(\n column,\n normalizedColumn,\n driver.options.type,\n )\n if (\n column.length &&\n driver.withLengthColumnTypes.indexOf(\n normalizedColumn,\n ) === -1\n )\n throw new TypeORMError(\n `Column ${column.propertyName} of Entity ${entityMetadata.name} does not support length property.`,\n )\n if (\n column.type === \"enum\" &&\n !column.enum &&\n !column.enumName\n )\n throw new TypeORMError(\n `Column \"${column.propertyName}\" of Entity \"${entityMetadata.name}\" is defined as enum, but missing \"enum\" or \"enumName\" properties.`,\n )\n })\n }\n\n if (\n DriverUtils.isMySQLFamily(driver) ||\n driver.options.type === \"aurora-mysql\"\n ) {\n const generatedColumns = entityMetadata.columns.filter(\n (column) =>\n column.isGenerated && column.generationStrategy !== \"uuid\",\n )\n if (generatedColumns.length > 1)\n throw new TypeORMError(\n `Error in ${entityMetadata.name} entity. There can be only one auto-increment column in MySql table.`,\n )\n }\n\n // for mysql we are able to not define a default selected database, instead all entities can have their database\n // defined in their decorators. To make everything work either all entities must have database define and we\n // can live without database set in the connection options, either database in the connection options must be set\n if (DriverUtils.isMySQLFamily(driver)) {\n const metadatasWithDatabase = allEntityMetadatas.filter(\n (metadata) => metadata.database,\n )\n if (metadatasWithDatabase.length === 0 && !driver.database)\n throw new NoConnectionOptionError(\"database\")\n }\n\n if (driver.options.type === \"mssql\") {\n const charsetColumns = entityMetadata.columns.filter(\n (column) => column.charset,\n )\n if (charsetColumns.length > 1)\n throw new TypeORMError(\n `Character set specifying is not supported in Sql Server`,\n )\n }\n\n // Postgres supports only STORED generated columns.\n if (driver.options.type === \"postgres\") {\n const virtualColumn = entityMetadata.columns.find(\n (column) =>\n column.asExpression &&\n (!column.generatedType ||\n column.generatedType === \"VIRTUAL\"),\n )\n if (virtualColumn)\n throw new TypeORMError(\n `Column \"${virtualColumn.propertyName}\" of Entity \"${entityMetadata.name}\" is defined as VIRTUAL, but Postgres supports only STORED generated columns.`,\n )\n }\n\n // check if relations are all without initialized properties\n const entityInstance = entityMetadata.create(undefined, {\n fromDeserializer: true,\n })\n entityMetadata.relations.forEach((relation) => {\n if (relation.isManyToMany || relation.isOneToMany) {\n // we skip relations for which persistence is disabled since initialization in them cannot harm somehow\n if (relation.persistenceEnabled === false) return\n\n // get entity relation value and check if its an array\n const relationInitializedValue =\n relation.getEntityValue(entityInstance)\n if (Array.isArray(relationInitializedValue))\n throw new InitializedRelationError(relation)\n }\n })\n\n // validate relations\n entityMetadata.relations.forEach((relation) => {\n // check join tables:\n // using JoinTable is possible only on one side of the many-to-many relation\n // todo(dima): fix\n // if (relation.joinTable) {\n // if (!relation.isManyToMany)\n // throw new UsingJoinTableIsNotAllowedError(entityMetadata, relation);\n // // if there is inverse side of the relation, then check if it does not have join table too\n // if (relation.hasInverseSide && relation.inverseRelation.joinTable)\n // throw new UsingJoinTableOnlyOnOneSideAllowedError(entityMetadata, relation);\n // }\n // check join columns:\n // using JoinColumn is possible only on one side of the relation and on one-to-one, many-to-one relation types\n // first check if relation is one-to-one or many-to-one\n // todo(dima): fix\n /*if (relation.joinColumn) {\n\n // join column can be applied only on one-to-one and many-to-one relations\n if (!relation.isOneToOne && !relation.isManyToOne)\n throw new UsingJoinColumnIsNotAllowedError(entityMetadata, relation);\n\n // if there is inverse side of the relation, then check if it does not have join table too\n if (relation.hasInverseSide && relation.inverseRelation.joinColumn && relation.isOneToOne)\n throw new UsingJoinColumnOnlyOnOneSideAllowedError(entityMetadata, relation);\n\n // check if join column really has referenced column\n if (relation.joinColumn && !relation.joinColumn.referencedColumn)\n throw new TypeORMError(`Join column does not have referenced column set`);\n\n }\n\n // if its a one-to-one relation and JoinColumn is missing on both sides of the relation\n // or its one-side relation without JoinColumn we should give an error\n if (!relation.joinColumn && relation.isOneToOne && (!relation.hasInverseSide || !relation.inverseRelation.joinColumn))\n throw new MissingJoinColumnError(entityMetadata, relation);*/\n // if its a many-to-many relation and JoinTable is missing on both sides of the relation\n // or its one-side relation without JoinTable we should give an error\n // todo(dima): fix it\n // if (!relation.joinTable && relation.isManyToMany && (!relation.hasInverseSide || !relation.inverseRelation.joinTable))\n // throw new MissingJoinTableError(entityMetadata, relation);\n // todo: validate if its one-to-one and side which does not have join column MUST have inverse side\n // todo: validate if its many-to-many and side which does not have join table MUST have inverse side\n // todo: if there is a relation, and inverse side is specified only on one side, shall we give error\n // todo: with message like: \"Inverse side is specified only on one side of the relationship. Specify on other side too to prevent confusion\".\n // todo: add validation if there two entities with the same target, and show error message with description of the problem (maybe file was renamed/moved but left in output directory)\n // todo: check if there are multiple columns on the same column applied.\n // todo: check column type if is missing in relational databases (throw new TypeORMError(`Column type of ${type} cannot be determined.`);)\n // todo: include driver-specific checks. for example in mongodb empty prefixes are not allowed\n // todo: if multiple columns with same name - throw exception, including cases when columns are in embeds with same prefixes or without prefix at all\n // todo: if multiple primary key used, at least one of them must be unique or @Index decorator must be set on entity\n // todo: check if entity with duplicate names, some decorators exist\n })\n\n // make sure cascade remove is not set for both sides of relationships (can be set in OneToOne decorators)\n entityMetadata.relations.forEach((relation) => {\n const isCircularCascadeRemove =\n relation.isCascadeRemove &&\n relation.inverseRelation &&\n relation.inverseRelation!.isCascadeRemove\n if (isCircularCascadeRemove)\n throw new TypeORMError(\n `Relation ${entityMetadata.name}#${\n relation.propertyName\n } and ${relation.inverseRelation!.entityMetadata.name}#${\n relation.inverseRelation!.propertyName\n } both has cascade remove set. ` +\n `This may lead to unexpected circular removals. Please set cascade remove only from one side of relationship.`,\n )\n }) // todo: maybe better just deny removal from one to one relation without join column?\n\n entityMetadata.eagerRelations.forEach((relation) => {})\n }\n\n /**\n * Validates dependencies of the entity metadatas.\n */\n protected validateDependencies(entityMetadatas: EntityMetadata[]) {\n const graph = new DepGraph()\n entityMetadatas.forEach((entityMetadata) => {\n graph.addNode(entityMetadata.name)\n })\n entityMetadatas.forEach((entityMetadata) => {\n entityMetadata.relationsWithJoinColumns\n .filter((relation) => !relation.isNullable)\n .forEach((relation) => {\n graph.addDependency(\n entityMetadata.name,\n relation.inverseEntityMetadata.name,\n )\n })\n })\n try {\n graph.overallOrder()\n } catch (err) {\n throw new CircularRelationsError(\n err.toString().replace(\"Error: Dependency Cycle Found: \", \"\"),\n )\n }\n }\n\n /**\n * Validates eager relations to prevent circular dependency in them.\n */\n protected validateEagerRelations(entityMetadatas: EntityMetadata[]) {\n entityMetadatas.forEach((entityMetadata) => {\n entityMetadata.eagerRelations.forEach((relation) => {\n if (\n relation.inverseRelation &&\n relation.inverseRelation.isEager\n )\n throw new TypeORMError(\n `Circular eager relations are disallowed. ` +\n `${entityMetadata.targetName}#${relation.propertyPath} contains \"eager: true\", and its inverse side ` +\n `${relation.inverseEntityMetadata.targetName}#${relation.inverseRelation.propertyPath} contains \"eager: true\" as well.` +\n ` Remove \"eager: true\" from one side of the relation.`,\n )\n })\n })\n }\n}\n"],"sourceRoot":".."}
@@ -1,8 +1,8 @@
1
1
  import { ColumnMetadata } from "../metadata/ColumnMetadata";
2
- import { DataSource } from "../data-source/DataSource";
2
+ import type { DataSource } from "../data-source/DataSource";
3
3
  import { EntityMetadata } from "../metadata/EntityMetadata";
4
- import { JoinTableMetadataArgs } from "../metadata-args/JoinTableMetadataArgs";
5
- import { RelationMetadata } from "../metadata/RelationMetadata";
4
+ import type { JoinTableMetadataArgs } from "../metadata-args/JoinTableMetadataArgs";
5
+ import type { RelationMetadata } from "../metadata/RelationMetadata";
6
6
  /**
7
7
  * Creates EntityMetadata for junction tables.
8
8
  * Junction tables are tables generated by many-to-many relations.