typeorm 0.2.38 → 0.2.39-dev.2c861af

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 (677) hide show
  1. package/README.md +60 -59
  2. package/browser/connection/ConnectionMetadataBuilder.js +4 -4
  3. package/browser/connection/ConnectionMetadataBuilder.js.map +1 -1
  4. package/browser/connection/ConnectionOptionsReader.js +2 -1
  5. package/browser/connection/ConnectionOptionsReader.js.map +1 -1
  6. package/browser/connection/options-reader/ConnectionOptionsYmlReader.js +1 -1
  7. package/browser/connection/options-reader/ConnectionOptionsYmlReader.js.map +1 -1
  8. package/browser/decorator/entity-view/ViewEntity.js +1 -0
  9. package/browser/decorator/entity-view/ViewEntity.js.map +1 -1
  10. package/browser/decorator/options/ViewEntityOptions.d.ts +5 -0
  11. package/browser/decorator/options/ViewEntityOptions.js.map +1 -1
  12. package/browser/decorator/transaction/Transaction.js +3 -3
  13. package/browser/decorator/transaction/Transaction.js.map +1 -1
  14. package/browser/driver/DriverUtils.js +1 -1
  15. package/browser/driver/DriverUtils.js.map +1 -1
  16. package/browser/driver/aurora-data-api/AuroraDataApiConnectionOptions.d.ts +5 -0
  17. package/browser/driver/aurora-data-api/AuroraDataApiConnectionOptions.js.map +1 -1
  18. package/browser/driver/aurora-data-api/AuroraDataApiDriver.js +6 -5
  19. package/browser/driver/aurora-data-api/AuroraDataApiDriver.js.map +1 -1
  20. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js +19 -48
  21. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  22. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresConnectionOptions.d.ts +5 -0
  23. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresConnectionOptions.js.map +1 -1
  24. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js +2 -1
  25. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js.map +1 -1
  26. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js +17 -46
  27. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js.map +1 -1
  28. package/browser/driver/better-sqlite3/BetterSqlite3ConnectionOptions.d.ts +5 -0
  29. package/browser/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js.map +1 -1
  30. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js +4 -3
  31. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  32. package/browser/driver/cockroachdb/CockroachConnectionOptions.d.ts +10 -0
  33. package/browser/driver/cockroachdb/CockroachConnectionOptions.js.map +1 -1
  34. package/browser/driver/cockroachdb/CockroachDriver.js +5 -4
  35. package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
  36. package/browser/driver/cockroachdb/CockroachQueryRunner.js +46 -77
  37. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  38. package/browser/driver/cordova/CordovaConnectionOptions.d.ts +5 -0
  39. package/browser/driver/cordova/CordovaConnectionOptions.js.map +1 -1
  40. package/browser/driver/cordova/CordovaDriver.js +2 -1
  41. package/browser/driver/cordova/CordovaDriver.js.map +1 -1
  42. package/browser/driver/expo/ExpoQueryRunner.js +12 -43
  43. package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
  44. package/browser/driver/mongodb/MongoConnectionOptions.d.ts +5 -0
  45. package/browser/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  46. package/browser/driver/mongodb/MongoDriver.js +2 -1
  47. package/browser/driver/mongodb/MongoDriver.js.map +1 -1
  48. package/browser/driver/mysql/MysqlConnectionOptions.d.ts +6 -0
  49. package/browser/driver/mysql/MysqlConnectionOptions.js.map +1 -1
  50. package/browser/driver/mysql/MysqlDriver.js +4 -2
  51. package/browser/driver/mysql/MysqlDriver.js.map +1 -1
  52. package/browser/driver/mysql/MysqlQueryRunner.js +24 -54
  53. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  54. package/browser/driver/nativescript/NativescriptQueryRunner.js +45 -37
  55. package/browser/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  56. package/browser/driver/oracle/OracleConnectionOptions.d.ts +5 -0
  57. package/browser/driver/oracle/OracleConnectionOptions.js.map +1 -1
  58. package/browser/driver/oracle/OracleDriver.js +5 -4
  59. package/browser/driver/oracle/OracleDriver.js.map +1 -1
  60. package/browser/driver/oracle/OracleQueryRunner.js +20 -48
  61. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  62. package/browser/driver/postgres/PostgresConnectionOptions.d.ts +10 -0
  63. package/browser/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  64. package/browser/driver/postgres/PostgresDriver.js +6 -5
  65. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  66. package/browser/driver/postgres/PostgresQueryRunner.js +21 -51
  67. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  68. package/browser/driver/react-native/ReactNativeConnectionOptions.d.ts +5 -0
  69. package/browser/driver/react-native/ReactNativeConnectionOptions.js.map +1 -1
  70. package/browser/driver/react-native/ReactNativeDriver.js +2 -1
  71. package/browser/driver/react-native/ReactNativeDriver.js.map +1 -1
  72. package/browser/driver/sap/SapConnectionOptions.d.ts +16 -6
  73. package/browser/driver/sap/SapConnectionOptions.js.map +1 -1
  74. package/browser/driver/sap/SapDriver.js +6 -3
  75. package/browser/driver/sap/SapDriver.js.map +1 -1
  76. package/browser/driver/sap/SapQueryRunner.js +20 -50
  77. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  78. package/browser/driver/sqlite/SqliteConnectionOptions.d.ts +5 -0
  79. package/browser/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
  80. package/browser/driver/sqlite/SqliteDriver.js +4 -3
  81. package/browser/driver/sqlite/SqliteDriver.js.map +1 -1
  82. package/browser/driver/sqlite/SqliteQueryRunner.js +16 -8
  83. package/browser/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  84. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +19 -49
  85. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  86. package/browser/driver/sqljs/SqljsConnectionOptions.d.ts +5 -0
  87. package/browser/driver/sqljs/SqljsConnectionOptions.js.map +1 -1
  88. package/browser/driver/sqljs/SqljsDriver.js +4 -2
  89. package/browser/driver/sqljs/SqljsDriver.js.map +1 -1
  90. package/browser/driver/sqlserver/SqlServerConnectionOptions.d.ts +5 -0
  91. package/browser/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
  92. package/browser/driver/sqlserver/SqlServerDriver.js +7 -6
  93. package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
  94. package/browser/driver/sqlserver/SqlServerQueryRunner.js +84 -116
  95. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  96. package/browser/entity-manager/MongoEntityManager.js +8 -13
  97. package/browser/entity-manager/MongoEntityManager.js.map +1 -1
  98. package/browser/find-options/FindOptionsUtils.js +1 -1
  99. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  100. package/browser/metadata/ColumnMetadata.js +4 -4
  101. package/browser/metadata/ColumnMetadata.js.map +1 -1
  102. package/browser/metadata/EmbeddedMetadata.js +1 -1
  103. package/browser/metadata/EmbeddedMetadata.js.map +1 -1
  104. package/browser/metadata/EntityMetadata.d.ts +5 -0
  105. package/browser/metadata/EntityMetadata.js +2 -1
  106. package/browser/metadata/EntityMetadata.js.map +1 -1
  107. package/browser/metadata/RelationMetadata.js +4 -4
  108. package/browser/metadata/RelationMetadata.js.map +1 -1
  109. package/browser/metadata-args/TableMetadataArgs.d.ts +4 -0
  110. package/browser/metadata-args/TableMetadataArgs.js.map +1 -1
  111. package/browser/metadata-builder/EntityMetadataBuilder.js +5 -5
  112. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  113. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +1 -1
  114. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  115. package/browser/naming-strategy/DefaultNamingStrategy.js +5 -5
  116. package/browser/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  117. package/browser/persistence/Subject.js +1 -1
  118. package/browser/persistence/Subject.js.map +1 -1
  119. package/browser/persistence/SubjectDatabaseEntityLoader.js +1 -1
  120. package/browser/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  121. package/browser/persistence/SubjectExecutor.js +1 -1
  122. package/browser/persistence/SubjectExecutor.js.map +1 -1
  123. package/browser/persistence/SubjectTopoligicalSorter.js +5 -5
  124. package/browser/persistence/SubjectTopoligicalSorter.js.map +1 -1
  125. package/browser/persistence/tree/ClosureSubjectExecutor.js +4 -4
  126. package/browser/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  127. package/browser/query-builder/DeleteQueryBuilder.js +3 -10
  128. package/browser/query-builder/DeleteQueryBuilder.js.map +1 -1
  129. package/browser/query-builder/InsertQueryBuilder.js +4 -6
  130. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  131. package/browser/query-builder/QueryBuilder.js +9 -9
  132. package/browser/query-builder/QueryBuilder.js.map +1 -1
  133. package/browser/query-builder/RelationLoader.js +2 -2
  134. package/browser/query-builder/RelationLoader.js.map +1 -1
  135. package/browser/query-builder/RelationRemover.js +6 -6
  136. package/browser/query-builder/RelationRemover.js.map +1 -1
  137. package/browser/query-builder/SelectQueryBuilder.js +14 -14
  138. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  139. package/browser/query-builder/SoftDeleteQueryBuilder.js +3 -10
  140. package/browser/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  141. package/browser/query-builder/UpdateQueryBuilder.js +5 -12
  142. package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
  143. package/browser/query-builder/relation-id/RelationIdLoader.js +1 -1
  144. package/browser/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  145. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js +2 -2
  146. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  147. package/browser/query-runner/BaseQueryRunner.js +2 -2
  148. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  149. package/browser/query-runner/QueryLock.js +1 -1
  150. package/browser/query-runner/QueryLock.js.map +1 -1
  151. package/browser/repository/BaseEntity.js +1 -1
  152. package/browser/repository/BaseEntity.js.map +1 -1
  153. package/browser/repository/Repository.js +1 -1
  154. package/browser/repository/Repository.js.map +1 -1
  155. package/browser/repository/TreeRepository.js +2 -2
  156. package/browser/repository/TreeRepository.js.map +1 -1
  157. package/browser/schema-builder/RdbmsSchemaBuilder.js +223 -148
  158. package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  159. package/browser/schema-builder/table/TableCheck.js +1 -1
  160. package/browser/schema-builder/table/TableCheck.js.map +1 -1
  161. package/browser/schema-builder/table/TableForeignKey.js +2 -2
  162. package/browser/schema-builder/table/TableForeignKey.js.map +1 -1
  163. package/browser/schema-builder/table/TableIndex.js +1 -1
  164. package/browser/schema-builder/table/TableIndex.js.map +1 -1
  165. package/browser/schema-builder/table/TableUnique.js +1 -1
  166. package/browser/schema-builder/table/TableUnique.js.map +1 -1
  167. package/browser/schema-builder/util/ViewUtils.d.ts +7 -0
  168. package/browser/schema-builder/util/ViewUtils.js +25 -0
  169. package/browser/schema-builder/util/ViewUtils.js.map +1 -0
  170. package/browser/subscriber/Broadcaster.d.ts +23 -2
  171. package/browser/subscriber/Broadcaster.js +35 -2
  172. package/browser/subscriber/Broadcaster.js.map +1 -1
  173. package/browser/subscriber/BroadcasterResult.d.ts +4 -0
  174. package/browser/subscriber/BroadcasterResult.js +19 -0
  175. package/browser/subscriber/BroadcasterResult.js.map +1 -1
  176. package/cache/DbQueryResultCache.js +12 -12
  177. package/cache/RedisQueryResultCache.js +12 -12
  178. package/cli.js +1 -6
  179. package/cli.js.map +1 -1
  180. package/commands/CacheClearCommand.js +4 -4
  181. package/commands/CacheClearCommand.js.map +1 -1
  182. package/commands/CommandUtils.js +10 -10
  183. package/commands/CommandUtils.js.map +1 -1
  184. package/commands/EntityCreateCommand.js +3 -3
  185. package/commands/EntityCreateCommand.js.map +1 -1
  186. package/commands/InitCommand.js +5 -5
  187. package/commands/InitCommand.js.map +1 -1
  188. package/commands/MigrationCreateCommand.js +5 -5
  189. package/commands/MigrationCreateCommand.js.map +1 -1
  190. package/commands/MigrationGenerateCommand.js +7 -7
  191. package/commands/MigrationGenerateCommand.js.map +1 -1
  192. package/commands/MigrationRevertCommand.js +4 -4
  193. package/commands/MigrationRevertCommand.js.map +1 -1
  194. package/commands/MigrationRunCommand.js +5 -5
  195. package/commands/MigrationRunCommand.js.map +1 -1
  196. package/commands/MigrationShowCommand.js +5 -5
  197. package/commands/MigrationShowCommand.js.map +1 -1
  198. package/commands/QueryCommand.js +4 -4
  199. package/commands/QueryCommand.js.map +1 -1
  200. package/commands/SchemaDropCommand.js +4 -4
  201. package/commands/SchemaDropCommand.js.map +1 -1
  202. package/commands/SchemaLogCommand.js +5 -5
  203. package/commands/SchemaLogCommand.js.map +1 -1
  204. package/commands/SchemaSyncCommand.js +4 -4
  205. package/commands/SchemaSyncCommand.js.map +1 -1
  206. package/commands/SubscriberCreateCommand.js +3 -3
  207. package/commands/SubscriberCreateCommand.js.map +1 -1
  208. package/commands/VersionCommand.js +3 -3
  209. package/commands/VersionCommand.js.map +1 -1
  210. package/connection/Connection.js +19 -19
  211. package/connection/Connection.js.map +1 -1
  212. package/connection/ConnectionMetadataBuilder.js +11 -11
  213. package/connection/ConnectionMetadataBuilder.js.map +1 -1
  214. package/connection/ConnectionOptionsReader.js +11 -10
  215. package/connection/ConnectionOptionsReader.js.map +1 -1
  216. package/connection/options-reader/ConnectionOptionsEnvReader.js +2 -2
  217. package/connection/options-reader/ConnectionOptionsXmlReader.js +3 -3
  218. package/connection/options-reader/ConnectionOptionsXmlReader.js.map +1 -1
  219. package/connection/options-reader/ConnectionOptionsYmlReader.js +4 -4
  220. package/connection/options-reader/ConnectionOptionsYmlReader.js.map +1 -1
  221. package/decorator/Check.js +1 -1
  222. package/decorator/Check.js.map +1 -1
  223. package/decorator/EntityRepository.js +1 -1
  224. package/decorator/EntityRepository.js.map +1 -1
  225. package/decorator/Exclusion.js +1 -1
  226. package/decorator/Exclusion.js.map +1 -1
  227. package/decorator/Generated.js +1 -1
  228. package/decorator/Generated.js.map +1 -1
  229. package/decorator/Index.js +1 -1
  230. package/decorator/Index.js.map +1 -1
  231. package/decorator/Unique.js +1 -1
  232. package/decorator/Unique.js.map +1 -1
  233. package/decorator/columns/Column.js +4 -4
  234. package/decorator/columns/Column.js.map +1 -1
  235. package/decorator/columns/CreateDateColumn.js +1 -1
  236. package/decorator/columns/CreateDateColumn.js.map +1 -1
  237. package/decorator/columns/DeleteDateColumn.js +1 -1
  238. package/decorator/columns/DeleteDateColumn.js.map +1 -1
  239. package/decorator/columns/ObjectIdColumn.js +1 -1
  240. package/decorator/columns/ObjectIdColumn.js.map +1 -1
  241. package/decorator/columns/PrimaryColumn.js +2 -2
  242. package/decorator/columns/PrimaryColumn.js.map +1 -1
  243. package/decorator/columns/PrimaryGeneratedColumn.js +2 -2
  244. package/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
  245. package/decorator/columns/UpdateDateColumn.js +1 -1
  246. package/decorator/columns/UpdateDateColumn.js.map +1 -1
  247. package/decorator/columns/VersionColumn.js +1 -1
  248. package/decorator/columns/VersionColumn.js.map +1 -1
  249. package/decorator/columns/ViewColumn.js +1 -1
  250. package/decorator/columns/ViewColumn.js.map +1 -1
  251. package/decorator/entity/ChildEntity.js +2 -2
  252. package/decorator/entity/ChildEntity.js.map +1 -1
  253. package/decorator/entity/Entity.js +1 -1
  254. package/decorator/entity/Entity.js.map +1 -1
  255. package/decorator/entity/TableInheritance.js +1 -1
  256. package/decorator/entity/TableInheritance.js.map +1 -1
  257. package/decorator/entity-view/ViewEntity.js +2 -1
  258. package/decorator/entity-view/ViewEntity.js.map +1 -1
  259. package/decorator/listeners/AfterInsert.js +1 -1
  260. package/decorator/listeners/AfterInsert.js.map +1 -1
  261. package/decorator/listeners/AfterLoad.js +1 -1
  262. package/decorator/listeners/AfterLoad.js.map +1 -1
  263. package/decorator/listeners/AfterRemove.js +1 -1
  264. package/decorator/listeners/AfterRemove.js.map +1 -1
  265. package/decorator/listeners/AfterUpdate.js +1 -1
  266. package/decorator/listeners/AfterUpdate.js.map +1 -1
  267. package/decorator/listeners/BeforeInsert.js +1 -1
  268. package/decorator/listeners/BeforeInsert.js.map +1 -1
  269. package/decorator/listeners/BeforeRemove.js +1 -1
  270. package/decorator/listeners/BeforeRemove.js.map +1 -1
  271. package/decorator/listeners/BeforeUpdate.js +1 -1
  272. package/decorator/listeners/BeforeUpdate.js.map +1 -1
  273. package/decorator/listeners/EventSubscriber.js +1 -1
  274. package/decorator/listeners/EventSubscriber.js.map +1 -1
  275. package/decorator/options/ViewEntityOptions.d.ts +5 -0
  276. package/decorator/options/ViewEntityOptions.js.map +1 -1
  277. package/decorator/relations/JoinColumn.js +1 -1
  278. package/decorator/relations/JoinColumn.js.map +1 -1
  279. package/decorator/relations/JoinTable.js +1 -1
  280. package/decorator/relations/JoinTable.js.map +1 -1
  281. package/decorator/relations/ManyToMany.js +1 -1
  282. package/decorator/relations/ManyToMany.js.map +1 -1
  283. package/decorator/relations/ManyToOne.js +1 -1
  284. package/decorator/relations/ManyToOne.js.map +1 -1
  285. package/decorator/relations/OneToMany.js +1 -1
  286. package/decorator/relations/OneToMany.js.map +1 -1
  287. package/decorator/relations/OneToOne.js +1 -1
  288. package/decorator/relations/OneToOne.js.map +1 -1
  289. package/decorator/relations/RelationCount.js +1 -1
  290. package/decorator/relations/RelationCount.js.map +1 -1
  291. package/decorator/relations/RelationId.js +1 -1
  292. package/decorator/relations/RelationId.js.map +1 -1
  293. package/decorator/transaction/Transaction.js +7 -7
  294. package/decorator/transaction/Transaction.js.map +1 -1
  295. package/decorator/transaction/TransactionManager.js +1 -1
  296. package/decorator/transaction/TransactionManager.js.map +1 -1
  297. package/decorator/transaction/TransactionRepository.js +1 -1
  298. package/decorator/transaction/TransactionRepository.js.map +1 -1
  299. package/decorator/tree/Tree.js +1 -1
  300. package/decorator/tree/Tree.js.map +1 -1
  301. package/decorator/tree/TreeChildren.js +1 -1
  302. package/decorator/tree/TreeChildren.js.map +1 -1
  303. package/decorator/tree/TreeLevelColumn.js +1 -1
  304. package/decorator/tree/TreeLevelColumn.js.map +1 -1
  305. package/decorator/tree/TreeParent.js +1 -1
  306. package/decorator/tree/TreeParent.js.map +1 -1
  307. package/driver/DriverUtils.js +9 -9
  308. package/driver/DriverUtils.js.map +1 -1
  309. package/driver/aurora-data-api/AuroraDataApiConnection.js +1 -1
  310. package/driver/aurora-data-api/AuroraDataApiConnection.js.map +1 -1
  311. package/driver/aurora-data-api/AuroraDataApiConnectionOptions.d.ts +5 -0
  312. package/driver/aurora-data-api/AuroraDataApiConnectionOptions.js.map +1 -1
  313. package/driver/aurora-data-api/AuroraDataApiDriver.js +12 -11
  314. package/driver/aurora-data-api/AuroraDataApiDriver.js.map +1 -1
  315. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js +146 -175
  316. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  317. package/driver/aurora-data-api-pg/AuroraDataApiPostgresConnectionOptions.d.ts +5 -0
  318. package/driver/aurora-data-api-pg/AuroraDataApiPostgresConnectionOptions.js.map +1 -1
  319. package/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js +10 -9
  320. package/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js.map +1 -1
  321. package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js +29 -58
  322. package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js.map +1 -1
  323. package/driver/better-sqlite3/BetterSqlite3ConnectionOptions.d.ts +5 -0
  324. package/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js.map +1 -1
  325. package/driver/better-sqlite3/BetterSqlite3Driver.js +12 -11
  326. package/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  327. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js +5 -5
  328. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  329. package/driver/capacitor/CapacitorDriver.js +7 -7
  330. package/driver/capacitor/CapacitorDriver.js.map +1 -1
  331. package/driver/capacitor/CapacitorQueryRunner.js +5 -5
  332. package/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
  333. package/driver/cockroachdb/CockroachConnectionOptions.d.ts +10 -0
  334. package/driver/cockroachdb/CockroachConnectionOptions.js.map +1 -1
  335. package/driver/cockroachdb/CockroachDriver.js +15 -14
  336. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  337. package/driver/cockroachdb/CockroachQueryRunner.js +180 -211
  338. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  339. package/driver/cordova/CordovaConnectionOptions.d.ts +5 -0
  340. package/driver/cordova/CordovaConnectionOptions.js.map +1 -1
  341. package/driver/cordova/CordovaDriver.js +5 -4
  342. package/driver/cordova/CordovaDriver.js.map +1 -1
  343. package/driver/cordova/CordovaQueryRunner.js +13 -13
  344. package/driver/cordova/CordovaQueryRunner.js.map +1 -1
  345. package/driver/expo/ExpoDriver.js +3 -3
  346. package/driver/expo/ExpoDriver.js.map +1 -1
  347. package/driver/expo/ExpoQueryRunner.js +23 -54
  348. package/driver/expo/ExpoQueryRunner.js.map +1 -1
  349. package/driver/mongodb/MongoConnectionOptions.d.ts +5 -0
  350. package/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  351. package/driver/mongodb/MongoDriver.js +4 -3
  352. package/driver/mongodb/MongoDriver.js.map +1 -1
  353. package/driver/mongodb/MongoQueryRunner.js +178 -178
  354. package/driver/mysql/MysqlConnectionOptions.d.ts +6 -0
  355. package/driver/mysql/MysqlConnectionOptions.js.map +1 -1
  356. package/driver/mysql/MysqlDriver.js +9 -7
  357. package/driver/mysql/MysqlDriver.js.map +1 -1
  358. package/driver/mysql/MysqlQueryRunner.js +152 -182
  359. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  360. package/driver/nativescript/NativescriptDriver.js +3 -3
  361. package/driver/nativescript/NativescriptDriver.js.map +1 -1
  362. package/driver/nativescript/NativescriptQueryRunner.js +48 -40
  363. package/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  364. package/driver/oracle/OracleConnectionOptions.d.ts +5 -0
  365. package/driver/oracle/OracleConnectionOptions.js.map +1 -1
  366. package/driver/oracle/OracleDriver.js +13 -12
  367. package/driver/oracle/OracleDriver.js.map +1 -1
  368. package/driver/oracle/OracleQueryRunner.js +143 -171
  369. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  370. package/driver/postgres/PostgresConnectionOptions.d.ts +10 -0
  371. package/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  372. package/driver/postgres/PostgresDriver.js +24 -23
  373. package/driver/postgres/PostgresDriver.js.map +1 -1
  374. package/driver/postgres/PostgresQueryRunner.js +169 -199
  375. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  376. package/driver/react-native/ReactNativeConnectionOptions.d.ts +5 -0
  377. package/driver/react-native/ReactNativeConnectionOptions.js.map +1 -1
  378. package/driver/react-native/ReactNativeDriver.js +5 -4
  379. package/driver/react-native/ReactNativeDriver.js.map +1 -1
  380. package/driver/react-native/ReactNativeQueryRunner.js +3 -3
  381. package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  382. package/driver/sap/SapConnectionOptions.d.ts +16 -6
  383. package/driver/sap/SapConnectionOptions.js.map +1 -1
  384. package/driver/sap/SapDriver.js +11 -8
  385. package/driver/sap/SapDriver.js.map +1 -1
  386. package/driver/sap/SapQueryRunner.js +153 -183
  387. package/driver/sap/SapQueryRunner.js.map +1 -1
  388. package/driver/sqlite/SqliteConnectionOptions.d.ts +5 -0
  389. package/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
  390. package/driver/sqlite/SqliteDriver.js +12 -11
  391. package/driver/sqlite/SqliteDriver.js.map +1 -1
  392. package/driver/sqlite/SqliteQueryRunner.js +21 -13
  393. package/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  394. package/driver/sqlite-abstract/AbstractSqliteDriver.js +4 -4
  395. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +138 -168
  396. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  397. package/driver/sqljs/SqljsConnectionOptions.d.ts +5 -0
  398. package/driver/sqljs/SqljsConnectionOptions.js.map +1 -1
  399. package/driver/sqljs/SqljsDriver.js +17 -15
  400. package/driver/sqljs/SqljsDriver.js.map +1 -1
  401. package/driver/sqljs/SqljsQueryRunner.js +9 -9
  402. package/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  403. package/driver/sqlserver/SqlServerConnectionOptions.d.ts +5 -0
  404. package/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
  405. package/driver/sqlserver/SqlServerDriver.js +13 -12
  406. package/driver/sqlserver/SqlServerDriver.js.map +1 -1
  407. package/driver/sqlserver/SqlServerQueryRunner.js +220 -252
  408. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  409. package/entity-manager/EntityManager.js +30 -30
  410. package/entity-manager/EntityManager.js.map +1 -1
  411. package/entity-manager/MongoEntityManager.js +23 -28
  412. package/entity-manager/MongoEntityManager.js.map +1 -1
  413. package/entity-manager/SqljsEntityManager.js +5 -5
  414. package/entity-manager/SqljsEntityManager.js.map +1 -1
  415. package/entity-schema/EntitySchemaTransformer.js +1 -1
  416. package/entity-schema/EntitySchemaTransformer.js.map +1 -1
  417. package/error/AlreadyHasActiveConnectionError.js +1 -1
  418. package/error/AlreadyHasActiveConnectionError.js.map +1 -1
  419. package/error/CannotAttachTreeChildrenEntityError.js +1 -1
  420. package/error/CannotAttachTreeChildrenEntityError.js.map +1 -1
  421. package/error/CannotConnectAlreadyConnectedError.js +1 -1
  422. package/error/CannotConnectAlreadyConnectedError.js.map +1 -1
  423. package/error/CannotCreateEntityIdMapError.js +1 -1
  424. package/error/CannotCreateEntityIdMapError.js.map +1 -1
  425. package/error/CannotDetermineEntityError.js +1 -1
  426. package/error/CannotDetermineEntityError.js.map +1 -1
  427. package/error/CannotExecuteNotConnectedError.js +1 -1
  428. package/error/CannotExecuteNotConnectedError.js.map +1 -1
  429. package/error/CannotGetEntityManagerNotConnectedError.js +1 -1
  430. package/error/CannotGetEntityManagerNotConnectedError.js.map +1 -1
  431. package/error/CannotReflectMethodParameterTypeError.js +1 -1
  432. package/error/CannotReflectMethodParameterTypeError.js.map +1 -1
  433. package/error/CircularRelationsError.js +1 -1
  434. package/error/CircularRelationsError.js.map +1 -1
  435. package/error/ColumnTypeUndefinedError.js +1 -1
  436. package/error/ColumnTypeUndefinedError.js.map +1 -1
  437. package/error/ConnectionIsNotSetError.js +1 -1
  438. package/error/ConnectionIsNotSetError.js.map +1 -1
  439. package/error/ConnectionNotFoundError.js +1 -1
  440. package/error/ConnectionNotFoundError.js.map +1 -1
  441. package/error/CustomRepositoryCannotInheritRepositoryError.js +1 -1
  442. package/error/CustomRepositoryCannotInheritRepositoryError.js.map +1 -1
  443. package/error/CustomRepositoryDoesNotHaveEntityError.js +1 -1
  444. package/error/CustomRepositoryDoesNotHaveEntityError.js.map +1 -1
  445. package/error/CustomRepositoryNotFoundError.js +1 -1
  446. package/error/CustomRepositoryNotFoundError.js.map +1 -1
  447. package/error/DataTypeNotSupportedError.js +1 -1
  448. package/error/DataTypeNotSupportedError.js.map +1 -1
  449. package/error/DriverOptionNotSetError.js +1 -1
  450. package/error/DriverOptionNotSetError.js.map +1 -1
  451. package/error/DriverPackageNotInstalledError.js +1 -1
  452. package/error/DriverPackageNotInstalledError.js.map +1 -1
  453. package/error/EntityColumnNotFound.js +1 -1
  454. package/error/EntityColumnNotFound.js.map +1 -1
  455. package/error/EntityMetadataNotFoundError.js +1 -1
  456. package/error/EntityMetadataNotFoundError.js.map +1 -1
  457. package/error/EntityNotFoundError.js +1 -1
  458. package/error/EntityNotFoundError.js.map +1 -1
  459. package/error/FindRelationsNotFoundError.js +1 -1
  460. package/error/FindRelationsNotFoundError.js.map +1 -1
  461. package/error/InitializedRelationError.js +1 -1
  462. package/error/InitializedRelationError.js.map +1 -1
  463. package/error/InsertValuesMissingError.js +1 -1
  464. package/error/InsertValuesMissingError.js.map +1 -1
  465. package/error/LimitOnUpdateNotSupportedError.js +1 -1
  466. package/error/LimitOnUpdateNotSupportedError.js.map +1 -1
  467. package/error/LockNotSupportedOnGivenDriverError.js +1 -1
  468. package/error/LockNotSupportedOnGivenDriverError.js.map +1 -1
  469. package/error/MetadataAlreadyExistsError.js +1 -1
  470. package/error/MetadataAlreadyExistsError.js.map +1 -1
  471. package/error/MetadataWithSuchNameAlreadyExistsError.js +1 -1
  472. package/error/MetadataWithSuchNameAlreadyExistsError.js.map +1 -1
  473. package/error/MissingDeleteDateColumnError.js +1 -1
  474. package/error/MissingDeleteDateColumnError.js.map +1 -1
  475. package/error/MissingDriverError.js +1 -1
  476. package/error/MissingDriverError.js.map +1 -1
  477. package/error/MissingJoinColumnError.js +1 -1
  478. package/error/MissingJoinColumnError.js.map +1 -1
  479. package/error/MissingJoinTableError.js +1 -1
  480. package/error/MissingJoinTableError.js.map +1 -1
  481. package/error/MissingPrimaryColumnError.js +1 -1
  482. package/error/MissingPrimaryColumnError.js.map +1 -1
  483. package/error/MustBeEntityError.js +1 -1
  484. package/error/MustBeEntityError.js.map +1 -1
  485. package/error/NamingStrategyNotFoundError.js +1 -1
  486. package/error/NamingStrategyNotFoundError.js.map +1 -1
  487. package/error/NestedSetMultipleRootError.js +1 -1
  488. package/error/NestedSetMultipleRootError.js.map +1 -1
  489. package/error/NoConnectionForRepositoryError.js +1 -1
  490. package/error/NoConnectionForRepositoryError.js.map +1 -1
  491. package/error/NoConnectionOptionError.js +1 -1
  492. package/error/NoConnectionOptionError.js.map +1 -1
  493. package/error/NoNeedToReleaseEntityManagerError.js +1 -1
  494. package/error/NoNeedToReleaseEntityManagerError.js.map +1 -1
  495. package/error/NoVersionOrUpdateDateColumnError.js +1 -1
  496. package/error/NoVersionOrUpdateDateColumnError.js.map +1 -1
  497. package/error/OffsetWithoutLimitNotSupportedError.js +1 -1
  498. package/error/OffsetWithoutLimitNotSupportedError.js.map +1 -1
  499. package/error/OptimisticLockCanNotBeUsedError.js +1 -1
  500. package/error/OptimisticLockCanNotBeUsedError.js.map +1 -1
  501. package/error/OptimisticLockVersionMismatchError.js +1 -1
  502. package/error/OptimisticLockVersionMismatchError.js.map +1 -1
  503. package/error/PersistedEntityNotFoundError.js +1 -1
  504. package/error/PersistedEntityNotFoundError.js.map +1 -1
  505. package/error/PessimisticLockTransactionRequiredError.js +1 -1
  506. package/error/PessimisticLockTransactionRequiredError.js.map +1 -1
  507. package/error/PrimaryColumnCannotBeNullableError.js +1 -1
  508. package/error/PrimaryColumnCannotBeNullableError.js.map +1 -1
  509. package/error/QueryFailedError.js +3 -3
  510. package/error/QueryFailedError.js.map +1 -1
  511. package/error/QueryRunnerAlreadyReleasedError.js +1 -1
  512. package/error/QueryRunnerAlreadyReleasedError.js.map +1 -1
  513. package/error/QueryRunnerProviderAlreadyReleasedError.js +1 -1
  514. package/error/QueryRunnerProviderAlreadyReleasedError.js.map +1 -1
  515. package/error/RepositoryNotFoundError.js +1 -1
  516. package/error/RepositoryNotFoundError.js.map +1 -1
  517. package/error/RepositoryNotTreeError.js +1 -1
  518. package/error/RepositoryNotTreeError.js.map +1 -1
  519. package/error/ReturningStatementNotSupportedError.js +1 -1
  520. package/error/ReturningStatementNotSupportedError.js.map +1 -1
  521. package/error/SubjectRemovedAndUpdatedError.js +1 -1
  522. package/error/SubjectRemovedAndUpdatedError.js.map +1 -1
  523. package/error/SubjectWithoutIdentifierError.js +1 -1
  524. package/error/SubjectWithoutIdentifierError.js.map +1 -1
  525. package/error/TransactionAlreadyStartedError.js +1 -1
  526. package/error/TransactionAlreadyStartedError.js.map +1 -1
  527. package/error/TransactionNotStartedError.js +1 -1
  528. package/error/TransactionNotStartedError.js.map +1 -1
  529. package/error/TreeRepositoryNotSupportedError.js +1 -1
  530. package/error/TreeRepositoryNotSupportedError.js.map +1 -1
  531. package/error/TypeORMError.js +1 -1
  532. package/error/TypeORMError.js.map +1 -1
  533. package/error/UpdateValuesMissingError.js +1 -1
  534. package/error/UpdateValuesMissingError.js.map +1 -1
  535. package/error/UsingJoinColumnIsNotAllowedError.js +1 -1
  536. package/error/UsingJoinColumnIsNotAllowedError.js.map +1 -1
  537. package/error/UsingJoinColumnOnlyOnOneSideAllowedError.js +1 -1
  538. package/error/UsingJoinColumnOnlyOnOneSideAllowedError.js.map +1 -1
  539. package/error/UsingJoinTableIsNotAllowedError.js +1 -1
  540. package/error/UsingJoinTableIsNotAllowedError.js.map +1 -1
  541. package/error/UsingJoinTableOnlyOnOneSideAllowedError.js +1 -1
  542. package/error/UsingJoinTableOnlyOnOneSideAllowedError.js.map +1 -1
  543. package/error/index.js +62 -62
  544. package/error/index.js.map +1 -1
  545. package/find-options/FindOptionsUtils.js +4 -4
  546. package/find-options/FindOptionsUtils.js.map +1 -1
  547. package/globals.js +7 -7
  548. package/globals.js.map +1 -1
  549. package/index.js +102 -102
  550. package/index.js.map +1 -1
  551. package/logger/DebugLogger.js +9 -9
  552. package/logger/DebugLogger.js.map +1 -1
  553. package/logger/FileLogger.js +1 -1
  554. package/logger/FileLogger.js.map +1 -1
  555. package/metadata/ColumnMetadata.js +4 -4
  556. package/metadata/ColumnMetadata.js.map +1 -1
  557. package/metadata/EmbeddedMetadata.js +1 -1
  558. package/metadata/EmbeddedMetadata.js.map +1 -1
  559. package/metadata/EntityMetadata.d.ts +5 -0
  560. package/metadata/EntityMetadata.js +3 -2
  561. package/metadata/EntityMetadata.js.map +1 -1
  562. package/metadata/RelationMetadata.js +4 -4
  563. package/metadata/RelationMetadata.js.map +1 -1
  564. package/metadata-args/TableMetadataArgs.d.ts +4 -0
  565. package/metadata-args/TableMetadataArgs.js.map +1 -1
  566. package/metadata-builder/EntityMetadataBuilder.js +5 -5
  567. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  568. package/metadata-builder/JunctionEntityMetadataBuilder.js +1 -1
  569. package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  570. package/migration/MigrationExecutor.js +33 -33
  571. package/migration/MigrationExecutor.js.map +1 -1
  572. package/naming-strategy/DefaultNamingStrategy.js +10 -10
  573. package/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  574. package/package.json +1 -239
  575. package/persistence/EntityPersistExecutor.js +5 -5
  576. package/persistence/EntityPersistExecutor.js.map +1 -1
  577. package/persistence/Subject.js +1 -1
  578. package/persistence/Subject.js.map +1 -1
  579. package/persistence/SubjectDatabaseEntityLoader.js +6 -6
  580. package/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  581. package/persistence/SubjectExecutor.js +31 -31
  582. package/persistence/SubjectExecutor.js.map +1 -1
  583. package/persistence/SubjectTopoligicalSorter.js +5 -5
  584. package/persistence/SubjectTopoligicalSorter.js.map +1 -1
  585. package/persistence/subject-builder/CascadesSubjectBuilder.js +1 -1
  586. package/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  587. package/persistence/tree/ClosureSubjectExecutor.js +13 -13
  588. package/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  589. package/persistence/tree/MaterializedPathSubjectExecutor.js +5 -5
  590. package/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  591. package/persistence/tree/NestedSetSubjectExecutor.js +14 -14
  592. package/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
  593. package/platform/PlatformTools.js +8 -8
  594. package/platform/PlatformTools.js.map +1 -1
  595. package/query-builder/DeleteQueryBuilder.js +7 -14
  596. package/query-builder/DeleteQueryBuilder.js.map +1 -1
  597. package/query-builder/InsertQueryBuilder.js +9 -11
  598. package/query-builder/InsertQueryBuilder.js.map +1 -1
  599. package/query-builder/JoinAttribute.js +1 -1
  600. package/query-builder/JoinAttribute.js.map +1 -1
  601. package/query-builder/QueryBuilder.js +37 -37
  602. package/query-builder/QueryBuilder.js.map +1 -1
  603. package/query-builder/QueryBuilderUtils.js +1 -1
  604. package/query-builder/QueryBuilderUtils.js.map +1 -1
  605. package/query-builder/QueryExpressionMap.js +3 -3
  606. package/query-builder/QueryExpressionMap.js.map +1 -1
  607. package/query-builder/RelationLoader.js +2 -2
  608. package/query-builder/RelationLoader.js.map +1 -1
  609. package/query-builder/RelationQueryBuilder.js +13 -13
  610. package/query-builder/RelationQueryBuilder.js.map +1 -1
  611. package/query-builder/RelationRemover.js +12 -12
  612. package/query-builder/RelationRemover.js.map +1 -1
  613. package/query-builder/RelationUpdater.js +2 -2
  614. package/query-builder/ReturningResultsEntityUpdator.js +6 -6
  615. package/query-builder/SelectQueryBuilder.js +43 -43
  616. package/query-builder/SelectQueryBuilder.js.map +1 -1
  617. package/query-builder/SoftDeleteQueryBuilder.js +7 -14
  618. package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  619. package/query-builder/UpdateQueryBuilder.js +10 -17
  620. package/query-builder/UpdateQueryBuilder.js.map +1 -1
  621. package/query-builder/relation-count/RelationCountAttribute.js +2 -2
  622. package/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
  623. package/query-builder/relation-count/RelationCountLoader.js +4 -4
  624. package/query-builder/relation-id/RelationIdAttribute.js +1 -1
  625. package/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
  626. package/query-builder/relation-id/RelationIdLoader.js +5 -5
  627. package/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  628. package/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js +3 -3
  629. package/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
  630. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js +2 -2
  631. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  632. package/query-runner/BaseQueryRunner.js +25 -25
  633. package/query-runner/BaseQueryRunner.js.map +1 -1
  634. package/query-runner/QueryLock.js +3 -3
  635. package/query-runner/QueryLock.js.map +1 -1
  636. package/repository/AbstractRepository.js +1 -1
  637. package/repository/AbstractRepository.js.map +1 -1
  638. package/repository/BaseEntity.js +4 -4
  639. package/repository/BaseEntity.js.map +1 -1
  640. package/repository/MongoRepository.js +1 -1
  641. package/repository/MongoRepository.js.map +1 -1
  642. package/repository/Repository.js +1 -1
  643. package/repository/Repository.js.map +1 -1
  644. package/repository/TreeRepository.js +7 -7
  645. package/repository/TreeRepository.js.map +1 -1
  646. package/schema-builder/MongoSchemaBuilder.js +2 -2
  647. package/schema-builder/RdbmsSchemaBuilder.js +311 -236
  648. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  649. package/schema-builder/table/Table.js +1 -1
  650. package/schema-builder/table/Table.js.map +1 -1
  651. package/schema-builder/table/TableCheck.js +1 -1
  652. package/schema-builder/table/TableCheck.js.map +1 -1
  653. package/schema-builder/table/TableForeignKey.js +2 -2
  654. package/schema-builder/table/TableForeignKey.js.map +1 -1
  655. package/schema-builder/table/TableIndex.js +1 -1
  656. package/schema-builder/table/TableIndex.js.map +1 -1
  657. package/schema-builder/table/TableUnique.js +1 -1
  658. package/schema-builder/table/TableUnique.js.map +1 -1
  659. package/schema-builder/util/ViewUtils.d.ts +7 -0
  660. package/schema-builder/util/ViewUtils.js +28 -0
  661. package/schema-builder/util/ViewUtils.js.map +1 -0
  662. package/subscriber/Broadcaster.d.ts +23 -2
  663. package/subscriber/Broadcaster.js +35 -2
  664. package/subscriber/Broadcaster.js.map +1 -1
  665. package/subscriber/BroadcasterResult.d.ts +4 -0
  666. package/subscriber/BroadcasterResult.js +19 -0
  667. package/subscriber/BroadcasterResult.js.map +1 -1
  668. package/util/DateUtils.js +1 -1
  669. package/util/DateUtils.js.map +1 -1
  670. package/util/DirectoryExportedClassesLoader.js +1 -1
  671. package/util/DirectoryExportedClassesLoader.js.map +1 -1
  672. package/util/ObjectUtils.js +2 -2
  673. package/util/ObjectUtils.js.map +1 -1
  674. package/util/OrmUtils.js +2 -2
  675. package/util/OrmUtils.js.map +1 -1
  676. package/util/StringUtils.js +2 -2
  677. package/util/StringUtils.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 {CockroachDriver} from \"../driver/cockroachdb/CockroachDriver\";\nimport {SapDriver} from \"../driver/sap/SapDriver\";\nimport {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 {Connection} from \"../connection/Connection\";\nimport {EntityListenerMetadata} from \"../metadata/EntityListenerMetadata\";\nimport {UniqueMetadata} from \"../metadata/UniqueMetadata\";\nimport {MysqlDriver} from \"../driver/mysql/MysqlDriver\";\nimport {CheckMetadata} from \"../metadata/CheckMetadata\";\nimport {SqlServerDriver} from \"../driver/sqlserver/SqlServerDriver\";\nimport {PostgresDriver} from \"../driver/postgres/PostgresDriver\";\nimport {ExclusionMetadata} from \"../metadata/ExclusionMetadata\";\nimport {AuroraDataApiDriver} from \"../driver/aurora-data-api/AuroraDataApiDriver\";\nimport { TypeORMError } from \"../error\";\n\n/**\n * Builds EntityMetadata objects and all its sub-metadatas.\n */\nexport class EntityMetadataBuilder {\n\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(private connection: Connection,\n private metadataArgsStorage: MetadataArgsStorage) {\n\n this.junctionEntityMetadataBuilder = new JunctionEntityMetadataBuilder(connection);\n this.closureJunctionEntityMetadataBuilder = new ClosureJunctionEntityMetadataBuilder(connection);\n this.relationJoinColumnBuilder = new RelationJoinColumnBuilder(connection);\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\n // if entity classes to filter entities by are given then do filtering, otherwise use all\n const allTables = entityClasses ? this.metadataArgsStorage.filterTables(entityClasses) : 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(table => table.type === \"regular\" || table.type === \"closure\" || table.type === \"entity-child\" || table.type === \"view\");\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 => this.createEntityMetadata(tableArgs));\n\n // compute parent entity metadatas for table inheritance\n entityMetadatas.forEach(entityMetadata => this.computeParentEntityMetadata(entityMetadatas, entityMetadata));\n\n // after all metadatas created we set child entity metadatas for table inheritance\n entityMetadatas.forEach(metadata => {\n metadata.childEntityMetadatas = entityMetadatas.filter(childMetadata => {\n return metadata.target instanceof Function\n && childMetadata.target instanceof Function\n && MetadataUtils.isInherited(childMetadata.target, metadata.target);\n });\n });\n\n // build entity metadata (step0), first for non-single-table-inherited entity metadatas (dependant)\n entityMetadatas\n .filter(entityMetadata => entityMetadata.tableType !== \"entity-child\")\n .forEach(entityMetadata => entityMetadata.build());\n\n // build entity metadata (step0), now for single-table-inherited entity metadatas (dependant)\n entityMetadatas\n .filter(entityMetadata => entityMetadata.tableType === \"entity-child\")\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(entityMetadata => entityMetadata.tableType !== \"entity-child\")\n .forEach(entityMetadata => this.computeEntityMetadataStep1(entityMetadatas, entityMetadata));\n\n // then do it for single table inheritance children (since they are depend on their parents to be built)\n entityMetadatas\n .filter(entityMetadata => entityMetadata.tableType === \"entity-child\")\n .forEach(entityMetadata => this.computeEntityMetadataStep1(entityMetadatas, entityMetadata));\n\n // calculate entity metadata computed properties and all its sub-metadatas\n entityMetadatas.forEach(entityMetadata => this.computeEntityMetadataStep2(entityMetadata));\n\n // calculate entity metadata's inverse properties\n entityMetadatas.forEach(entityMetadata => this.computeInverseProperties(entityMetadata, entityMetadatas));\n\n // go through all entity metadatas and create foreign keys / junction entity metadatas for their relations\n entityMetadatas\n .filter(entityMetadata => entityMetadata.tableType !== \"entity-child\")\n .forEach(entityMetadata => {\n\n // create entity's relations join columns (for many-to-one and one-to-one owner)\n entityMetadata.relations.filter(relation => relation.isOneToOne || relation.isManyToOne).forEach(relation => {\n const joinColumns = this.metadataArgsStorage.filterJoinColumns(relation.target, relation.propertyName);\n const { foreignKey, columns, uniqueConstraint } = this.relationJoinColumnBuilder.build(joinColumns, relation); // 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 (this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver\n || this.connection.driver instanceof SqlServerDriver || this.connection.driver instanceof SapDriver) {\n const index = new IndexMetadata({\n entityMetadata: 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 (this.connection.driver instanceof SqlServerDriver) {\n index.where = index.columns.map(column => {\n return `${this.connection.driver.escape(column.databaseName)} IS NOT NULL`;\n }).join(\" AND \");\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 } else {\n if (relation.embeddedMetadata) {\n relation.embeddedMetadata.uniques.push(uniqueConstraint);\n } else {\n relation.entityMetadata.ownUniques.push(uniqueConstraint);\n }\n this.computeEntityMetadataStep2(entityMetadata);\n }\n }\n\n if (foreignKey && this.connection.driver instanceof CockroachDriver) {\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.filter(relation => relation.isManyToMany).forEach(relation => {\n const joinTable = this.metadataArgsStorage.findJoinTable(relation.target, relation.propertyName)!;\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 = this.junctionEntityMetadataBuilder.build(relation, joinTable);\n relation.registerForeignKeys(...junctionEntityMetadata.foreignKeys);\n relation.registerJoinColumns(\n junctionEntityMetadata.ownIndices[0].columns,\n junctionEntityMetadata.ownIndices[1].columns\n );\n relation.registerJunctionEntityMetadata(junctionEntityMetadata);\n\n // compute new entity metadata properties and push it to entity metadatas pool\n this.computeEntityMetadataStep2(junctionEntityMetadata);\n this.computeInverseProperties(junctionEntityMetadata, entityMetadatas);\n entityMetadatas.push(junctionEntityMetadata);\n });\n\n });\n\n // update entity metadata depend properties\n entityMetadatas\n .forEach(entityMetadata => {\n entityMetadata.relationsWithJoinColumns = entityMetadata.relations.filter(relation => relation.isWithJoinColumn);\n entityMetadata.hasNonNullableRelations = entityMetadata.relationsWithJoinColumns.some(relation => !relation.isNullable || relation.isPrimary);\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 = this.closureJunctionEntityMetadataBuilder.build(entityMetadata);\n entityMetadata.closureJunctionTable = closureJunctionEntityMetadata;\n this.computeEntityMetadataStep2(closureJunctionEntityMetadata);\n this.computeInverseProperties(closureJunctionEntityMetadata, entityMetadatas);\n entityMetadatas.push(closureJunctionEntityMetadata);\n });\n\n // generate keys for tables with single-table inheritance\n entityMetadatas\n .filter(metadata => metadata.inheritancePattern === \"STI\" && metadata.discriminatorColumn)\n .forEach(entityMetadata => this.createKeysForTableInheritance(entityMetadata));\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 => index.build(this.connection.namingStrategy));\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 => unique.build(this.connection.namingStrategy));\n });\n\n // build all check constraints\n entityMetadatas.forEach(entityMetadata => {\n entityMetadata.checks.forEach(check => check.build(this.connection.namingStrategy));\n });\n\n // build all exclusion constraints\n entityMetadatas.forEach(entityMetadata => {\n entityMetadata.exclusions.forEach(exclusion => exclusion.build(this.connection.namingStrategy));\n });\n\n // add lazy initializer for entity relations\n entityMetadatas\n .filter(metadata => metadata.target instanceof Function)\n .forEach(entityMetadata => {\n entityMetadata.relations\n .filter(relation => relation.isLazy)\n .forEach(relation => {\n this.connection.relationLoader.enableLazyLoad(relation, (entityMetadata.target as Function).prototype);\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(column.target, column.propertyName);\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\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(tableArgs: TableMetadataArgs): EntityMetadata {\n\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[] = tableArgs.target instanceof Function\n ? MetadataUtils.getInheritanceTree(tableArgs.target)\n : [tableArgs.target]; // todo: implement later here inheritance for string-targets\n\n const tableInheritance = this.metadataArgsStorage.findInheritanceType(tableArgs.target);\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 ((tableInheritance && tableInheritance.pattern === \"STI\") || tableArgs.type === \"entity-child\") {\n singleTableChildrenTargets = this.metadataArgsStorage\n .filterSingleTableChildren(tableArgs.target)\n .map(args => args.target)\n .filter(target => target instanceof 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 ? tableInheritance.pattern : undefined\n });\n }\n\n protected computeParentEntityMetadata(allEntityMetadatas: EntityMetadata[], 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(allEntityMetadata => {\n return allEntityMetadata.inheritanceTree.indexOf(entityMetadata.target as Function) !== -1 && allEntityMetadata.inheritancePattern === \"STI\";\n })!;\n }\n }\n\n protected computeEntityMetadataStep1(allEntityMetadatas: EntityMetadata[], entityMetadata: EntityMetadata) {\n\n const entityInheritance = this.metadataArgsStorage.findInheritanceType(entityMetadata.target);\n\n const discriminatorValue = this.metadataArgsStorage.findDiscriminatorValue(entityMetadata.target);\n\n if (typeof discriminatorValue !== \"undefined\") {\n entityMetadata.discriminatorValue = discriminatorValue.value;\n } else {\n entityMetadata.discriminatorValue = (entityMetadata.target as any).name;\n }\n\n // if single table inheritance is used, we need to mark all embedded columns as nullable\n entityMetadata.embeddeds = this.createEmbeddedsRecursively(entityMetadata, this.metadataArgsStorage.filterEmbeddeds(entityMetadata.inheritanceTree))\n .map((embedded: EmbeddedMetadata): EmbeddedMetadata => {\n if (entityMetadata.inheritancePattern === \"STI\") {\n embedded.columns = embedded.columns.map((column: ColumnMetadata): ColumnMetadata => {\n column.isNullable = true;\n return column;\n });\n }\n return embedded;\n });\n\n entityMetadata.ownColumns = this.metadataArgsStorage\n .filterColumns(entityMetadata.inheritanceTree)\n .map(args => {\n\n // for single table children we reuse columns created for their parents\n if (entityMetadata.tableType === \"entity-child\")\n return entityMetadata.parentEntityMetadata.ownColumns.find(column => column.propertyName === args.propertyName)!;\n\n const column = new ColumnMetadata({ connection: this.connection, entityMetadata, args });\n\n // if single table inheritance used, we need to mark all inherit table columns as nullable\n const columnInSingleTableInheritedChild = allEntityMetadatas.find(otherEntityMetadata => otherEntityMetadata.tableType === \"entity-child\" && otherEntityMetadata.target === args.target);\n if (columnInSingleTableInheritedChild)\n 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 = entityInheritance.column && entityInheritance.column.name ? entityInheritance.column.name : \"type\";\n let discriminatorColumn = entityMetadata.ownColumns.find(column => column.propertyName === discriminatorColumnName);\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 = entityMetadata.parentEntityMetadata.ownColumns.find(column => column.isDiscriminator);\n if (discriminatorColumn && !entityMetadata.ownColumns.find(column => column === discriminatorColumn)) {\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(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: \"varchar\",\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(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: \"integer\",\n nullable: false,\n default: 1\n }\n }\n }));\n entityMetadata.ownColumns.push(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: \"integer\",\n nullable: false,\n default: 2\n }\n }\n }));\n }\n\n entityMetadata.ownRelations = this.metadataArgsStorage.filterRelations(entityMetadata.inheritanceTree).map(args => {\n\n // for single table children we reuse relations created for their parents\n if (entityMetadata.tableType === \"entity-child\") {\n const parentRelation = entityMetadata.parentEntityMetadata.ownRelations.find(relation => relation.propertyName === args.propertyName)!;\n const type = args.type instanceof Function ? (args.type as () => any)() : 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.filterRelationIds(entityMetadata.inheritanceTree).map(args => {\n\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(relationId => relationId.propertyName === args.propertyName)!;\n\n return new RelationIdMetadata({ entityMetadata, args });\n });\n entityMetadata.relationCounts = this.metadataArgsStorage.filterRelationCounts(entityMetadata.inheritanceTree).map(args => {\n\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(relationCount => relationCount.propertyName === args.propertyName)!;\n\n return new RelationCountMetadata({ entityMetadata, args });\n });\n entityMetadata.ownListeners = this.metadataArgsStorage.filterListeners(entityMetadata.inheritanceTree).map(args => {\n return new EntityListenerMetadata({ entityMetadata: entityMetadata, args: args });\n });\n entityMetadata.checks = this.metadataArgsStorage.filterChecks(entityMetadata.inheritanceTree).map(args => {\n return new CheckMetadata({ entityMetadata, args });\n });\n\n // Only PostgreSQL supports exclusion constraints.\n if (this.connection.driver instanceof PostgresDriver) {\n entityMetadata.exclusions = this.metadataArgsStorage.filterExclusions(entityMetadata.inheritanceTree).map(args => {\n return new ExclusionMetadata({ entityMetadata, args });\n });\n }\n\n if (this.connection.driver instanceof CockroachDriver) {\n entityMetadata.ownIndices = this.metadataArgsStorage.filterIndices(entityMetadata.inheritanceTree)\n .filter(args => !args.unique)\n .map(args => {\n return new IndexMetadata({entityMetadata, args});\n });\n\n const uniques = this.metadataArgsStorage.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\n } else {\n entityMetadata.ownIndices = this.metadataArgsStorage.filterIndices(entityMetadata.inheritanceTree).map(args => {\n return new IndexMetadata({entityMetadata, args});\n });\n }\n\n // Mysql and SAP HANA stores unique constraints as unique indices.\n if (this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver || this.connection.driver instanceof SapDriver) {\n const indices = this.metadataArgsStorage.filterUniques(entityMetadata.inheritanceTree).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\n } else {\n const uniques = this.metadataArgsStorage.filterUniques(entityMetadata.inheritanceTree).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(entityMetadata: EntityMetadata, embeddedArgs: EmbeddedMetadataArgs[]): EmbeddedMetadata[] {\n return embeddedArgs.map(embeddedArgs => {\n const embeddedMetadata = new EmbeddedMetadata({ entityMetadata: entityMetadata, args: embeddedArgs });\n const targets = MetadataUtils.getInheritanceTree(embeddedMetadata.type);\n\n embeddedMetadata.columns = this.metadataArgsStorage.filterColumns(targets).map(args => {\n return new ColumnMetadata({ connection: this.connection, entityMetadata, embeddedMetadata, args});\n });\n embeddedMetadata.relations = this.metadataArgsStorage.filterRelations(targets).map(args => {\n return new RelationMetadata({ entityMetadata, embeddedMetadata, args });\n });\n embeddedMetadata.listeners = this.metadataArgsStorage.filterListeners(targets).map(args => {\n return new EntityListenerMetadata({ entityMetadata, embeddedMetadata, args });\n });\n embeddedMetadata.indices = this.metadataArgsStorage.filterIndices(targets).map(args => {\n return new IndexMetadata({ entityMetadata, embeddedMetadata, args });\n });\n embeddedMetadata.uniques = this.metadataArgsStorage.filterUniques(targets).map(args => {\n return new UniqueMetadata({ entityMetadata, embeddedMetadata, args });\n });\n embeddedMetadata.relationIds = this.metadataArgsStorage.filterRelationIds(targets).map(args => {\n return new RelationIdMetadata({ entityMetadata, args });\n });\n embeddedMetadata.relationCounts = this.metadataArgsStorage.filterRelationCounts(targets).map(args => {\n return new RelationCountMetadata({ entityMetadata, args });\n });\n embeddedMetadata.embeddeds = this.createEmbeddedsRecursively(entityMetadata, this.metadataArgsStorage.filterEmbeddeds(targets));\n embeddedMetadata.embeddeds.forEach(subEmbedded => subEmbedded.parentEmbeddedMetadata = embeddedMetadata);\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 => embedded.build(this.connection));\n entityMetadata.embeddeds.forEach(embedded => {\n embedded.columnsFromTree.forEach(column => column.build(this.connection));\n embedded.relationsFromTree.forEach(relation => relation.build());\n });\n entityMetadata.ownColumns.forEach(column => column.build(this.connection));\n entityMetadata.ownRelations.forEach(relation => relation.build());\n entityMetadata.relations = entityMetadata.embeddeds.reduce((relations, embedded) => relations.concat(embedded.relationsFromTree), entityMetadata.ownRelations);\n entityMetadata.eagerRelations = entityMetadata.relations.filter(relation => relation.isEager);\n entityMetadata.lazyRelations = entityMetadata.relations.filter(relation => relation.isLazy);\n entityMetadata.oneToOneRelations = entityMetadata.relations.filter(relation => relation.isOneToOne);\n entityMetadata.oneToManyRelations = entityMetadata.relations.filter(relation => relation.isOneToMany);\n entityMetadata.manyToOneRelations = entityMetadata.relations.filter(relation => relation.isManyToOne);\n entityMetadata.manyToManyRelations = entityMetadata.relations.filter(relation => relation.isManyToMany);\n entityMetadata.ownerOneToOneRelations = entityMetadata.relations.filter(relation => relation.isOneToOneOwner);\n entityMetadata.ownerManyToManyRelations = entityMetadata.relations.filter(relation => relation.isManyToManyOwner);\n entityMetadata.treeParentRelation = entityMetadata.relations.find(relation => relation.isTreeParent);\n entityMetadata.treeChildrenRelation = entityMetadata.relations.find(relation => relation.isTreeChildren);\n entityMetadata.columns = entityMetadata.embeddeds.reduce((columns, embedded) => columns.concat(embedded.columnsFromTree), entityMetadata.ownColumns);\n entityMetadata.listeners = entityMetadata.embeddeds.reduce((listeners, embedded) => listeners.concat(embedded.listenersFromTree), entityMetadata.ownListeners);\n entityMetadata.afterLoadListeners = entityMetadata.listeners.filter(listener => listener.type === EventListenerTypes.AFTER_LOAD);\n entityMetadata.afterInsertListeners = entityMetadata.listeners.filter(listener => listener.type === EventListenerTypes.AFTER_INSERT);\n entityMetadata.afterUpdateListeners = entityMetadata.listeners.filter(listener => listener.type === EventListenerTypes.AFTER_UPDATE);\n entityMetadata.afterRemoveListeners = entityMetadata.listeners.filter(listener => listener.type === EventListenerTypes.AFTER_REMOVE);\n entityMetadata.beforeInsertListeners = entityMetadata.listeners.filter(listener => listener.type === EventListenerTypes.BEFORE_INSERT);\n entityMetadata.beforeUpdateListeners = entityMetadata.listeners.filter(listener => listener.type === EventListenerTypes.BEFORE_UPDATE);\n entityMetadata.beforeRemoveListeners = entityMetadata.listeners.filter(listener => listener.type === EventListenerTypes.BEFORE_REMOVE);\n entityMetadata.indices = entityMetadata.embeddeds.reduce((indices, embedded) => indices.concat(embedded.indicesFromTree), entityMetadata.ownIndices);\n entityMetadata.uniques = entityMetadata.embeddeds.reduce((uniques, embedded) => uniques.concat(embedded.uniquesFromTree), entityMetadata.ownUniques);\n entityMetadata.primaryColumns = entityMetadata.columns.filter(column => column.isPrimary);\n entityMetadata.nonVirtualColumns = entityMetadata.columns.filter(column => !column.isVirtual);\n entityMetadata.ancestorColumns = entityMetadata.columns.filter(column => column.closureType === \"ancestor\");\n entityMetadata.descendantColumns = entityMetadata.columns.filter(column => column.closureType === \"descendant\");\n entityMetadata.hasMultiplePrimaryKeys = entityMetadata.primaryColumns.length > 1;\n entityMetadata.generatedColumns = entityMetadata.columns.filter(column => column.isGenerated || column.isObjectId);\n entityMetadata.hasUUIDGeneratedColumns = entityMetadata.columns.filter(column => column.isGenerated || column.generationStrategy === \"uuid\").length > 0;\n entityMetadata.createDateColumn = entityMetadata.columns.find(column => column.isCreateDate);\n entityMetadata.updateDateColumn = entityMetadata.columns.find(column => column.isUpdateDate);\n entityMetadata.deleteDateColumn = entityMetadata.columns.find(column => column.isDeleteDate);\n entityMetadata.versionColumn = entityMetadata.columns.find(column => column.isVersion);\n entityMetadata.discriminatorColumn = entityMetadata.columns.find(column => column.isDiscriminator);\n entityMetadata.treeLevelColumn = entityMetadata.columns.find(column => column.isTreeLevel);\n entityMetadata.nestedSetLeftColumn = entityMetadata.columns.find(column => column.isNestedSetLeft);\n entityMetadata.nestedSetRightColumn = entityMetadata.columns.find(column => column.isNestedSetRight);\n entityMetadata.materializedPathColumn = entityMetadata.columns.find(column => column.isMaterializedPath);\n entityMetadata.objectIdColumn = entityMetadata.columns.find(column => column.isObjectId);\n entityMetadata.foreignKeys.forEach(foreignKey => foreignKey.build(this.connection.namingStrategy));\n entityMetadata.propertiesMap = entityMetadata.createPropertiesMap();\n entityMetadata.relationIds.forEach(relationId => relationId.build());\n entityMetadata.relationCounts.forEach(relationCount => relationCount.build());\n entityMetadata.embeddeds.forEach(embedded => {\n embedded.relationIdsFromTree.forEach(relationId => relationId.build());\n embedded.relationCountsFromTree.forEach(relationCount => relationCount.build());\n });\n }\n\n /**\n * Computes entity metadata's relations inverse side properties.\n */\n protected computeInverseProperties(entityMetadata: EntityMetadata, entityMetadatas: EntityMetadata[]) {\n entityMetadata.relations.forEach(relation => {\n\n // compute inverse side (related) entity metadatas for all relation metadatas\n const inverseEntityMetadata = entityMetadatas.find(m => m.target === relation.type || (typeof relation.type === \"string\" && (m.targetName === relation.type || m.givenTableName === relation.type)));\n if (!inverseEntityMetadata)\n throw new TypeORMError(\"Entity metadata for \" + entityMetadata.name + \"#\" + relation.propertyPath + \" was not found. Check if you specified a correct entity object and if it's connected in the connection options.\");\n\n relation.inverseEntityMetadata = inverseEntityMetadata;\n relation.inverseSidePropertyPath = relation.buildInverseSidePropertyPath();\n\n // and compute inverse relation and mark if it has such\n relation.inverseRelation = inverseEntityMetadata.relations.find(foundRelation => foundRelation.propertyPath === relation.inverseSidePropertyPath);\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}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/metadata-builder/EntityMetadataBuilder.ts"],"names":[],"mappings":";;;;AAAA,yEAAsE;AACtE,qDAAkD;AAClD,6DAA0D;AAC1D,6DAA0D;AAC1D,2DAAwD;AACxD,iEAA8D;AAC9D,iEAA8D;AAG9D,qEAAkE;AAClE,2EAAwE;AACxE,2EAA0E;AAC1E,iDAA8C;AAE9C,iFAA8E;AAC9E,+FAA4F;AAC5F,yEAAsE;AAEtE,6EAA0E;AAC1E,6DAA0D;AAC1D,2DAAwD;AACxD,2DAAwD;AACxD,uEAAoE;AACpE,oEAAiE;AACjE,mEAAgE;AAChE,qFAAkF;AAClF,kCAAwC;AAExC;;GAEG;AACH;IAqBI,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,+BAAoB,UAAsB,EACtB,mBAAwC;QADxC,eAAU,GAAV,UAAU,CAAY;QACtB,wBAAmB,GAAnB,mBAAmB,CAAqB;QAExD,IAAI,CAAC,6BAA6B,GAAG,IAAI,6DAA6B,CAAC,UAAU,CAAC,CAAC;QACnF,IAAI,CAAC,oCAAoC,GAAG,IAAI,2EAAoC,CAAC,UAAU,CAAC,CAAC;QACjG,IAAI,CAAC,yBAAyB,GAAG,IAAI,qDAAyB,CAAC,UAAU,CAAC,CAAC;IAC/E,CAAC;IAED,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E;;OAEG;IACH,qCAAK,GAAL,UAAM,aAA0B;QAAhC,iBA0NC;QAxNG,yFAAyF;QACzF,IAAM,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;QAEzH,kGAAkG;QAClG,IAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAA9G,CAA8G,CAAC,CAAC;QAE7J,oHAAoH;QACpH,IAAM,eAAe,GAAG,UAAU,CAAC,GAAG,CAAC,UAAA,SAAS,IAAI,OAAA,KAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,EAApC,CAAoC,CAAC,CAAC;QAE1F,wDAAwD;QACxD,eAAe,CAAC,OAAO,CAAC,UAAA,cAAc,IAAI,OAAA,KAAI,CAAC,2BAA2B,CAAC,eAAe,EAAE,cAAc,CAAC,EAAjE,CAAiE,CAAC,CAAC;QAE7G,kFAAkF;QAClF,eAAe,CAAC,OAAO,CAAC,UAAA,QAAQ;YAC5B,QAAQ,CAAC,oBAAoB,GAAG,eAAe,CAAC,MAAM,CAAC,UAAA,aAAa;gBAChE,OAAO,QAAQ,CAAC,MAAM,YAAY,QAAQ;uBACnC,aAAa,CAAC,MAAM,YAAY,QAAQ;uBACxC,6BAAa,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC5E,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,mGAAmG;QACnG,eAAe;aACV,MAAM,CAAC,UAAA,cAAc,IAAI,OAAA,cAAc,CAAC,SAAS,KAAK,cAAc,EAA3C,CAA2C,CAAC;aACrE,OAAO,CAAC,UAAA,cAAc,IAAI,OAAA,cAAc,CAAC,KAAK,EAAE,EAAtB,CAAsB,CAAC,CAAC;QAEvD,6FAA6F;QAC7F,eAAe;aACV,MAAM,CAAC,UAAA,cAAc,IAAI,OAAA,cAAc,CAAC,SAAS,KAAK,cAAc,EAA3C,CAA2C,CAAC;aACrE,OAAO,CAAC,UAAA,cAAc,IAAI,OAAA,cAAc,CAAC,KAAK,EAAE,EAAtB,CAAsB,CAAC,CAAC;QAEvD,sHAAsH;QACtH,eAAe;aACV,MAAM,CAAC,UAAA,cAAc,IAAI,OAAA,cAAc,CAAC,SAAS,KAAK,cAAc,EAA3C,CAA2C,CAAC;aACrE,OAAO,CAAC,UAAA,cAAc,IAAI,OAAA,KAAI,CAAC,0BAA0B,CAAC,eAAe,EAAE,cAAc,CAAC,EAAhE,CAAgE,CAAC,CAAC;QAEjG,wGAAwG;QACxG,eAAe;aACV,MAAM,CAAC,UAAA,cAAc,IAAI,OAAA,cAAc,CAAC,SAAS,KAAK,cAAc,EAA3C,CAA2C,CAAC;aACrE,OAAO,CAAC,UAAA,cAAc,IAAI,OAAA,KAAI,CAAC,0BAA0B,CAAC,eAAe,EAAE,cAAc,CAAC,EAAhE,CAAgE,CAAC,CAAC;QAEjG,0EAA0E;QAC1E,eAAe,CAAC,OAAO,CAAC,UAAA,cAAc,IAAI,OAAA,KAAI,CAAC,0BAA0B,CAAC,cAAc,CAAC,EAA/C,CAA+C,CAAC,CAAC;QAE3F,iDAAiD;QACjD,eAAe,CAAC,OAAO,CAAC,UAAA,cAAc,IAAI,OAAA,KAAI,CAAC,wBAAwB,CAAC,cAAc,EAAE,eAAe,CAAC,EAA9D,CAA8D,CAAC,CAAC;QAE1G,0GAA0G;QAC1G,eAAe;aACV,MAAM,CAAC,UAAA,cAAc,IAAI,OAAA,cAAc,CAAC,SAAS,KAAK,cAAc,EAA3C,CAA2C,CAAC;aACrE,OAAO,CAAC,UAAA,cAAc;YAEnB,gFAAgF;YAChF,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,WAAW,EAA3C,CAA2C,CAAC,CAAC,OAAO,CAAC,UAAA,QAAQ;gBACrG,IAAM,WAAW,GAAG,KAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;gBACjG,IAAA,KAA4C,KAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,EAArG,UAAU,gBAAA,EAAE,OAAO,aAAA,EAAE,gBAAgB,sBAAgE,CAAC,CAAC,kDAAkD;gBACjK,IAAI,UAAU,EAAE;oBACZ,QAAQ,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC,gEAAgE;oBAC1G,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBAC/C;gBACD,IAAI,OAAO,EAAE;oBACT,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;iBACzC;gBACD,IAAI,gBAAgB,EAAE;oBAClB,IAAI,KAAI,CAAC,UAAU,CAAC,MAAM,YAAY,yBAAW,IAAI,KAAI,CAAC,UAAU,CAAC,MAAM,YAAY,yCAAmB;2BACnG,KAAI,CAAC,UAAU,CAAC,MAAM,YAAY,iCAAe,IAAI,KAAI,CAAC,UAAU,CAAC,MAAM,YAAY,qBAAS,EAAE;wBACrG,IAAM,KAAK,GAAG,IAAI,6BAAa,CAAC;4BAC5B,cAAc,EAAE,gBAAgB,CAAC,cAAc;4BAC/C,OAAO,EAAE,gBAAgB,CAAC,OAAO;4BACjC,IAAI,EAAE;gCACF,MAAM,EAAE,gBAAgB,CAAC,MAAO;gCAChC,IAAI,EAAE,gBAAgB,CAAC,IAAI;gCAC3B,MAAM,EAAE,IAAI;gCACZ,WAAW,EAAE,IAAI;6BACpB;yBACJ,CAAC,CAAC;wBAEH,IAAI,KAAI,CAAC,UAAU,CAAC,MAAM,YAAY,iCAAe,EAAE;4BACnD,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAA,MAAM;gCAClC,OAAU,KAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,iBAAc,CAAC;4BAC/E,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;yBACpB;wBAED,IAAI,QAAQ,CAAC,gBAAgB,EAAE;4BAC3B,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;yBACjD;6BAAM;4BACH,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;yBAClD;wBACD,KAAI,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC;qBAEnD;yBAAM;wBACH,IAAI,QAAQ,CAAC,gBAAgB,EAAE;4BAC3B,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;yBAC5D;6BAAM;4BACH,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;yBAC7D;wBACD,KAAI,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC;qBACnD;iBACJ;gBAED,IAAI,UAAU,IAAI,KAAI,CAAC,UAAU,CAAC,MAAM,YAAY,iCAAe,EAAE;oBACjE,IAAM,KAAK,GAAG,IAAI,6BAAa,CAAC;wBAC5B,cAAc,EAAE,QAAQ,CAAC,cAAc;wBACvC,OAAO,EAAE,UAAU,CAAC,OAAO;wBAC3B,IAAI,EAAE;4BACF,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,MAAO;4BACvC,WAAW,EAAE,IAAI;yBACpB;qBACJ,CAAC,CAAC;oBACH,IAAI,QAAQ,CAAC,gBAAgB,EAAE;wBAC3B,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBACjD;yBAAM;wBACH,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBAClD;oBACD,KAAI,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC;iBACnD;YACL,CAAC,CAAC,CAAC;YAEH,qEAAqE;YACrE,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,YAAY,EAArB,CAAqB,CAAC,CAAC,OAAO,CAAC,UAAA,QAAQ;gBAC/E,IAAM,SAAS,GAAG,KAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAE,CAAC;gBAClG,IAAI,CAAC,SAAS;oBAAE,OAAO,CAAC,0FAA0F;gBAElH,8FAA8F;gBAC9F,IAAM,sBAAsB,GAAG,KAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;gBAC7F,QAAQ,CAAC,mBAAmB,OAA5B,QAAQ,qDAAwB,sBAAsB,CAAC,WAAW,WAAE;gBACpE,QAAQ,CAAC,mBAAmB,CACxB,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,EAC5C,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAC/C,CAAC;gBACF,QAAQ,CAAC,8BAA8B,CAAC,sBAAsB,CAAC,CAAC;gBAEhE,8EAA8E;gBAC9E,KAAI,CAAC,0BAA0B,CAAC,sBAAsB,CAAC,CAAC;gBACxD,KAAI,CAAC,wBAAwB,CAAC,sBAAsB,EAAE,eAAe,CAAC,CAAC;gBACvE,eAAe,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;QAEH,2CAA2C;QAC3C,eAAe;aACV,OAAO,CAAC,UAAA,cAAc;YACnB,cAAc,CAAC,wBAAwB,GAAG,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,gBAAgB,EAAzB,CAAyB,CAAC,CAAC;YACjH,cAAc,CAAC,uBAAuB,GAAG,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAA,QAAQ,IAAI,OAAA,CAAC,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,SAAS,EAA1C,CAA0C,CAAC,CAAC;QAClJ,CAAC,CAAC,CAAC;QAEP,0DAA0D;QAC1D,eAAe;aACV,MAAM,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,QAAQ,KAAK,eAAe,EAArC,CAAqC,CAAC;aACzD,OAAO,CAAC,UAAA,cAAc;YACnB,IAAM,6BAA6B,GAAG,KAAI,CAAC,oCAAoC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YACtG,cAAc,CAAC,oBAAoB,GAAG,6BAA6B,CAAC;YACpE,KAAI,CAAC,0BAA0B,CAAC,6BAA6B,CAAC,CAAC;YAC/D,KAAI,CAAC,wBAAwB,CAAC,6BAA6B,EAAE,eAAe,CAAC,CAAC;YAC9E,eAAe,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEP,yDAAyD;QACzD,eAAe;aACV,MAAM,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,kBAAkB,KAAK,KAAK,IAAI,QAAQ,CAAC,mBAAmB,EAArE,CAAqE,CAAC;aACzF,OAAO,CAAC,UAAA,cAAc,IAAI,OAAA,KAAI,CAAC,6BAA6B,CAAC,cAAc,CAAC,EAAlD,CAAkD,CAAC,CAAC;QAEnF,qFAAqF;QACrF,eAAe,CAAC,OAAO,CAAC,UAAA,cAAc;YAClC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,KAAK,CAAC,KAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAA3C,CAA2C,CAAC,CAAC;QACzF,CAAC,CAAC,CAAC;QAEH,gGAAgG;QAChG,eAAe,CAAC,OAAO,CAAC,UAAA,cAAc;YAClC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,KAAK,CAAC,KAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAA5C,CAA4C,CAAC,CAAC;QAC3F,CAAC,CAAC,CAAC;QAEH,8BAA8B;QAC9B,eAAe,CAAC,OAAO,CAAC,UAAA,cAAc;YAClC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,KAAK,CAAC,KAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAA3C,CAA2C,CAAC,CAAC;QACxF,CAAC,CAAC,CAAC;QAEH,kCAAkC;QAClC,eAAe,CAAC,OAAO,CAAC,UAAA,cAAc;YAClC,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,UAAA,SAAS,IAAI,OAAA,SAAS,CAAC,KAAK,CAAC,KAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAA/C,CAA+C,CAAC,CAAC;QACpG,CAAC,CAAC,CAAC;QAEH,4CAA4C;QAC5C,eAAe;aACV,MAAM,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,MAAM,YAAY,QAAQ,EAAnC,CAAmC,CAAC;aACvD,OAAO,CAAC,UAAA,cAAc;YACnB,cAAc,CAAC,SAAS;iBACnB,MAAM,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,MAAM,EAAf,CAAe,CAAC;iBACnC,OAAO,CAAC,UAAA,QAAQ;gBACb,KAAI,CAAC,UAAU,CAAC,cAAc,CAAC,cAAc,CAAC,QAAQ,EAAG,cAAc,CAAC,MAAmB,CAAC,SAAS,CAAC,CAAC;YAC3G,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;QAEP,eAAe,CAAC,OAAO,CAAC,UAAA,cAAc;YAClC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,UAAA,MAAM;gBACjC,yFAAyF;gBACzF,IAAM,SAAS,GAAG,KAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;gBAC7F,IAAI,SAAS,EAAE;oBACX,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;oBAC1B,MAAM,CAAC,kBAAkB,GAAG,SAAS,CAAC,QAAQ,CAAC;oBAC/C,IAAI,SAAS,CAAC,QAAQ,KAAK,MAAM,EAAE;wBAC/B,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC;qBACxB;yBAAM,IAAI,SAAS,CAAC,QAAQ,KAAK,OAAO,EAAE;wBACvC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC;qBACvB;yBAAM;wBACH,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC;qBACvC;oBACD,MAAM,CAAC,KAAK,CAAC,KAAI,CAAC,UAAU,CAAC,CAAC;oBAC9B,KAAI,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC;iBACnD;YACL,CAAC,CAAC,CAAC;QAEP,CAAC,CAAC,CAAC;QAEH,OAAO,eAAe,CAAC;IAC3B,CAAC;IAED,4EAA4E;IAC5E,oBAAoB;IACpB,4EAA4E;IAE5E;;;OAGG;IACO,oDAAoB,GAA9B,UAA+B,SAA4B;QAEvD,0FAA0F;QAC1F,8FAA8F;QAC9F,2GAA2G;QAC3G,IAAM,eAAe,GAAU,SAAS,CAAC,MAAM,YAAY,QAAQ;YAC/D,CAAC,CAAC,6BAAa,CAAC,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC;YACpD,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,4DAA4D;QAEtF,IAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACxF,IAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAEtE,4FAA4F;QAC5F,IAAI,0BAAiC,CAAC;QACtC,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,OAAO,KAAK,KAAK,CAAC,IAAI,SAAS,CAAC,IAAI,KAAK,cAAc,EAAE;YAC/F,0BAA0B,GAAG,IAAI,CAAC,mBAAmB;iBAChD,yBAAyB,CAAC,SAAS,CAAC,MAAM,CAAC;iBAC3C,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,MAAM,EAAX,CAAW,CAAC;iBACxB,MAAM,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,YAAY,QAAQ,EAA1B,CAA0B,CAAC,CAAC;YAElD,eAAe,CAAC,IAAI,OAApB,eAAe,qDAAS,0BAA0B,WAAE;SACvD;QAED,OAAO,IAAI,+BAAc,CAAC;YACtB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,IAAI,EAAE,SAAS;YACf,eAAe,EAAE,eAAe;YAChC,SAAS,EAAE,SAAS;YACpB,kBAAkB,EAAE,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;SAC9E,CAAC,CAAC;IACP,CAAC;IAES,2DAA2B,GAArC,UAAsC,kBAAoC,EAAE,cAA8B;QAEtG,kFAAkF;QAClF,IAAI,cAAc,CAAC,SAAS,KAAK,cAAc,EAAE;YAC7C,cAAc,CAAC,oBAAoB,GAAG,kBAAkB,CAAC,IAAI,CAAC,UAAA,iBAAiB;gBAC3E,OAAO,iBAAiB,CAAC,eAAe,CAAC,OAAO,CAAC,cAAc,CAAC,MAAkB,CAAC,KAAK,CAAC,CAAC,IAAI,iBAAiB,CAAC,kBAAkB,KAAK,KAAK,CAAC;YACjJ,CAAC,CAAE,CAAC;SACP;IACL,CAAC;IAES,0DAA0B,GAApC,UAAqC,kBAAoC,EAAE,cAA8B;;QAAzG,iBAuOC;QArOG,IAAM,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAE9F,IAAM,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAElG,IAAI,OAAO,kBAAkB,KAAK,WAAW,EAAE;YAC3C,cAAc,CAAC,kBAAkB,GAAG,kBAAkB,CAAC,KAAK,CAAC;SAChE;aAAM;YACH,cAAc,CAAC,kBAAkB,GAAI,cAAc,CAAC,MAAc,CAAC,IAAI,CAAC;SAC3E;QAED,wFAAwF;QACxF,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC,0BAA0B,CAAC,cAAc,EAAE,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;aAC/I,GAAG,CAAC,UAAC,QAA0B;YAC3B,IAAI,cAAc,CAAC,kBAAkB,KAAK,KAAK,EAAE;gBAC7C,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,MAAsB;oBAC3D,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;oBACzB,OAAO,MAAM,CAAC;gBAClB,CAAC,CAAC,CAAC;aACN;YACD,OAAO,QAAQ,CAAC;QACrB,CAAC,CAAC,CAAC;QAEP,cAAc,CAAC,UAAU,GAAG,IAAI,CAAC,mBAAmB;aAC/C,aAAa,CAAC,cAAc,CAAC,eAAe,CAAC;aAC7C,GAAG,CAAC,UAAA,IAAI;YAEL,uEAAuE;YACvE,IAAI,cAAc,CAAC,SAAS,KAAK,cAAc;gBAC3C,OAAO,cAAc,CAAC,oBAAoB,CAAC,UAAU,CAAC,IAAI,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY,EAAzC,CAAyC,CAAE,CAAC;YAErH,IAAM,MAAM,GAAG,IAAI,+BAAc,CAAC,EAAE,UAAU,EAAE,KAAI,CAAC,UAAU,EAAE,cAAc,gBAAA,EAAE,IAAI,MAAA,EAAE,CAAC,CAAC;YAEzF,0FAA0F;YAC1F,IAAM,iCAAiC,GAAG,kBAAkB,CAAC,IAAI,CAAC,UAAA,mBAAmB,IAAI,OAAA,mBAAmB,CAAC,SAAS,KAAK,cAAc,IAAI,mBAAmB,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAA9F,CAA8F,CAAC,CAAC;YACzL,IAAI,iCAAiC;gBACjC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;YAC7B,OAAO,MAAM,CAAC;QAClB,CAAC,CAAC,CAAC;QAEP,8DAA8D;QAC9D,EAAE;QACF,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,MAAM,EAAE;YAC/C,IAAM,yBAAuB,GAAG,iBAAiB,CAAC,MAAM,IAAI,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;YACnI,IAAI,mBAAmB,GAAG,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,YAAY,KAAK,yBAAuB,EAA/C,CAA+C,CAAC,CAAC;YACpH,IAAI,CAAC,mBAAmB,EAAE;gBACtB,mBAAmB,GAAG,IAAI,+BAAc,CAAC;oBACrC,UAAU,EAAE,IAAI,CAAC,UAAU;oBAC3B,cAAc,EAAE,cAAc;oBAC9B,IAAI,EAAE;wBACF,MAAM,EAAE,cAAc,CAAC,MAAM;wBAC7B,IAAI,EAAE,SAAS;wBACf,YAAY,EAAE,yBAAuB;wBACrC,OAAO,EAAE,iBAAiB,CAAC,MAAM,IAAI;4BACjC,IAAI,EAAE,yBAAuB;4BAC7B,IAAI,EAAE,SAAS;4BACf,QAAQ,EAAE,KAAK;yBAClB;qBACJ;iBACJ,CAAC,CAAC;gBACH,mBAAmB,CAAC,SAAS,GAAG,IAAI,CAAC;gBACrC,mBAAmB,CAAC,eAAe,GAAG,IAAI,CAAC;gBAC3C,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;aACvD;iBAAM;gBACH,mBAAmB,CAAC,eAAe,GAAG,IAAI,CAAC;aAC9C;SACJ;QAED,yDAAyD;QACzD,kGAAkG;QAClG,IAAI,cAAc,CAAC,SAAS,KAAK,cAAc,EAAE;YAC7C,IAAM,qBAAmB,GAAG,cAAc,CAAC,oBAAoB,CAAC,UAAU,CAAC,IAAI,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,eAAe,EAAtB,CAAsB,CAAC,CAAC;YAClH,IAAI,qBAAmB,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,KAAK,qBAAmB,EAA9B,CAA8B,CAAC,EAAE;gBAClG,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,qBAAmB,CAAC,CAAC;aACvD;SACJ;QAEO,IAAA,cAAc,GAAK,IAAI,CAAC,UAAU,eAApB,CAAqB;QAE3C,kFAAkF;QAClF,IAAI,cAAc,CAAC,QAAQ,KAAK,mBAAmB,EAAE;YACjD,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,+BAAc,CAAC;gBAC9C,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,cAAc,EAAE,cAAc;gBAC9B,gBAAgB,EAAE,IAAI;gBACtB,IAAI,EAAE;oBACF,MAAM,EAAE,cAAc,CAAC,MAAM;oBAC7B,IAAI,EAAE,SAAS;oBACf,YAAY,EAAE,OAAO;oBACrB,OAAO,EAAE,mBAAmB,CAAC;wBACzB,IAAI,EAAE,cAAc,CAAC,0BAA0B;wBAC/C,IAAI,EAAE,SAAS;wBACf,QAAQ,EAAE,IAAI;wBACd,OAAO,EAAE,EAAE;qBACd;iBACJ;aACJ,CAAC,CAAC,CAAC;SAEP;aAAM,IAAI,cAAc,CAAC,QAAQ,KAAK,YAAY,EAAE;YAC3C,IAAA,KAAkB,cAAc,CAAC,oBAAoB,EAAnD,IAAI,UAAA,EAAE,KAAK,WAAwC,CAAC;YAC5D,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,+BAAc,CAAC;gBAC9C,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,cAAc,EAAE,cAAc;gBAC9B,aAAa,EAAE,IAAI;gBACnB,IAAI,EAAE;oBACF,MAAM,EAAE,cAAc,CAAC,MAAM;oBAC7B,IAAI,EAAE,SAAS;oBACf,YAAY,EAAE,IAAI;oBAClB,OAAO,EAAE,mBAAmB,CAAC;wBACzB,IAAI,EAAE,IAAI;wBACV,IAAI,EAAE,SAAS;wBACf,QAAQ,EAAE,KAAK;wBACf,OAAO,EAAE,CAAC;qBACb;iBACJ;aACJ,CAAC,CAAC,CAAC;YACJ,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,+BAAc,CAAC;gBAC9C,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,cAAc,EAAE,cAAc;gBAC9B,cAAc,EAAE,IAAI;gBACpB,IAAI,EAAE;oBACF,MAAM,EAAE,cAAc,CAAC,MAAM;oBAC7B,IAAI,EAAE,SAAS;oBACf,YAAY,EAAE,KAAK;oBACnB,OAAO,EAAE,mBAAmB,CAAC;wBACzB,IAAI,EAAE,KAAK;wBACX,IAAI,EAAE,SAAS;wBACf,QAAQ,EAAE,KAAK;wBACf,OAAO,EAAE,CAAC;qBACb;iBACJ;aACJ,CAAC,CAAC,CAAC;SACP;QAED,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,UAAA,IAAI;YAE3G,yEAAyE;YACzE,IAAI,cAAc,CAAC,SAAS,KAAK,cAAc,EAAE;gBAC7C,IAAM,cAAc,GAAG,cAAc,CAAC,oBAAoB,CAAC,YAAY,CAAC,IAAI,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY,EAA3C,CAA2C,CAAE,CAAC;gBACvI,IAAM,IAAI,GAAG,IAAI,CAAC,IAAI,YAAY,QAAQ,CAAC,CAAC,CAAE,IAAI,CAAC,IAAkB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;gBACpF,IAAI,cAAc,CAAC,IAAI,KAAK,IAAI,EAAE;oBAC9B,IAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;oBAC5C,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;oBAClB,OAAO,KAAK,CAAC;iBAChB;gBAED,OAAO,cAAc,CAAC;aACzB;YAED,OAAO,IAAI,mCAAgB,CAAC,EAAE,cAAc,gBAAA,EAAE,IAAI,MAAA,EAAE,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QACH,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,UAAA,IAAI;YAE5G,4EAA4E;YAC5E,IAAI,cAAc,CAAC,SAAS,KAAK,cAAc;gBAC3C,OAAO,cAAc,CAAC,oBAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY,EAA7C,CAA6C,CAAE,CAAC;YAE9H,OAAO,IAAI,uCAAkB,CAAC,EAAE,cAAc,gBAAA,EAAE,IAAI,MAAA,EAAE,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QACH,cAAc,CAAC,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,UAAA,IAAI;YAElH,+EAA+E;YAC/E,IAAI,cAAc,CAAC,SAAS,KAAK,cAAc;gBAC3C,OAAO,cAAc,CAAC,oBAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,UAAA,aAAa,IAAI,OAAA,aAAa,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY,EAAhD,CAAgD,CAAE,CAAC;YAEvI,OAAO,IAAI,6CAAqB,CAAC,EAAE,cAAc,gBAAA,EAAE,IAAI,MAAA,EAAE,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QACH,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,UAAA,IAAI;YAC3G,OAAO,IAAI,+CAAsB,CAAC,EAAE,cAAc,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;QACH,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,UAAA,IAAI;YAClG,OAAO,IAAI,6BAAa,CAAC,EAAE,cAAc,gBAAA,EAAE,IAAI,MAAA,EAAE,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,kDAAkD;QAClD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,YAAY,+BAAc,EAAE;YAClD,cAAc,CAAC,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,UAAA,IAAI;gBAC1G,OAAO,IAAI,qCAAiB,CAAC,EAAE,cAAc,gBAAA,EAAE,IAAI,MAAA,EAAE,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAC;SACN;QAED,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,YAAY,iCAAe,EAAE;YACnD,cAAc,CAAC,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,cAAc,CAAC,eAAe,CAAC;iBAC7F,MAAM,CAAC,UAAA,IAAI,IAAI,OAAA,CAAC,IAAI,CAAC,MAAM,EAAZ,CAAY,CAAC;iBAC5B,GAAG,CAAC,UAAA,IAAI;gBACL,OAAO,IAAI,6BAAa,CAAC,EAAC,cAAc,gBAAA,EAAE,IAAI,MAAA,EAAC,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;YAEP,IAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,cAAc,CAAC,eAAe,CAAC;iBACjF,MAAM,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,MAAM,EAAX,CAAW,CAAC;iBAC3B,GAAG,CAAC,UAAA,IAAI;gBACL,OAAO,IAAI,+BAAc,CAAC;oBACtB,cAAc,EAAE,cAAc;oBAC9B,IAAI,EAAE;wBACF,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,OAAO,EAAE,IAAI,CAAC,OAAO;qBACxB;iBACJ,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACP,CAAA,KAAA,cAAc,CAAC,UAAU,CAAA,CAAC,IAAI,8DAAI,OAAO,WAAE;SAE9C;aAAM;YACH,cAAc,CAAC,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,UAAA,IAAI;gBACvG,OAAO,IAAI,6BAAa,CAAC,EAAC,cAAc,gBAAA,EAAE,IAAI,MAAA,EAAC,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;SACN;QAED,kEAAkE;QAClE,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,YAAY,yBAAW,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,YAAY,yCAAmB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,YAAY,qBAAS,EAAE;YACvJ,IAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,UAAA,IAAI;gBAC3F,OAAO,IAAI,6BAAa,CAAC;oBACrB,cAAc,EAAE,cAAc;oBAC9B,IAAI,EAAE;wBACF,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,OAAO,EAAE,IAAI,CAAC,OAAO;wBACrB,MAAM,EAAE,IAAI;wBACZ,WAAW,EAAE,IAAI;qBACpB;iBACJ,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,CAAA,KAAA,cAAc,CAAC,UAAU,CAAA,CAAC,IAAI,8DAAI,OAAO,WAAE;SAE9C;aAAM;YACH,IAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,UAAA,IAAI;gBAC3F,OAAO,IAAI,+BAAc,CAAC,EAAE,cAAc,gBAAA,EAAE,IAAI,MAAA,EAAE,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;YACH,CAAA,KAAA,cAAc,CAAC,UAAU,CAAA,CAAC,IAAI,8DAAI,OAAO,WAAE;SAC9C;IACL,CAAC;IAED;;;OAGG;IACO,0DAA0B,GAApC,UAAqC,cAA8B,EAAE,YAAoC;QAAzG,iBA+BC;QA9BG,OAAO,YAAY,CAAC,GAAG,CAAC,UAAA,YAAY;YAChC,IAAM,gBAAgB,GAAG,IAAI,mCAAgB,CAAC,EAAE,cAAc,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;YACtG,IAAM,OAAO,GAAG,6BAAa,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAExE,gBAAgB,CAAC,OAAO,GAAG,KAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,UAAA,IAAI;gBAC/E,OAAO,IAAI,+BAAc,CAAC,EAAE,UAAU,EAAE,KAAI,CAAC,UAAU,EAAE,cAAc,gBAAA,EAAE,gBAAgB,kBAAA,EAAE,IAAI,MAAA,EAAC,CAAC,CAAC;YACtG,CAAC,CAAC,CAAC;YACH,gBAAgB,CAAC,SAAS,GAAG,KAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,UAAA,IAAI;gBACnF,OAAO,IAAI,mCAAgB,CAAC,EAAE,cAAc,gBAAA,EAAE,gBAAgB,kBAAA,EAAE,IAAI,MAAA,EAAE,CAAC,CAAC;YAC5E,CAAC,CAAC,CAAC;YACH,gBAAgB,CAAC,SAAS,GAAG,KAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,UAAA,IAAI;gBACnF,OAAO,IAAI,+CAAsB,CAAC,EAAE,cAAc,gBAAA,EAAE,gBAAgB,kBAAA,EAAE,IAAI,MAAA,EAAE,CAAC,CAAC;YAClF,CAAC,CAAC,CAAC;YACH,gBAAgB,CAAC,OAAO,GAAG,KAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,UAAA,IAAI;gBAC/E,OAAO,IAAI,6BAAa,CAAC,EAAE,cAAc,gBAAA,EAAE,gBAAgB,kBAAA,EAAE,IAAI,MAAA,EAAE,CAAC,CAAC;YACzE,CAAC,CAAC,CAAC;YACH,gBAAgB,CAAC,OAAO,GAAG,KAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,UAAA,IAAI;gBAC/E,OAAO,IAAI,+BAAc,CAAC,EAAE,cAAc,gBAAA,EAAE,gBAAgB,kBAAA,EAAE,IAAI,MAAA,EAAE,CAAC,CAAC;YAC1E,CAAC,CAAC,CAAC;YACH,gBAAgB,CAAC,WAAW,GAAG,KAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,UAAA,IAAI;gBACvF,OAAO,IAAI,uCAAkB,CAAC,EAAE,cAAc,gBAAA,EAAE,IAAI,MAAA,EAAE,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;YACH,gBAAgB,CAAC,cAAc,GAAG,KAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,UAAA,IAAI;gBAC7F,OAAO,IAAI,6CAAqB,CAAC,EAAE,cAAc,gBAAA,EAAE,IAAI,MAAA,EAAE,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;YACH,gBAAgB,CAAC,SAAS,GAAG,KAAI,CAAC,0BAA0B,CAAC,cAAc,EAAE,KAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;YAChI,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,UAAA,WAAW,IAAI,OAAA,WAAW,CAAC,sBAAsB,GAAG,gBAAgB,EAArD,CAAqD,CAAC,CAAC;YACzG,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACnD,OAAO,gBAAgB,CAAC;QAC5B,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACO,0DAA0B,GAApC,UAAqC,cAA8B;QAAnE,iBAuDC;QAtDG,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,KAAK,CAAC,KAAI,CAAC,UAAU,CAAC,EAA/B,CAA+B,CAAC,CAAC;QAC9E,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,UAAA,QAAQ;YACrC,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,KAAK,CAAC,KAAI,CAAC,UAAU,CAAC,EAA7B,CAA6B,CAAC,CAAC;YAC1E,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,KAAK,EAAE,EAAhB,CAAgB,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QACH,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,KAAK,CAAC,KAAI,CAAC,UAAU,CAAC,EAA7B,CAA6B,CAAC,CAAC;QAC3E,cAAc,CAAC,YAAY,CAAC,OAAO,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,KAAK,EAAE,EAAhB,CAAgB,CAAC,CAAC;QAClE,cAAc,CAAC,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,UAAC,SAAS,EAAE,QAAQ,IAAK,OAAA,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAA5C,CAA4C,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;QAC/J,cAAc,CAAC,cAAc,GAAG,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,OAAO,EAAhB,CAAgB,CAAC,CAAC;QAC9F,cAAc,CAAC,aAAa,GAAG,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,MAAM,EAAf,CAAe,CAAC,CAAC;QAC5F,cAAc,CAAC,iBAAiB,GAAG,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,UAAU,EAAnB,CAAmB,CAAC,CAAC;QACpG,cAAc,CAAC,kBAAkB,GAAG,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,WAAW,EAApB,CAAoB,CAAC,CAAC;QACtG,cAAc,CAAC,kBAAkB,GAAG,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,WAAW,EAApB,CAAoB,CAAC,CAAC;QACtG,cAAc,CAAC,mBAAmB,GAAG,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,YAAY,EAArB,CAAqB,CAAC,CAAC;QACxG,cAAc,CAAC,sBAAsB,GAAG,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,eAAe,EAAxB,CAAwB,CAAC,CAAC;QAC9G,cAAc,CAAC,wBAAwB,GAAG,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,iBAAiB,EAA1B,CAA0B,CAAC,CAAC;QAClH,cAAc,CAAC,kBAAkB,GAAG,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,YAAY,EAArB,CAAqB,CAAC,CAAC;QACrG,cAAc,CAAC,oBAAoB,GAAG,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,cAAc,EAAvB,CAAuB,CAAC,CAAC;QACzG,cAAc,CAAC,OAAO,GAAG,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,UAAC,OAAO,EAAE,QAAQ,IAAK,OAAA,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAxC,CAAwC,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;QACrJ,cAAc,CAAC,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,UAAC,SAAS,EAAE,QAAQ,IAAK,OAAA,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAA5C,CAA4C,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;QAC/J,cAAc,CAAC,kBAAkB,GAAG,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,IAAI,KAAK,uCAAkB,CAAC,UAAU,EAA/C,CAA+C,CAAC,CAAC;QACjI,cAAc,CAAC,oBAAoB,GAAG,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,IAAI,KAAK,uCAAkB,CAAC,YAAY,EAAjD,CAAiD,CAAC,CAAC;QACrI,cAAc,CAAC,oBAAoB,GAAG,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,IAAI,KAAK,uCAAkB,CAAC,YAAY,EAAjD,CAAiD,CAAC,CAAC;QACrI,cAAc,CAAC,oBAAoB,GAAG,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,IAAI,KAAK,uCAAkB,CAAC,YAAY,EAAjD,CAAiD,CAAC,CAAC;QACrI,cAAc,CAAC,qBAAqB,GAAG,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,IAAI,KAAK,uCAAkB,CAAC,aAAa,EAAlD,CAAkD,CAAC,CAAC;QACvI,cAAc,CAAC,qBAAqB,GAAG,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,IAAI,KAAK,uCAAkB,CAAC,aAAa,EAAlD,CAAkD,CAAC,CAAC;QACvI,cAAc,CAAC,qBAAqB,GAAG,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,IAAI,KAAK,uCAAkB,CAAC,aAAa,EAAlD,CAAkD,CAAC,CAAC;QACvI,cAAc,CAAC,OAAO,GAAG,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,UAAC,OAAO,EAAE,QAAQ,IAAK,OAAA,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAxC,CAAwC,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;QACrJ,cAAc,CAAC,OAAO,GAAG,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,UAAC,OAAO,EAAE,QAAQ,IAAK,OAAA,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAxC,CAAwC,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;QACrJ,cAAc,CAAC,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,SAAS,EAAhB,CAAgB,CAAC,CAAC;QAC1F,cAAc,CAAC,iBAAiB,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,UAAA,MAAM,IAAI,OAAA,CAAC,MAAM,CAAC,SAAS,EAAjB,CAAiB,CAAC,CAAC;QAC9F,cAAc,CAAC,eAAe,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,WAAW,KAAK,UAAU,EAAjC,CAAiC,CAAC,CAAC;QAC5G,cAAc,CAAC,iBAAiB,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,WAAW,KAAK,YAAY,EAAnC,CAAmC,CAAC,CAAC;QAChH,cAAc,CAAC,sBAAsB,GAAG,cAAc,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;QACjF,cAAc,CAAC,gBAAgB,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,UAAU,EAAvC,CAAuC,CAAC,CAAC;QACnH,cAAc,CAAC,uBAAuB,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,kBAAkB,KAAK,MAAM,EAA1D,CAA0D,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACxJ,cAAc,CAAC,gBAAgB,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,YAAY,EAAnB,CAAmB,CAAC,CAAC;QAC7F,cAAc,CAAC,gBAAgB,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,YAAY,EAAnB,CAAmB,CAAC,CAAC;QAC7F,cAAc,CAAC,gBAAgB,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,YAAY,EAAnB,CAAmB,CAAC,CAAC;QAC7F,cAAc,CAAC,aAAa,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,SAAS,EAAhB,CAAgB,CAAC,CAAC;QACvF,cAAc,CAAC,mBAAmB,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,eAAe,EAAtB,CAAsB,CAAC,CAAC;QACnG,cAAc,CAAC,eAAe,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,WAAW,EAAlB,CAAkB,CAAC,CAAC;QAC3F,cAAc,CAAC,mBAAmB,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,eAAe,EAAtB,CAAsB,CAAC,CAAC;QACnG,cAAc,CAAC,oBAAoB,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,gBAAgB,EAAvB,CAAuB,CAAC,CAAC;QACrG,cAAc,CAAC,sBAAsB,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,kBAAkB,EAAzB,CAAyB,CAAC,CAAC;QACzG,cAAc,CAAC,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,UAAU,EAAjB,CAAiB,CAAC,CAAC;QACzF,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,CAAC,KAAK,CAAC,KAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAhD,CAAgD,CAAC,CAAC;QACnG,cAAc,CAAC,aAAa,GAAG,cAAc,CAAC,mBAAmB,EAAE,CAAC;QACpE,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,CAAC,KAAK,EAAE,EAAlB,CAAkB,CAAC,CAAC;QACrE,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,UAAA,aAAa,IAAI,OAAA,aAAa,CAAC,KAAK,EAAE,EAArB,CAAqB,CAAC,CAAC;QAC9E,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,UAAA,QAAQ;YACrC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,CAAC,KAAK,EAAE,EAAlB,CAAkB,CAAC,CAAC;YACvE,QAAQ,CAAC,sBAAsB,CAAC,OAAO,CAAC,UAAA,aAAa,IAAI,OAAA,aAAa,CAAC,KAAK,EAAE,EAArB,CAAqB,CAAC,CAAC;QACpF,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACO,wDAAwB,GAAlC,UAAmC,cAA8B,EAAE,eAAiC;QAChG,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,UAAA,QAAQ;YAErC,6EAA6E;YAC7E,IAAM,qBAAqB,GAAG,eAAe,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,UAAU,KAAK,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,cAAc,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,EAA3I,CAA2I,CAAC,CAAC;YACrM,IAAI,CAAC,qBAAqB;gBACtB,MAAM,IAAI,oBAAY,CAAC,sBAAsB,GAAG,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,QAAQ,CAAC,YAAY,GAAG,iHAAiH,CAAC,CAAC;YAE3N,QAAQ,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;YACvD,QAAQ,CAAC,uBAAuB,GAAG,QAAQ,CAAC,4BAA4B,EAAE,CAAC;YAE3E,uDAAuD;YACvD,QAAQ,CAAC,eAAe,GAAG,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,UAAA,aAAa,IAAI,OAAA,aAAa,CAAC,YAAY,KAAK,QAAQ,CAAC,uBAAuB,EAA/D,CAA+D,CAAC,CAAC;QACtJ,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACO,6DAA6B,GAAvC,UAAwC,cAA8B;QAClE,cAAc,CAAC,OAAO,CAAC,IAAI,CACvB,IAAI,6BAAa,CAAC;YACd,cAAc,EAAE,cAAc;YAC9B,OAAO,EAAE,CAAC,cAAc,CAAC,mBAAoB,CAAC;YAC9C,IAAI,EAAE;gBACF,MAAM,EAAE,cAAc,CAAC,MAAM;gBAC7B,MAAM,EAAE,KAAK;aAChB;SACJ,CAAC,CACL,CAAC;IACN,CAAC;IAEL,4BAAC;AAAD,CAnqBA,AAmqBC,IAAA;AAnqBY,sDAAqB","file":"EntityMetadataBuilder.js","sourcesContent":["import {CockroachDriver} from \"../driver/cockroachdb/CockroachDriver\";\nimport {SapDriver} from \"../driver/sap/SapDriver\";\nimport {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 {Connection} from \"../connection/Connection\";\nimport {EntityListenerMetadata} from \"../metadata/EntityListenerMetadata\";\nimport {UniqueMetadata} from \"../metadata/UniqueMetadata\";\nimport {MysqlDriver} from \"../driver/mysql/MysqlDriver\";\nimport {CheckMetadata} from \"../metadata/CheckMetadata\";\nimport {SqlServerDriver} from \"../driver/sqlserver/SqlServerDriver\";\nimport {PostgresDriver} from \"../driver/postgres/PostgresDriver\";\nimport {ExclusionMetadata} from \"../metadata/ExclusionMetadata\";\nimport {AuroraDataApiDriver} from \"../driver/aurora-data-api/AuroraDataApiDriver\";\nimport { TypeORMError } from \"../error\";\n\n/**\n * Builds EntityMetadata objects and all its sub-metadatas.\n */\nexport class EntityMetadataBuilder {\n\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(private connection: Connection,\n private metadataArgsStorage: MetadataArgsStorage) {\n\n this.junctionEntityMetadataBuilder = new JunctionEntityMetadataBuilder(connection);\n this.closureJunctionEntityMetadataBuilder = new ClosureJunctionEntityMetadataBuilder(connection);\n this.relationJoinColumnBuilder = new RelationJoinColumnBuilder(connection);\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\n // if entity classes to filter entities by are given then do filtering, otherwise use all\n const allTables = entityClasses ? this.metadataArgsStorage.filterTables(entityClasses) : 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(table => table.type === \"regular\" || table.type === \"closure\" || table.type === \"entity-child\" || table.type === \"view\");\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 => this.createEntityMetadata(tableArgs));\n\n // compute parent entity metadatas for table inheritance\n entityMetadatas.forEach(entityMetadata => this.computeParentEntityMetadata(entityMetadatas, entityMetadata));\n\n // after all metadatas created we set child entity metadatas for table inheritance\n entityMetadatas.forEach(metadata => {\n metadata.childEntityMetadatas = entityMetadatas.filter(childMetadata => {\n return metadata.target instanceof Function\n && childMetadata.target instanceof Function\n && MetadataUtils.isInherited(childMetadata.target, metadata.target);\n });\n });\n\n // build entity metadata (step0), first for non-single-table-inherited entity metadatas (dependant)\n entityMetadatas\n .filter(entityMetadata => entityMetadata.tableType !== \"entity-child\")\n .forEach(entityMetadata => entityMetadata.build());\n\n // build entity metadata (step0), now for single-table-inherited entity metadatas (dependant)\n entityMetadatas\n .filter(entityMetadata => entityMetadata.tableType === \"entity-child\")\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(entityMetadata => entityMetadata.tableType !== \"entity-child\")\n .forEach(entityMetadata => this.computeEntityMetadataStep1(entityMetadatas, entityMetadata));\n\n // then do it for single table inheritance children (since they are depend on their parents to be built)\n entityMetadatas\n .filter(entityMetadata => entityMetadata.tableType === \"entity-child\")\n .forEach(entityMetadata => this.computeEntityMetadataStep1(entityMetadatas, entityMetadata));\n\n // calculate entity metadata computed properties and all its sub-metadatas\n entityMetadatas.forEach(entityMetadata => this.computeEntityMetadataStep2(entityMetadata));\n\n // calculate entity metadata's inverse properties\n entityMetadatas.forEach(entityMetadata => this.computeInverseProperties(entityMetadata, entityMetadatas));\n\n // go through all entity metadatas and create foreign keys / junction entity metadatas for their relations\n entityMetadatas\n .filter(entityMetadata => entityMetadata.tableType !== \"entity-child\")\n .forEach(entityMetadata => {\n\n // create entity's relations join columns (for many-to-one and one-to-one owner)\n entityMetadata.relations.filter(relation => relation.isOneToOne || relation.isManyToOne).forEach(relation => {\n const joinColumns = this.metadataArgsStorage.filterJoinColumns(relation.target, relation.propertyName);\n const { foreignKey, columns, uniqueConstraint } = this.relationJoinColumnBuilder.build(joinColumns, relation); // 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 (this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver\n || this.connection.driver instanceof SqlServerDriver || this.connection.driver instanceof SapDriver) {\n const index = new IndexMetadata({\n entityMetadata: 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 (this.connection.driver instanceof SqlServerDriver) {\n index.where = index.columns.map(column => {\n return `${this.connection.driver.escape(column.databaseName)} IS NOT NULL`;\n }).join(\" AND \");\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 } else {\n if (relation.embeddedMetadata) {\n relation.embeddedMetadata.uniques.push(uniqueConstraint);\n } else {\n relation.entityMetadata.ownUniques.push(uniqueConstraint);\n }\n this.computeEntityMetadataStep2(entityMetadata);\n }\n }\n\n if (foreignKey && this.connection.driver instanceof CockroachDriver) {\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.filter(relation => relation.isManyToMany).forEach(relation => {\n const joinTable = this.metadataArgsStorage.findJoinTable(relation.target, relation.propertyName)!;\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 = this.junctionEntityMetadataBuilder.build(relation, joinTable);\n relation.registerForeignKeys(...junctionEntityMetadata.foreignKeys);\n relation.registerJoinColumns(\n junctionEntityMetadata.ownIndices[0].columns,\n junctionEntityMetadata.ownIndices[1].columns\n );\n relation.registerJunctionEntityMetadata(junctionEntityMetadata);\n\n // compute new entity metadata properties and push it to entity metadatas pool\n this.computeEntityMetadataStep2(junctionEntityMetadata);\n this.computeInverseProperties(junctionEntityMetadata, entityMetadatas);\n entityMetadatas.push(junctionEntityMetadata);\n });\n\n });\n\n // update entity metadata depend properties\n entityMetadatas\n .forEach(entityMetadata => {\n entityMetadata.relationsWithJoinColumns = entityMetadata.relations.filter(relation => relation.isWithJoinColumn);\n entityMetadata.hasNonNullableRelations = entityMetadata.relationsWithJoinColumns.some(relation => !relation.isNullable || relation.isPrimary);\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 = this.closureJunctionEntityMetadataBuilder.build(entityMetadata);\n entityMetadata.closureJunctionTable = closureJunctionEntityMetadata;\n this.computeEntityMetadataStep2(closureJunctionEntityMetadata);\n this.computeInverseProperties(closureJunctionEntityMetadata, entityMetadatas);\n entityMetadatas.push(closureJunctionEntityMetadata);\n });\n\n // generate keys for tables with single-table inheritance\n entityMetadatas\n .filter(metadata => metadata.inheritancePattern === \"STI\" && metadata.discriminatorColumn)\n .forEach(entityMetadata => this.createKeysForTableInheritance(entityMetadata));\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 => index.build(this.connection.namingStrategy));\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 => unique.build(this.connection.namingStrategy));\n });\n\n // build all check constraints\n entityMetadatas.forEach(entityMetadata => {\n entityMetadata.checks.forEach(check => check.build(this.connection.namingStrategy));\n });\n\n // build all exclusion constraints\n entityMetadatas.forEach(entityMetadata => {\n entityMetadata.exclusions.forEach(exclusion => exclusion.build(this.connection.namingStrategy));\n });\n\n // add lazy initializer for entity relations\n entityMetadatas\n .filter(metadata => metadata.target instanceof Function)\n .forEach(entityMetadata => {\n entityMetadata.relations\n .filter(relation => relation.isLazy)\n .forEach(relation => {\n this.connection.relationLoader.enableLazyLoad(relation, (entityMetadata.target as Function).prototype);\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(column.target, column.propertyName);\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\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(tableArgs: TableMetadataArgs): EntityMetadata {\n\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[] = tableArgs.target instanceof Function\n ? MetadataUtils.getInheritanceTree(tableArgs.target)\n : [tableArgs.target]; // todo: implement later here inheritance for string-targets\n\n const tableInheritance = this.metadataArgsStorage.findInheritanceType(tableArgs.target);\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 ((tableInheritance && tableInheritance.pattern === \"STI\") || tableArgs.type === \"entity-child\") {\n singleTableChildrenTargets = this.metadataArgsStorage\n .filterSingleTableChildren(tableArgs.target)\n .map(args => args.target)\n .filter(target => target instanceof 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 ? tableInheritance.pattern : undefined\n });\n }\n\n protected computeParentEntityMetadata(allEntityMetadatas: EntityMetadata[], 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(allEntityMetadata => {\n return allEntityMetadata.inheritanceTree.indexOf(entityMetadata.target as Function) !== -1 && allEntityMetadata.inheritancePattern === \"STI\";\n })!;\n }\n }\n\n protected computeEntityMetadataStep1(allEntityMetadatas: EntityMetadata[], entityMetadata: EntityMetadata) {\n\n const entityInheritance = this.metadataArgsStorage.findInheritanceType(entityMetadata.target);\n\n const discriminatorValue = this.metadataArgsStorage.findDiscriminatorValue(entityMetadata.target);\n\n if (typeof discriminatorValue !== \"undefined\") {\n entityMetadata.discriminatorValue = discriminatorValue.value;\n } else {\n entityMetadata.discriminatorValue = (entityMetadata.target as any).name;\n }\n\n // if single table inheritance is used, we need to mark all embedded columns as nullable\n entityMetadata.embeddeds = this.createEmbeddedsRecursively(entityMetadata, this.metadataArgsStorage.filterEmbeddeds(entityMetadata.inheritanceTree))\n .map((embedded: EmbeddedMetadata): EmbeddedMetadata => {\n if (entityMetadata.inheritancePattern === \"STI\") {\n embedded.columns = embedded.columns.map((column: ColumnMetadata): ColumnMetadata => {\n column.isNullable = true;\n return column;\n });\n }\n return embedded;\n });\n\n entityMetadata.ownColumns = this.metadataArgsStorage\n .filterColumns(entityMetadata.inheritanceTree)\n .map(args => {\n\n // for single table children we reuse columns created for their parents\n if (entityMetadata.tableType === \"entity-child\")\n return entityMetadata.parentEntityMetadata.ownColumns.find(column => column.propertyName === args.propertyName)!;\n\n const column = new ColumnMetadata({ connection: this.connection, entityMetadata, args });\n\n // if single table inheritance used, we need to mark all inherit table columns as nullable\n const columnInSingleTableInheritedChild = allEntityMetadatas.find(otherEntityMetadata => otherEntityMetadata.tableType === \"entity-child\" && otherEntityMetadata.target === args.target);\n if (columnInSingleTableInheritedChild)\n 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 = entityInheritance.column && entityInheritance.column.name ? entityInheritance.column.name : \"type\";\n let discriminatorColumn = entityMetadata.ownColumns.find(column => column.propertyName === discriminatorColumnName);\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 = entityMetadata.parentEntityMetadata.ownColumns.find(column => column.isDiscriminator);\n if (discriminatorColumn && !entityMetadata.ownColumns.find(column => column === discriminatorColumn)) {\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(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: \"varchar\",\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(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: \"integer\",\n nullable: false,\n default: 1\n }\n }\n }));\n entityMetadata.ownColumns.push(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: \"integer\",\n nullable: false,\n default: 2\n }\n }\n }));\n }\n\n entityMetadata.ownRelations = this.metadataArgsStorage.filterRelations(entityMetadata.inheritanceTree).map(args => {\n\n // for single table children we reuse relations created for their parents\n if (entityMetadata.tableType === \"entity-child\") {\n const parentRelation = entityMetadata.parentEntityMetadata.ownRelations.find(relation => relation.propertyName === args.propertyName)!;\n const type = args.type instanceof Function ? (args.type as () => any)() : 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.filterRelationIds(entityMetadata.inheritanceTree).map(args => {\n\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(relationId => relationId.propertyName === args.propertyName)!;\n\n return new RelationIdMetadata({ entityMetadata, args });\n });\n entityMetadata.relationCounts = this.metadataArgsStorage.filterRelationCounts(entityMetadata.inheritanceTree).map(args => {\n\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(relationCount => relationCount.propertyName === args.propertyName)!;\n\n return new RelationCountMetadata({ entityMetadata, args });\n });\n entityMetadata.ownListeners = this.metadataArgsStorage.filterListeners(entityMetadata.inheritanceTree).map(args => {\n return new EntityListenerMetadata({ entityMetadata: entityMetadata, args: args });\n });\n entityMetadata.checks = this.metadataArgsStorage.filterChecks(entityMetadata.inheritanceTree).map(args => {\n return new CheckMetadata({ entityMetadata, args });\n });\n\n // Only PostgreSQL supports exclusion constraints.\n if (this.connection.driver instanceof PostgresDriver) {\n entityMetadata.exclusions = this.metadataArgsStorage.filterExclusions(entityMetadata.inheritanceTree).map(args => {\n return new ExclusionMetadata({ entityMetadata, args });\n });\n }\n\n if (this.connection.driver instanceof CockroachDriver) {\n entityMetadata.ownIndices = this.metadataArgsStorage.filterIndices(entityMetadata.inheritanceTree)\n .filter(args => !args.unique)\n .map(args => {\n return new IndexMetadata({entityMetadata, args});\n });\n\n const uniques = this.metadataArgsStorage.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\n } else {\n entityMetadata.ownIndices = this.metadataArgsStorage.filterIndices(entityMetadata.inheritanceTree).map(args => {\n return new IndexMetadata({entityMetadata, args});\n });\n }\n\n // Mysql and SAP HANA stores unique constraints as unique indices.\n if (this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver || this.connection.driver instanceof SapDriver) {\n const indices = this.metadataArgsStorage.filterUniques(entityMetadata.inheritanceTree).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\n } else {\n const uniques = this.metadataArgsStorage.filterUniques(entityMetadata.inheritanceTree).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(entityMetadata: EntityMetadata, embeddedArgs: EmbeddedMetadataArgs[]): EmbeddedMetadata[] {\n return embeddedArgs.map(embeddedArgs => {\n const embeddedMetadata = new EmbeddedMetadata({ entityMetadata: entityMetadata, args: embeddedArgs });\n const targets = MetadataUtils.getInheritanceTree(embeddedMetadata.type);\n\n embeddedMetadata.columns = this.metadataArgsStorage.filterColumns(targets).map(args => {\n return new ColumnMetadata({ connection: this.connection, entityMetadata, embeddedMetadata, args});\n });\n embeddedMetadata.relations = this.metadataArgsStorage.filterRelations(targets).map(args => {\n return new RelationMetadata({ entityMetadata, embeddedMetadata, args });\n });\n embeddedMetadata.listeners = this.metadataArgsStorage.filterListeners(targets).map(args => {\n return new EntityListenerMetadata({ entityMetadata, embeddedMetadata, args });\n });\n embeddedMetadata.indices = this.metadataArgsStorage.filterIndices(targets).map(args => {\n return new IndexMetadata({ entityMetadata, embeddedMetadata, args });\n });\n embeddedMetadata.uniques = this.metadataArgsStorage.filterUniques(targets).map(args => {\n return new UniqueMetadata({ entityMetadata, embeddedMetadata, args });\n });\n embeddedMetadata.relationIds = this.metadataArgsStorage.filterRelationIds(targets).map(args => {\n return new RelationIdMetadata({ entityMetadata, args });\n });\n embeddedMetadata.relationCounts = this.metadataArgsStorage.filterRelationCounts(targets).map(args => {\n return new RelationCountMetadata({ entityMetadata, args });\n });\n embeddedMetadata.embeddeds = this.createEmbeddedsRecursively(entityMetadata, this.metadataArgsStorage.filterEmbeddeds(targets));\n embeddedMetadata.embeddeds.forEach(subEmbedded => subEmbedded.parentEmbeddedMetadata = embeddedMetadata);\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 => embedded.build(this.connection));\n entityMetadata.embeddeds.forEach(embedded => {\n embedded.columnsFromTree.forEach(column => column.build(this.connection));\n embedded.relationsFromTree.forEach(relation => relation.build());\n });\n entityMetadata.ownColumns.forEach(column => column.build(this.connection));\n entityMetadata.ownRelations.forEach(relation => relation.build());\n entityMetadata.relations = entityMetadata.embeddeds.reduce((relations, embedded) => relations.concat(embedded.relationsFromTree), entityMetadata.ownRelations);\n entityMetadata.eagerRelations = entityMetadata.relations.filter(relation => relation.isEager);\n entityMetadata.lazyRelations = entityMetadata.relations.filter(relation => relation.isLazy);\n entityMetadata.oneToOneRelations = entityMetadata.relations.filter(relation => relation.isOneToOne);\n entityMetadata.oneToManyRelations = entityMetadata.relations.filter(relation => relation.isOneToMany);\n entityMetadata.manyToOneRelations = entityMetadata.relations.filter(relation => relation.isManyToOne);\n entityMetadata.manyToManyRelations = entityMetadata.relations.filter(relation => relation.isManyToMany);\n entityMetadata.ownerOneToOneRelations = entityMetadata.relations.filter(relation => relation.isOneToOneOwner);\n entityMetadata.ownerManyToManyRelations = entityMetadata.relations.filter(relation => relation.isManyToManyOwner);\n entityMetadata.treeParentRelation = entityMetadata.relations.find(relation => relation.isTreeParent);\n entityMetadata.treeChildrenRelation = entityMetadata.relations.find(relation => relation.isTreeChildren);\n entityMetadata.columns = entityMetadata.embeddeds.reduce((columns, embedded) => columns.concat(embedded.columnsFromTree), entityMetadata.ownColumns);\n entityMetadata.listeners = entityMetadata.embeddeds.reduce((listeners, embedded) => listeners.concat(embedded.listenersFromTree), entityMetadata.ownListeners);\n entityMetadata.afterLoadListeners = entityMetadata.listeners.filter(listener => listener.type === EventListenerTypes.AFTER_LOAD);\n entityMetadata.afterInsertListeners = entityMetadata.listeners.filter(listener => listener.type === EventListenerTypes.AFTER_INSERT);\n entityMetadata.afterUpdateListeners = entityMetadata.listeners.filter(listener => listener.type === EventListenerTypes.AFTER_UPDATE);\n entityMetadata.afterRemoveListeners = entityMetadata.listeners.filter(listener => listener.type === EventListenerTypes.AFTER_REMOVE);\n entityMetadata.beforeInsertListeners = entityMetadata.listeners.filter(listener => listener.type === EventListenerTypes.BEFORE_INSERT);\n entityMetadata.beforeUpdateListeners = entityMetadata.listeners.filter(listener => listener.type === EventListenerTypes.BEFORE_UPDATE);\n entityMetadata.beforeRemoveListeners = entityMetadata.listeners.filter(listener => listener.type === EventListenerTypes.BEFORE_REMOVE);\n entityMetadata.indices = entityMetadata.embeddeds.reduce((indices, embedded) => indices.concat(embedded.indicesFromTree), entityMetadata.ownIndices);\n entityMetadata.uniques = entityMetadata.embeddeds.reduce((uniques, embedded) => uniques.concat(embedded.uniquesFromTree), entityMetadata.ownUniques);\n entityMetadata.primaryColumns = entityMetadata.columns.filter(column => column.isPrimary);\n entityMetadata.nonVirtualColumns = entityMetadata.columns.filter(column => !column.isVirtual);\n entityMetadata.ancestorColumns = entityMetadata.columns.filter(column => column.closureType === \"ancestor\");\n entityMetadata.descendantColumns = entityMetadata.columns.filter(column => column.closureType === \"descendant\");\n entityMetadata.hasMultiplePrimaryKeys = entityMetadata.primaryColumns.length > 1;\n entityMetadata.generatedColumns = entityMetadata.columns.filter(column => column.isGenerated || column.isObjectId);\n entityMetadata.hasUUIDGeneratedColumns = entityMetadata.columns.filter(column => column.isGenerated || column.generationStrategy === \"uuid\").length > 0;\n entityMetadata.createDateColumn = entityMetadata.columns.find(column => column.isCreateDate);\n entityMetadata.updateDateColumn = entityMetadata.columns.find(column => column.isUpdateDate);\n entityMetadata.deleteDateColumn = entityMetadata.columns.find(column => column.isDeleteDate);\n entityMetadata.versionColumn = entityMetadata.columns.find(column => column.isVersion);\n entityMetadata.discriminatorColumn = entityMetadata.columns.find(column => column.isDiscriminator);\n entityMetadata.treeLevelColumn = entityMetadata.columns.find(column => column.isTreeLevel);\n entityMetadata.nestedSetLeftColumn = entityMetadata.columns.find(column => column.isNestedSetLeft);\n entityMetadata.nestedSetRightColumn = entityMetadata.columns.find(column => column.isNestedSetRight);\n entityMetadata.materializedPathColumn = entityMetadata.columns.find(column => column.isMaterializedPath);\n entityMetadata.objectIdColumn = entityMetadata.columns.find(column => column.isObjectId);\n entityMetadata.foreignKeys.forEach(foreignKey => foreignKey.build(this.connection.namingStrategy));\n entityMetadata.propertiesMap = entityMetadata.createPropertiesMap();\n entityMetadata.relationIds.forEach(relationId => relationId.build());\n entityMetadata.relationCounts.forEach(relationCount => relationCount.build());\n entityMetadata.embeddeds.forEach(embedded => {\n embedded.relationIdsFromTree.forEach(relationId => relationId.build());\n embedded.relationCountsFromTree.forEach(relationCount => relationCount.build());\n });\n }\n\n /**\n * Computes entity metadata's relations inverse side properties.\n */\n protected computeInverseProperties(entityMetadata: EntityMetadata, entityMetadatas: EntityMetadata[]) {\n entityMetadata.relations.forEach(relation => {\n\n // compute inverse side (related) entity metadatas for all relation metadatas\n const inverseEntityMetadata = entityMetadatas.find(m => m.target === relation.type || (typeof relation.type === \"string\" && (m.targetName === relation.type || m.givenTableName === relation.type)));\n if (!inverseEntityMetadata)\n throw new TypeORMError(\"Entity metadata for \" + entityMetadata.name + \"#\" + relation.propertyPath + \" was not found. Check if you specified a correct entity object and if it's connected in the connection options.\");\n\n relation.inverseEntityMetadata = inverseEntityMetadata;\n relation.inverseSidePropertyPath = relation.buildInverseSidePropertyPath();\n\n // and compute inverse relation and mark if it has such\n relation.inverseRelation = inverseEntityMetadata.relations.find(foundRelation => foundRelation.propertyPath === relation.inverseSidePropertyPath);\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}\n"],"sourceRoot":".."}
@@ -125,7 +125,7 @@ var JunctionEntityMetadataBuilder = /** @class */ (function () {
125
125
  // set junction table columns
126
126
  entityMetadata.ownerColumns = junctionColumns;
127
127
  entityMetadata.inverseColumns = inverseJunctionColumns;
128
- entityMetadata.ownColumns = tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(junctionColumns)), tslib_1.__read(inverseJunctionColumns));
128
+ entityMetadata.ownColumns = (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(junctionColumns), false), (0, tslib_1.__read)(inverseJunctionColumns), false);
129
129
  entityMetadata.ownColumns.forEach(function (column) { return column.relationMetadata = relation; });
130
130
  // create junction table foreign keys
131
131
  // Note: UPDATE CASCADE clause is not supported in Oracle.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/metadata-builder/JunctionEntityMetadataBuilder.ts"],"names":[],"mappings":"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","file":"JunctionEntityMetadataBuilder.js","sourcesContent":["import {MysqlDriver} from \"../driver/mysql/MysqlDriver\";\nimport {ColumnMetadata} from \"../metadata/ColumnMetadata\";\nimport {Connection} from \"../connection/Connection\";\nimport {EntityMetadata} from \"../metadata/EntityMetadata\";\nimport {ForeignKeyMetadata} from \"../metadata/ForeignKeyMetadata\";\nimport {IndexMetadata} from \"../metadata/IndexMetadata\";\nimport {JoinTableMetadataArgs} from \"../metadata-args/JoinTableMetadataArgs\";\nimport {RelationMetadata} from \"../metadata/RelationMetadata\";\nimport {AuroraDataApiDriver} from \"../driver/aurora-data-api/AuroraDataApiDriver\";\nimport {OracleDriver} from \"../driver/oracle/OracleDriver\";\nimport { TypeORMError } from \"../error\";\n\n/**\n * Creates EntityMetadata for junction tables.\n * Junction tables are tables generated by many-to-many relations.\n */\nexport class JunctionEntityMetadataBuilder {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(private connection: Connection) {\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Builds EntityMetadata for the junction of the given many-to-many relation.\n */\n build(relation: RelationMetadata, joinTable: JoinTableMetadataArgs): EntityMetadata {\n const referencedColumns = this.collectReferencedColumns(relation, joinTable);\n const inverseReferencedColumns = this.collectInverseReferencedColumns(relation, joinTable);\n\n const joinTableName = joinTable.name || this.connection.namingStrategy.joinTableName(\n relation.entityMetadata.tableNameWithoutPrefix,\n relation.inverseEntityMetadata.tableNameWithoutPrefix,\n relation.propertyPath,\n relation.inverseRelation ? relation.inverseRelation.propertyName : \"\"\n );\n\n const entityMetadata = new EntityMetadata({\n connection: this.connection,\n args: {\n target: \"\",\n name: joinTableName,\n type: \"junction\",\n database: joinTable.database || relation.entityMetadata.database,\n schema: joinTable.schema || relation.entityMetadata.schema,\n }\n });\n entityMetadata.build();\n\n // create original side junction columns\n const junctionColumns = referencedColumns.map(referencedColumn => {\n const joinColumn = joinTable.joinColumns ? joinTable.joinColumns.find(joinColumnArgs => {\n return (!joinColumnArgs.referencedColumnName || joinColumnArgs.referencedColumnName === referencedColumn.propertyName) &&\n !!joinColumnArgs.name;\n }) : undefined;\n const columnName = joinColumn && joinColumn.name ? joinColumn.name\n : this.connection.namingStrategy.joinTableColumnName(relation.entityMetadata.tableNameWithoutPrefix, referencedColumn.propertyName, referencedColumn.databaseName);\n\n return new ColumnMetadata({\n connection: this.connection,\n entityMetadata: entityMetadata,\n referencedColumn: referencedColumn,\n args: {\n target: \"\",\n mode: \"virtual\",\n propertyName: columnName,\n options: {\n name: columnName,\n length: !referencedColumn.length\n && (this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver)\n && (referencedColumn.generationStrategy === \"uuid\" || referencedColumn.type === \"uuid\")\n ? \"36\"\n : referencedColumn.length, // fix https://github.com/typeorm/typeorm/issues/3604\n width: referencedColumn.width,\n type: referencedColumn.type,\n precision: referencedColumn.precision,\n scale: referencedColumn.scale,\n charset: referencedColumn.charset,\n collation: referencedColumn.collation,\n zerofill: referencedColumn.zerofill,\n unsigned: referencedColumn.zerofill ? true : referencedColumn.unsigned,\n enum: referencedColumn.enum,\n enumName: referencedColumn.enumName,\n nullable: false,\n primary: true,\n }\n }\n });\n });\n\n // create inverse side junction columns\n const inverseJunctionColumns = inverseReferencedColumns.map(inverseReferencedColumn => {\n const joinColumn = joinTable.inverseJoinColumns ? joinTable.inverseJoinColumns.find(joinColumnArgs => {\n return (!joinColumnArgs.referencedColumnName || joinColumnArgs.referencedColumnName === inverseReferencedColumn.propertyName) &&\n !!joinColumnArgs.name;\n }) : undefined;\n const columnName = joinColumn && joinColumn.name ? joinColumn.name\n : this.connection.namingStrategy.joinTableInverseColumnName(relation.inverseEntityMetadata.tableNameWithoutPrefix, inverseReferencedColumn.propertyName, inverseReferencedColumn.databaseName);\n\n return new ColumnMetadata({\n connection: this.connection,\n entityMetadata: entityMetadata,\n referencedColumn: inverseReferencedColumn,\n args: {\n target: \"\",\n mode: \"virtual\",\n propertyName: columnName,\n options: {\n length: !inverseReferencedColumn.length\n && (this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver)\n && (inverseReferencedColumn.generationStrategy === \"uuid\" || inverseReferencedColumn.type === \"uuid\")\n ? \"36\"\n : inverseReferencedColumn.length, // fix https://github.com/typeorm/typeorm/issues/3604\n width: inverseReferencedColumn.width, // fix https://github.com/typeorm/typeorm/issues/6442\n type: inverseReferencedColumn.type,\n precision: inverseReferencedColumn.precision,\n scale: inverseReferencedColumn.scale,\n charset: inverseReferencedColumn.charset,\n collation: inverseReferencedColumn.collation,\n zerofill: inverseReferencedColumn.zerofill,\n unsigned: inverseReferencedColumn.zerofill ? true : inverseReferencedColumn.unsigned,\n enum: inverseReferencedColumn.enum,\n enumName: inverseReferencedColumn.enumName,\n name: columnName,\n nullable: false,\n primary: true,\n }\n }\n });\n });\n\n this.changeDuplicatedColumnNames(junctionColumns, inverseJunctionColumns);\n\n // set junction table columns\n entityMetadata.ownerColumns = junctionColumns;\n entityMetadata.inverseColumns = inverseJunctionColumns;\n entityMetadata.ownColumns = [...junctionColumns, ...inverseJunctionColumns];\n entityMetadata.ownColumns.forEach(column => column.relationMetadata = relation);\n\n // create junction table foreign keys\n // Note: UPDATE CASCADE clause is not supported in Oracle.\n entityMetadata.foreignKeys = relation.createForeignKeyConstraints ? [\n new ForeignKeyMetadata({\n entityMetadata: entityMetadata,\n referencedEntityMetadata: relation.entityMetadata,\n columns: junctionColumns,\n referencedColumns: referencedColumns,\n onDelete: relation.onDelete || \"CASCADE\",\n onUpdate: this.connection.driver instanceof OracleDriver ? \"NO ACTION\" : relation.onUpdate || \"CASCADE\",\n }),\n new ForeignKeyMetadata({\n entityMetadata: entityMetadata,\n referencedEntityMetadata: relation.inverseEntityMetadata,\n columns: inverseJunctionColumns,\n referencedColumns: inverseReferencedColumns,\n onDelete: relation.inverseRelation ? relation.inverseRelation.onDelete : \"CASCADE\",\n onUpdate: this.connection.driver instanceof OracleDriver\n ? \"NO ACTION\"\n : relation.inverseRelation\n ? relation.inverseRelation.onUpdate\n : \"CASCADE\",\n }),\n ] : [];\n\n // create junction table indices\n entityMetadata.ownIndices = [\n new IndexMetadata({\n entityMetadata: entityMetadata,\n columns: junctionColumns,\n args: {\n target: entityMetadata.target,\n synchronize: true\n }\n }),\n\n new IndexMetadata({\n entityMetadata: entityMetadata,\n columns: inverseJunctionColumns,\n args: {\n target: entityMetadata.target,\n synchronize: true\n }\n })\n ];\n\n // finally return entity metadata\n return entityMetadata;\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Collects referenced columns from the given join column args.\n */\n protected collectReferencedColumns(relation: RelationMetadata, joinTable: JoinTableMetadataArgs): ColumnMetadata[] {\n const hasAnyReferencedColumnName = joinTable.joinColumns ? joinTable.joinColumns.find(joinColumn => !!joinColumn.referencedColumnName) : false;\n if (!joinTable.joinColumns || (joinTable.joinColumns && !hasAnyReferencedColumnName)) {\n return relation.entityMetadata.columns.filter(column => column.isPrimary);\n } else {\n return joinTable.joinColumns.map(joinColumn => {\n const referencedColumn = relation.entityMetadata.columns.find(column => column.propertyName === joinColumn.referencedColumnName);\n if (!referencedColumn)\n throw new TypeORMError(`Referenced column ${joinColumn.referencedColumnName} was not found in entity ${relation.entityMetadata.name}`);\n\n return referencedColumn;\n });\n }\n }\n\n /**\n * Collects inverse referenced columns from the given join column args.\n */\n protected collectInverseReferencedColumns(relation: RelationMetadata, joinTable: JoinTableMetadataArgs): ColumnMetadata[] {\n const hasInverseJoinColumns = !!joinTable.inverseJoinColumns;\n const hasAnyInverseReferencedColumnName = hasInverseJoinColumns ? joinTable.inverseJoinColumns!.find(joinColumn => !!joinColumn.referencedColumnName) : false;\n if (!hasInverseJoinColumns || (hasInverseJoinColumns && !hasAnyInverseReferencedColumnName)) {\n return relation.inverseEntityMetadata.primaryColumns;\n } else {\n return joinTable.inverseJoinColumns!.map(joinColumn => {\n const referencedColumn = relation.inverseEntityMetadata.ownColumns.find(column => column.propertyName === joinColumn.referencedColumnName);\n if (!referencedColumn)\n throw new TypeORMError(`Referenced column ${joinColumn.referencedColumnName} was not found in entity ${relation.inverseEntityMetadata.name}`);\n\n return referencedColumn;\n });\n }\n }\n\n protected changeDuplicatedColumnNames(junctionColumns: ColumnMetadata[], inverseJunctionColumns: ColumnMetadata[]) {\n junctionColumns.forEach(junctionColumn => {\n inverseJunctionColumns.forEach(inverseJunctionColumn => {\n if (junctionColumn.givenDatabaseName === inverseJunctionColumn.givenDatabaseName) {\n const junctionColumnName = this.connection.namingStrategy.joinTableColumnDuplicationPrefix(junctionColumn.propertyName, 1);\n junctionColumn.propertyName = junctionColumnName;\n junctionColumn.givenDatabaseName = junctionColumnName;\n\n const inverseJunctionColumnName = this.connection.namingStrategy.joinTableColumnDuplicationPrefix(inverseJunctionColumn.propertyName, 2);\n inverseJunctionColumn.propertyName = inverseJunctionColumnName;\n inverseJunctionColumn.givenDatabaseName = inverseJunctionColumnName;\n }\n });\n });\n }\n\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/metadata-builder/JunctionEntityMetadataBuilder.ts"],"names":[],"mappings":"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","file":"JunctionEntityMetadataBuilder.js","sourcesContent":["import {MysqlDriver} from \"../driver/mysql/MysqlDriver\";\nimport {ColumnMetadata} from \"../metadata/ColumnMetadata\";\nimport {Connection} from \"../connection/Connection\";\nimport {EntityMetadata} from \"../metadata/EntityMetadata\";\nimport {ForeignKeyMetadata} from \"../metadata/ForeignKeyMetadata\";\nimport {IndexMetadata} from \"../metadata/IndexMetadata\";\nimport {JoinTableMetadataArgs} from \"../metadata-args/JoinTableMetadataArgs\";\nimport {RelationMetadata} from \"../metadata/RelationMetadata\";\nimport {AuroraDataApiDriver} from \"../driver/aurora-data-api/AuroraDataApiDriver\";\nimport {OracleDriver} from \"../driver/oracle/OracleDriver\";\nimport { TypeORMError } from \"../error\";\n\n/**\n * Creates EntityMetadata for junction tables.\n * Junction tables are tables generated by many-to-many relations.\n */\nexport class JunctionEntityMetadataBuilder {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(private connection: Connection) {\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Builds EntityMetadata for the junction of the given many-to-many relation.\n */\n build(relation: RelationMetadata, joinTable: JoinTableMetadataArgs): EntityMetadata {\n const referencedColumns = this.collectReferencedColumns(relation, joinTable);\n const inverseReferencedColumns = this.collectInverseReferencedColumns(relation, joinTable);\n\n const joinTableName = joinTable.name || this.connection.namingStrategy.joinTableName(\n relation.entityMetadata.tableNameWithoutPrefix,\n relation.inverseEntityMetadata.tableNameWithoutPrefix,\n relation.propertyPath,\n relation.inverseRelation ? relation.inverseRelation.propertyName : \"\"\n );\n\n const entityMetadata = new EntityMetadata({\n connection: this.connection,\n args: {\n target: \"\",\n name: joinTableName,\n type: \"junction\",\n database: joinTable.database || relation.entityMetadata.database,\n schema: joinTable.schema || relation.entityMetadata.schema,\n }\n });\n entityMetadata.build();\n\n // create original side junction columns\n const junctionColumns = referencedColumns.map(referencedColumn => {\n const joinColumn = joinTable.joinColumns ? joinTable.joinColumns.find(joinColumnArgs => {\n return (!joinColumnArgs.referencedColumnName || joinColumnArgs.referencedColumnName === referencedColumn.propertyName) &&\n !!joinColumnArgs.name;\n }) : undefined;\n const columnName = joinColumn && joinColumn.name ? joinColumn.name\n : this.connection.namingStrategy.joinTableColumnName(relation.entityMetadata.tableNameWithoutPrefix, referencedColumn.propertyName, referencedColumn.databaseName);\n\n return new ColumnMetadata({\n connection: this.connection,\n entityMetadata: entityMetadata,\n referencedColumn: referencedColumn,\n args: {\n target: \"\",\n mode: \"virtual\",\n propertyName: columnName,\n options: {\n name: columnName,\n length: !referencedColumn.length\n && (this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver)\n && (referencedColumn.generationStrategy === \"uuid\" || referencedColumn.type === \"uuid\")\n ? \"36\"\n : referencedColumn.length, // fix https://github.com/typeorm/typeorm/issues/3604\n width: referencedColumn.width,\n type: referencedColumn.type,\n precision: referencedColumn.precision,\n scale: referencedColumn.scale,\n charset: referencedColumn.charset,\n collation: referencedColumn.collation,\n zerofill: referencedColumn.zerofill,\n unsigned: referencedColumn.zerofill ? true : referencedColumn.unsigned,\n enum: referencedColumn.enum,\n enumName: referencedColumn.enumName,\n nullable: false,\n primary: true,\n }\n }\n });\n });\n\n // create inverse side junction columns\n const inverseJunctionColumns = inverseReferencedColumns.map(inverseReferencedColumn => {\n const joinColumn = joinTable.inverseJoinColumns ? joinTable.inverseJoinColumns.find(joinColumnArgs => {\n return (!joinColumnArgs.referencedColumnName || joinColumnArgs.referencedColumnName === inverseReferencedColumn.propertyName) &&\n !!joinColumnArgs.name;\n }) : undefined;\n const columnName = joinColumn && joinColumn.name ? joinColumn.name\n : this.connection.namingStrategy.joinTableInverseColumnName(relation.inverseEntityMetadata.tableNameWithoutPrefix, inverseReferencedColumn.propertyName, inverseReferencedColumn.databaseName);\n\n return new ColumnMetadata({\n connection: this.connection,\n entityMetadata: entityMetadata,\n referencedColumn: inverseReferencedColumn,\n args: {\n target: \"\",\n mode: \"virtual\",\n propertyName: columnName,\n options: {\n length: !inverseReferencedColumn.length\n && (this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver)\n && (inverseReferencedColumn.generationStrategy === \"uuid\" || inverseReferencedColumn.type === \"uuid\")\n ? \"36\"\n : inverseReferencedColumn.length, // fix https://github.com/typeorm/typeorm/issues/3604\n width: inverseReferencedColumn.width, // fix https://github.com/typeorm/typeorm/issues/6442\n type: inverseReferencedColumn.type,\n precision: inverseReferencedColumn.precision,\n scale: inverseReferencedColumn.scale,\n charset: inverseReferencedColumn.charset,\n collation: inverseReferencedColumn.collation,\n zerofill: inverseReferencedColumn.zerofill,\n unsigned: inverseReferencedColumn.zerofill ? true : inverseReferencedColumn.unsigned,\n enum: inverseReferencedColumn.enum,\n enumName: inverseReferencedColumn.enumName,\n name: columnName,\n nullable: false,\n primary: true,\n }\n }\n });\n });\n\n this.changeDuplicatedColumnNames(junctionColumns, inverseJunctionColumns);\n\n // set junction table columns\n entityMetadata.ownerColumns = junctionColumns;\n entityMetadata.inverseColumns = inverseJunctionColumns;\n entityMetadata.ownColumns = [...junctionColumns, ...inverseJunctionColumns];\n entityMetadata.ownColumns.forEach(column => column.relationMetadata = relation);\n\n // create junction table foreign keys\n // Note: UPDATE CASCADE clause is not supported in Oracle.\n entityMetadata.foreignKeys = relation.createForeignKeyConstraints ? [\n new ForeignKeyMetadata({\n entityMetadata: entityMetadata,\n referencedEntityMetadata: relation.entityMetadata,\n columns: junctionColumns,\n referencedColumns: referencedColumns,\n onDelete: relation.onDelete || \"CASCADE\",\n onUpdate: this.connection.driver instanceof OracleDriver ? \"NO ACTION\" : relation.onUpdate || \"CASCADE\",\n }),\n new ForeignKeyMetadata({\n entityMetadata: entityMetadata,\n referencedEntityMetadata: relation.inverseEntityMetadata,\n columns: inverseJunctionColumns,\n referencedColumns: inverseReferencedColumns,\n onDelete: relation.inverseRelation ? relation.inverseRelation.onDelete : \"CASCADE\",\n onUpdate: this.connection.driver instanceof OracleDriver\n ? \"NO ACTION\"\n : relation.inverseRelation\n ? relation.inverseRelation.onUpdate\n : \"CASCADE\",\n }),\n ] : [];\n\n // create junction table indices\n entityMetadata.ownIndices = [\n new IndexMetadata({\n entityMetadata: entityMetadata,\n columns: junctionColumns,\n args: {\n target: entityMetadata.target,\n synchronize: true\n }\n }),\n\n new IndexMetadata({\n entityMetadata: entityMetadata,\n columns: inverseJunctionColumns,\n args: {\n target: entityMetadata.target,\n synchronize: true\n }\n })\n ];\n\n // finally return entity metadata\n return entityMetadata;\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Collects referenced columns from the given join column args.\n */\n protected collectReferencedColumns(relation: RelationMetadata, joinTable: JoinTableMetadataArgs): ColumnMetadata[] {\n const hasAnyReferencedColumnName = joinTable.joinColumns ? joinTable.joinColumns.find(joinColumn => !!joinColumn.referencedColumnName) : false;\n if (!joinTable.joinColumns || (joinTable.joinColumns && !hasAnyReferencedColumnName)) {\n return relation.entityMetadata.columns.filter(column => column.isPrimary);\n } else {\n return joinTable.joinColumns.map(joinColumn => {\n const referencedColumn = relation.entityMetadata.columns.find(column => column.propertyName === joinColumn.referencedColumnName);\n if (!referencedColumn)\n throw new TypeORMError(`Referenced column ${joinColumn.referencedColumnName} was not found in entity ${relation.entityMetadata.name}`);\n\n return referencedColumn;\n });\n }\n }\n\n /**\n * Collects inverse referenced columns from the given join column args.\n */\n protected collectInverseReferencedColumns(relation: RelationMetadata, joinTable: JoinTableMetadataArgs): ColumnMetadata[] {\n const hasInverseJoinColumns = !!joinTable.inverseJoinColumns;\n const hasAnyInverseReferencedColumnName = hasInverseJoinColumns ? joinTable.inverseJoinColumns!.find(joinColumn => !!joinColumn.referencedColumnName) : false;\n if (!hasInverseJoinColumns || (hasInverseJoinColumns && !hasAnyInverseReferencedColumnName)) {\n return relation.inverseEntityMetadata.primaryColumns;\n } else {\n return joinTable.inverseJoinColumns!.map(joinColumn => {\n const referencedColumn = relation.inverseEntityMetadata.ownColumns.find(column => column.propertyName === joinColumn.referencedColumnName);\n if (!referencedColumn)\n throw new TypeORMError(`Referenced column ${joinColumn.referencedColumnName} was not found in entity ${relation.inverseEntityMetadata.name}`);\n\n return referencedColumn;\n });\n }\n }\n\n protected changeDuplicatedColumnNames(junctionColumns: ColumnMetadata[], inverseJunctionColumns: ColumnMetadata[]) {\n junctionColumns.forEach(junctionColumn => {\n inverseJunctionColumns.forEach(inverseJunctionColumn => {\n if (junctionColumn.givenDatabaseName === inverseJunctionColumn.givenDatabaseName) {\n const junctionColumnName = this.connection.namingStrategy.joinTableColumnDuplicationPrefix(junctionColumn.propertyName, 1);\n junctionColumn.propertyName = junctionColumnName;\n junctionColumn.givenDatabaseName = junctionColumnName;\n\n const inverseJunctionColumnName = this.connection.namingStrategy.joinTableColumnDuplicationPrefix(inverseJunctionColumn.propertyName, 2);\n inverseJunctionColumn.propertyName = inverseJunctionColumnName;\n inverseJunctionColumn.givenDatabaseName = inverseJunctionColumnName;\n }\n });\n });\n }\n\n}\n"],"sourceRoot":".."}