typeorm 0.3.29-dev.cc07c90 → 1.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2906) hide show
  1. package/README.md +67 -74
  2. package/browser/cache/DbQueryResultCache.d.ts +17 -6
  3. package/browser/cache/DbQueryResultCache.js +46 -32
  4. package/browser/cache/DbQueryResultCache.js.map +1 -1
  5. package/browser/cache/QueryResultCache.d.ts +2 -2
  6. package/browser/cache/QueryResultCache.js +3 -3
  7. package/browser/cache/QueryResultCache.js.map +1 -1
  8. package/browser/cache/QueryResultCacheFactory.d.ts +4 -4
  9. package/browser/cache/QueryResultCacheFactory.js +17 -14
  10. package/browser/cache/QueryResultCacheFactory.js.map +1 -1
  11. package/browser/cache/QueryResultCacheOptions.js +3 -3
  12. package/browser/cache/QueryResultCacheOptions.js.map +1 -1
  13. package/browser/cache/RedisQueryResultCache.d.ts +18 -19
  14. package/browser/cache/RedisQueryResultCache.js +54 -130
  15. package/browser/cache/RedisQueryResultCache.js.map +1 -1
  16. package/browser/cli-ts-node-commonjs.js +4 -3
  17. package/browser/cli-ts-node-commonjs.js.map +1 -1
  18. package/browser/cli-ts-node-esm.js +5 -4
  19. package/browser/cli-ts-node-esm.js.map +1 -1
  20. package/browser/common/DeepPartial.js +3 -3
  21. package/browser/common/DeepPartial.js.map +1 -1
  22. package/browser/common/EntityTarget.d.ts +2 -2
  23. package/browser/common/EntityTarget.js +3 -3
  24. package/browser/common/EntityTarget.js.map +1 -1
  25. package/browser/common/MixedList.js +3 -3
  26. package/browser/common/MixedList.js.map +1 -1
  27. package/browser/common/NonNever.d.ts +1 -1
  28. package/browser/common/NonNever.js +3 -3
  29. package/browser/common/NonNever.js.map +1 -1
  30. package/browser/common/ObjectLiteral.js +3 -3
  31. package/browser/common/ObjectLiteral.js.map +1 -1
  32. package/browser/common/ObjectType.js +3 -3
  33. package/browser/common/ObjectType.js.map +1 -1
  34. package/browser/common/PickKeysByType.js +3 -3
  35. package/browser/common/PickKeysByType.js.map +1 -1
  36. package/browser/common/PrimitiveCriteria.js +3 -3
  37. package/browser/common/PrimitiveCriteria.js.map +1 -1
  38. package/browser/common/RelationType.d.ts +5 -5
  39. package/browser/common/RelationType.js +3 -3
  40. package/browser/common/RelationType.js.map +1 -1
  41. package/browser/connection/ConnectionMetadataBuilder.d.ts +10 -7
  42. package/browser/connection/ConnectionMetadataBuilder.js +32 -27
  43. package/browser/connection/ConnectionMetadataBuilder.js.map +1 -1
  44. package/browser/connection/ConnectionOptionsReader.d.ts +3 -11
  45. package/browser/connection/ConnectionOptionsReader.js +43 -71
  46. package/browser/connection/ConnectionOptionsReader.js.map +1 -1
  47. package/browser/data-source/BaseDataSourceOptions.d.ts +13 -20
  48. package/browser/data-source/BaseDataSourceOptions.js +3 -3
  49. package/browser/data-source/BaseDataSourceOptions.js.map +1 -1
  50. package/browser/data-source/DataSource.d.ts +50 -61
  51. package/browser/data-source/DataSource.js +107 -114
  52. package/browser/data-source/DataSource.js.map +1 -1
  53. package/browser/data-source/DataSourceOptions.d.ts +18 -19
  54. package/browser/data-source/DataSourceOptions.js +3 -3
  55. package/browser/data-source/DataSourceOptions.js.map +1 -1
  56. package/browser/data-source/index.d.ts +1 -1
  57. package/browser/data-source/index.js +5 -4
  58. package/browser/data-source/index.js.map +1 -1
  59. package/browser/decorator/Check.d.ts +3 -0
  60. package/browser/decorator/Check.js +11 -7
  61. package/browser/decorator/Check.js.map +1 -1
  62. package/browser/decorator/Exclusion.d.ts +8 -2
  63. package/browser/decorator/Exclusion.js +17 -9
  64. package/browser/decorator/Exclusion.js.map +1 -1
  65. package/browser/decorator/ForeignKey.d.ts +11 -2
  66. package/browser/decorator/ForeignKey.js +14 -8
  67. package/browser/decorator/ForeignKey.js.map +1 -1
  68. package/browser/decorator/Generated.d.ts +1 -0
  69. package/browser/decorator/Generated.js +8 -5
  70. package/browser/decorator/Generated.js.map +1 -1
  71. package/browser/decorator/Index.d.ts +17 -1
  72. package/browser/decorator/Index.js +14 -8
  73. package/browser/decorator/Index.js.map +1 -1
  74. package/browser/decorator/Unique.d.ts +11 -1
  75. package/browser/decorator/Unique.js +13 -8
  76. package/browser/decorator/Unique.js.map +1 -1
  77. package/browser/decorator/columns/Column.d.ts +31 -10
  78. package/browser/decorator/columns/Column.js +14 -10
  79. package/browser/decorator/columns/Column.js.map +1 -1
  80. package/browser/decorator/columns/CreateDateColumn.d.ts +2 -1
  81. package/browser/decorator/columns/CreateDateColumn.js +8 -5
  82. package/browser/decorator/columns/CreateDateColumn.js.map +1 -1
  83. package/browser/decorator/columns/DeleteDateColumn.d.ts +2 -1
  84. package/browser/decorator/columns/DeleteDateColumn.js +8 -5
  85. package/browser/decorator/columns/DeleteDateColumn.js.map +1 -1
  86. package/browser/decorator/columns/ObjectIdColumn.d.ts +2 -1
  87. package/browser/decorator/columns/ObjectIdColumn.js +8 -5
  88. package/browser/decorator/columns/ObjectIdColumn.js.map +1 -1
  89. package/browser/decorator/columns/PrimaryColumn.d.ts +5 -2
  90. package/browser/decorator/columns/PrimaryColumn.js +14 -10
  91. package/browser/decorator/columns/PrimaryColumn.js.map +1 -1
  92. package/browser/decorator/columns/PrimaryGeneratedColumn.d.ts +10 -3
  93. package/browser/decorator/columns/PrimaryGeneratedColumn.js +13 -9
  94. package/browser/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
  95. package/browser/decorator/columns/UpdateDateColumn.d.ts +2 -1
  96. package/browser/decorator/columns/UpdateDateColumn.js +8 -5
  97. package/browser/decorator/columns/UpdateDateColumn.js.map +1 -1
  98. package/browser/decorator/columns/VersionColumn.d.ts +2 -1
  99. package/browser/decorator/columns/VersionColumn.js +8 -5
  100. package/browser/decorator/columns/VersionColumn.js.map +1 -1
  101. package/browser/decorator/columns/ViewColumn.d.ts +2 -1
  102. package/browser/decorator/columns/ViewColumn.js +8 -5
  103. package/browser/decorator/columns/ViewColumn.js.map +1 -1
  104. package/browser/decorator/columns/VirtualColumn.d.ts +5 -2
  105. package/browser/decorator/columns/VirtualColumn.js +11 -7
  106. package/browser/decorator/columns/VirtualColumn.js.map +1 -1
  107. package/browser/decorator/entity/ChildEntity.d.ts +1 -0
  108. package/browser/decorator/entity/ChildEntity.js +9 -6
  109. package/browser/decorator/entity/ChildEntity.js.map +1 -1
  110. package/browser/decorator/entity/Entity.d.ts +4 -1
  111. package/browser/decorator/entity/Entity.js +11 -7
  112. package/browser/decorator/entity/Entity.js.map +1 -1
  113. package/browser/decorator/entity/TableInheritance.d.ts +4 -1
  114. package/browser/decorator/entity/TableInheritance.js +10 -5
  115. package/browser/decorator/entity/TableInheritance.js.map +1 -1
  116. package/browser/decorator/entity-view/ViewEntity.d.ts +4 -1
  117. package/browser/decorator/entity-view/ViewEntity.js +11 -7
  118. package/browser/decorator/entity-view/ViewEntity.js.map +1 -1
  119. package/browser/decorator/listeners/AfterInsert.js +9 -7
  120. package/browser/decorator/listeners/AfterInsert.js.map +1 -1
  121. package/browser/decorator/listeners/AfterLoad.js +9 -7
  122. package/browser/decorator/listeners/AfterLoad.js.map +1 -1
  123. package/browser/decorator/listeners/AfterRecover.js +9 -7
  124. package/browser/decorator/listeners/AfterRecover.js.map +1 -1
  125. package/browser/decorator/listeners/AfterRemove.js +9 -7
  126. package/browser/decorator/listeners/AfterRemove.js.map +1 -1
  127. package/browser/decorator/listeners/AfterSoftRemove.js +9 -7
  128. package/browser/decorator/listeners/AfterSoftRemove.js.map +1 -1
  129. package/browser/decorator/listeners/AfterUpdate.js +9 -7
  130. package/browser/decorator/listeners/AfterUpdate.js.map +1 -1
  131. package/browser/decorator/listeners/BeforeInsert.js +9 -7
  132. package/browser/decorator/listeners/BeforeInsert.js.map +1 -1
  133. package/browser/decorator/listeners/BeforeRecover.js +9 -7
  134. package/browser/decorator/listeners/BeforeRecover.js.map +1 -1
  135. package/browser/decorator/listeners/BeforeRemove.js +9 -7
  136. package/browser/decorator/listeners/BeforeRemove.js.map +1 -1
  137. package/browser/decorator/listeners/BeforeSoftRemove.js +9 -7
  138. package/browser/decorator/listeners/BeforeSoftRemove.js.map +1 -1
  139. package/browser/decorator/listeners/BeforeUpdate.js +9 -7
  140. package/browser/decorator/listeners/BeforeUpdate.js.map +1 -1
  141. package/browser/decorator/listeners/EventSubscriber.js +7 -5
  142. package/browser/decorator/listeners/EventSubscriber.js.map +1 -1
  143. package/browser/decorator/options/ColumnCommonOptions.d.ts +2 -2
  144. package/browser/decorator/options/ColumnCommonOptions.js +3 -3
  145. package/browser/decorator/options/ColumnCommonOptions.js.map +1 -1
  146. package/browser/decorator/options/ColumnEmbeddedOptions.js +3 -3
  147. package/browser/decorator/options/ColumnEmbeddedOptions.js.map +1 -1
  148. package/browser/decorator/options/ColumnEnumOptions.js +3 -3
  149. package/browser/decorator/options/ColumnEnumOptions.js.map +1 -1
  150. package/browser/decorator/options/ColumnHstoreOptions.js +3 -3
  151. package/browser/decorator/options/ColumnHstoreOptions.js.map +1 -1
  152. package/browser/decorator/options/ColumnNumericOptions.d.ts +0 -16
  153. package/browser/decorator/options/ColumnNumericOptions.js +3 -3
  154. package/browser/decorator/options/ColumnNumericOptions.js.map +1 -1
  155. package/browser/decorator/options/ColumnOptions.d.ts +8 -33
  156. package/browser/decorator/options/ColumnOptions.js +3 -3
  157. package/browser/decorator/options/ColumnOptions.js.map +1 -1
  158. package/browser/decorator/options/ColumnUnsignedOptions.d.ts +1 -20
  159. package/browser/decorator/options/ColumnUnsignedOptions.js +3 -3
  160. package/browser/decorator/options/ColumnUnsignedOptions.js.map +1 -1
  161. package/browser/decorator/options/ColumnWithLengthOptions.js +3 -3
  162. package/browser/decorator/options/ColumnWithLengthOptions.js.map +1 -1
  163. package/browser/decorator/options/EntityOptions.d.ts +1 -1
  164. package/browser/decorator/options/EntityOptions.js +3 -3
  165. package/browser/decorator/options/EntityOptions.js.map +1 -1
  166. package/browser/decorator/options/ExclusionOptions.d.ts +10 -0
  167. package/{connection/ConnectionOptions.js → browser/decorator/options/ExclusionOptions.js} +1 -2
  168. package/browser/decorator/options/ExclusionOptions.js.map +1 -0
  169. package/browser/decorator/options/ForeignKeyOptions.d.ts +3 -3
  170. package/browser/decorator/options/ForeignKeyOptions.js +3 -3
  171. package/browser/decorator/options/ForeignKeyOptions.js.map +1 -1
  172. package/browser/decorator/options/IndexOptions.d.ts +7 -0
  173. package/browser/decorator/options/IndexOptions.js +3 -3
  174. package/browser/decorator/options/IndexOptions.js.map +1 -1
  175. package/browser/decorator/options/JoinColumnOptions.js +3 -3
  176. package/browser/decorator/options/JoinColumnOptions.js.map +1 -1
  177. package/browser/decorator/options/JoinTableMultipleColumnsOptions.d.ts +1 -1
  178. package/browser/decorator/options/JoinTableMultipleColumnsOptions.js +3 -3
  179. package/browser/decorator/options/JoinTableMultipleColumnsOptions.js.map +1 -1
  180. package/browser/decorator/options/JoinTableOptions.d.ts +1 -1
  181. package/browser/decorator/options/JoinTableOptions.js +3 -3
  182. package/browser/decorator/options/JoinTableOptions.js.map +1 -1
  183. package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.d.ts +1 -1
  184. package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.js +3 -3
  185. package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -1
  186. package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.d.ts +1 -9
  187. package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.js +3 -3
  188. package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
  189. package/browser/decorator/options/PrimaryGeneratedColumnUUIDOptions.js +3 -3
  190. package/browser/decorator/options/PrimaryGeneratedColumnUUIDOptions.js.map +1 -1
  191. package/browser/decorator/options/RelationOptions.d.ts +3 -3
  192. package/browser/decorator/options/RelationOptions.js +3 -3
  193. package/browser/decorator/options/RelationOptions.js.map +1 -1
  194. package/browser/decorator/options/SpatialColumnOptions.d.ts +1 -1
  195. package/browser/decorator/options/SpatialColumnOptions.js +3 -3
  196. package/browser/decorator/options/SpatialColumnOptions.js.map +1 -1
  197. package/browser/decorator/options/TransactionOptions.d.ts +1 -1
  198. package/browser/decorator/options/TransactionOptions.js +3 -3
  199. package/browser/decorator/options/TransactionOptions.js.map +1 -1
  200. package/browser/decorator/options/UniqueOptions.d.ts +1 -1
  201. package/browser/decorator/options/UniqueOptions.js +3 -3
  202. package/browser/decorator/options/UniqueOptions.js.map +1 -1
  203. package/browser/decorator/options/ValueTransformer.js +3 -3
  204. package/browser/decorator/options/ValueTransformer.js.map +1 -1
  205. package/browser/decorator/options/ViewColumnOptions.d.ts +1 -1
  206. package/browser/decorator/options/ViewColumnOptions.js +3 -3
  207. package/browser/decorator/options/ViewColumnOptions.js.map +1 -1
  208. package/browser/decorator/options/ViewEntityOptions.d.ts +3 -2
  209. package/browser/decorator/options/ViewEntityOptions.js +3 -3
  210. package/browser/decorator/options/ViewEntityOptions.js.map +1 -1
  211. package/browser/decorator/options/VirtualColumnOptions.d.ts +3 -3
  212. package/browser/decorator/options/VirtualColumnOptions.js +3 -3
  213. package/browser/decorator/options/VirtualColumnOptions.js.map +1 -1
  214. package/browser/decorator/relations/JoinColumn.d.ts +3 -1
  215. package/browser/decorator/relations/JoinColumn.js +8 -5
  216. package/browser/decorator/relations/JoinColumn.js.map +1 -1
  217. package/browser/decorator/relations/JoinTable.d.ts +4 -2
  218. package/browser/decorator/relations/JoinTable.js +8 -5
  219. package/browser/decorator/relations/JoinTable.js.map +1 -1
  220. package/browser/decorator/relations/ManyToMany.d.ts +7 -2
  221. package/browser/decorator/relations/ManyToMany.js +12 -7
  222. package/browser/decorator/relations/ManyToMany.js.map +1 -1
  223. package/browser/decorator/relations/ManyToOne.d.ts +7 -2
  224. package/browser/decorator/relations/ManyToOne.js +12 -7
  225. package/browser/decorator/relations/ManyToOne.js.map +1 -1
  226. package/browser/decorator/relations/OneToMany.d.ts +5 -2
  227. package/browser/decorator/relations/OneToMany.js +10 -5
  228. package/browser/decorator/relations/OneToMany.js.map +1 -1
  229. package/browser/decorator/relations/OneToOne.d.ts +7 -2
  230. package/browser/decorator/relations/OneToOne.js +12 -7
  231. package/browser/decorator/relations/OneToOne.js.map +1 -1
  232. package/browser/decorator/relations/RelationId.d.ts +4 -2
  233. package/browser/decorator/relations/RelationId.js +10 -6
  234. package/browser/decorator/relations/RelationId.js.map +1 -1
  235. package/browser/decorator/tree/Tree.d.ts +6 -4
  236. package/browser/decorator/tree/Tree.js +11 -7
  237. package/browser/decorator/tree/Tree.js.map +1 -1
  238. package/browser/decorator/tree/TreeChildren.d.ts +2 -0
  239. package/browser/decorator/tree/TreeChildren.js +9 -5
  240. package/browser/decorator/tree/TreeChildren.js.map +1 -1
  241. package/browser/decorator/tree/TreeLevelColumn.js +7 -5
  242. package/browser/decorator/tree/TreeLevelColumn.js.map +1 -1
  243. package/browser/decorator/tree/TreeParent.d.ts +3 -1
  244. package/browser/decorator/tree/TreeParent.js +9 -5
  245. package/browser/decorator/tree/TreeParent.js.map +1 -1
  246. package/browser/driver/Driver.d.ts +32 -21
  247. package/browser/driver/Driver.js +3 -3
  248. package/browser/driver/Driver.js.map +1 -1
  249. package/browser/driver/DriverFactory.d.ts +5 -3
  250. package/browser/driver/DriverFactory.js +61 -60
  251. package/browser/driver/DriverFactory.js.map +1 -1
  252. package/browser/driver/DriverUtils.d.ts +13 -11
  253. package/browser/driver/DriverUtils.js +28 -30
  254. package/browser/driver/DriverUtils.js.map +1 -1
  255. package/browser/driver/Query.js +6 -3
  256. package/browser/driver/Query.js.map +1 -1
  257. package/browser/driver/SqlInMemory.d.ts +1 -1
  258. package/browser/driver/SqlInMemory.js +6 -3
  259. package/browser/driver/SqlInMemory.js.map +1 -1
  260. package/browser/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.d.ts +0 -1
  261. package/browser/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.js +3 -3
  262. package/browser/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.js.map +1 -1
  263. package/{driver/aurora-mysql/AuroraMysqlConnectionOptions.d.ts → browser/driver/aurora-mysql/AuroraMysqlDataSourceOptions.d.ts} +4 -5
  264. package/{driver/cockroachdb/CockroachConnectionOptions.js → browser/driver/aurora-mysql/AuroraMysqlDataSourceOptions.js} +1 -2
  265. package/browser/driver/aurora-mysql/AuroraMysqlDataSourceOptions.js.map +1 -0
  266. package/browser/driver/aurora-mysql/AuroraMysqlDriver.d.ts +66 -28
  267. package/browser/driver/aurora-mysql/AuroraMysqlDriver.js +113 -97
  268. package/browser/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  269. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts +168 -32
  270. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js +404 -290
  271. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
  272. package/{driver/aurora-postgres/AuroraPostgresConnectionOptions.d.ts → browser/driver/aurora-postgres/AuroraPostgresDataSourceOptions.d.ts} +2 -2
  273. package/browser/driver/aurora-postgres/AuroraPostgresDataSourceOptions.js +3 -0
  274. package/browser/driver/aurora-postgres/AuroraPostgresDataSourceOptions.js.map +1 -0
  275. package/browser/driver/aurora-postgres/AuroraPostgresDriver.d.ts +15 -13
  276. package/browser/driver/aurora-postgres/AuroraPostgresDriver.js +30 -20
  277. package/browser/driver/aurora-postgres/AuroraPostgresDriver.js.map +1 -1
  278. package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.d.ts +11 -9
  279. package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.js +23 -14
  280. package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
  281. package/{driver/better-sqlite3/BetterSqlite3ConnectionOptions.d.ts → browser/driver/better-sqlite3/BetterSqlite3DataSourceOptions.d.ts} +5 -3
  282. package/{driver/aurora-mysql/AuroraMysqlConnectionOptions.js → browser/driver/better-sqlite3/BetterSqlite3DataSourceOptions.js} +1 -2
  283. package/browser/driver/better-sqlite3/BetterSqlite3DataSourceOptions.js.map +1 -0
  284. package/browser/driver/better-sqlite3/BetterSqlite3Driver.d.ts +13 -12
  285. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js +35 -27
  286. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  287. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.d.ts +4 -1
  288. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js +35 -24
  289. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  290. package/browser/driver/capacitor/{CapacitorConnectionOptions.d.ts → CapacitorDataSourceOptions.d.ts} +2 -2
  291. package/{driver/cordova/CordovaConnectionOptions.js → browser/driver/capacitor/CapacitorDataSourceOptions.js} +1 -2
  292. package/browser/driver/capacitor/CapacitorDataSourceOptions.js.map +1 -0
  293. package/browser/driver/capacitor/CapacitorDriver.d.ts +7 -6
  294. package/browser/driver/capacitor/CapacitorDriver.js +14 -10
  295. package/browser/driver/capacitor/CapacitorDriver.js.map +1 -1
  296. package/browser/driver/capacitor/CapacitorQueryRunner.d.ts +6 -2
  297. package/browser/driver/capacitor/CapacitorQueryRunner.js +23 -16
  298. package/browser/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
  299. package/browser/driver/cockroachdb/CockroachConnectionCredentialsOptions.d.ts +1 -1
  300. package/browser/driver/cockroachdb/CockroachConnectionCredentialsOptions.js +3 -3
  301. package/browser/driver/cockroachdb/CockroachConnectionCredentialsOptions.js.map +1 -1
  302. package/{driver/cockroachdb/CockroachConnectionOptions.d.ts → browser/driver/cockroachdb/CockroachDataSourceOptions.d.ts} +4 -4
  303. package/browser/driver/cockroachdb/CockroachDataSourceOptions.js +3 -0
  304. package/browser/driver/cockroachdb/CockroachDataSourceOptions.js.map +1 -0
  305. package/browser/driver/cockroachdb/CockroachDriver.d.ts +79 -27
  306. package/browser/driver/cockroachdb/CockroachDriver.js +168 -88
  307. package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
  308. package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +203 -31
  309. package/browser/driver/cockroachdb/CockroachQueryRunner.js +582 -368
  310. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  311. package/browser/driver/cordova/{CordovaConnectionOptions.d.ts → CordovaDataSourceOptions.d.ts} +2 -2
  312. package/{driver/mongodb/MongoConnectionOptions.js → browser/driver/cordova/CordovaDataSourceOptions.js} +1 -2
  313. package/browser/driver/cordova/CordovaDataSourceOptions.js.map +1 -0
  314. package/browser/driver/cordova/CordovaDriver.d.ts +7 -6
  315. package/browser/driver/cordova/CordovaDriver.js +14 -12
  316. package/browser/driver/cordova/CordovaDriver.js.map +1 -1
  317. package/browser/driver/cordova/CordovaQueryRunner.d.ts +7 -35
  318. package/browser/driver/cordova/CordovaQueryRunner.js +31 -55
  319. package/browser/driver/cordova/CordovaQueryRunner.js.map +1 -1
  320. package/browser/driver/expo/{ExpoConnectionOptions.d.ts → ExpoDataSourceOptions.d.ts} +2 -2
  321. package/{driver/sap/SapConnectionOptions.js → browser/driver/expo/ExpoDataSourceOptions.js} +1 -2
  322. package/browser/driver/expo/ExpoDataSourceOptions.js.map +1 -0
  323. package/browser/driver/expo/ExpoDriver.d.ts +6 -5
  324. package/browser/driver/expo/ExpoDriver.js +18 -8
  325. package/browser/driver/expo/ExpoDriver.js.map +1 -1
  326. package/browser/driver/expo/ExpoQueryRunner.d.ts +1 -1
  327. package/browser/driver/expo/ExpoQueryRunner.js +21 -18
  328. package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
  329. package/{driver/mongodb/MongoConnectionOptions.d.ts → browser/driver/mongodb/MongoDataSourceOptions.d.ts} +7 -69
  330. package/{driver/expo/ExpoConnectionOptions.js → browser/driver/mongodb/MongoDataSourceOptions.js} +1 -2
  331. package/browser/driver/mongodb/MongoDataSourceOptions.js.map +1 -0
  332. package/browser/driver/mongodb/MongoDriver.d.ts +51 -23
  333. package/browser/driver/mongodb/MongoDriver.js +70 -58
  334. package/browser/driver/mongodb/MongoDriver.js.map +1 -1
  335. package/browser/driver/mongodb/MongoQueryRunner.d.ts +239 -83
  336. package/browser/driver/mongodb/MongoQueryRunner.js +303 -133
  337. package/browser/driver/mongodb/MongoQueryRunner.js.map +1 -1
  338. package/browser/driver/mongodb/bson.typings.d.ts +604 -97
  339. package/browser/driver/mongodb/bson.typings.js +4 -3
  340. package/browser/driver/mongodb/bson.typings.js.map +1 -1
  341. package/browser/driver/mongodb/typings.d.ts +3577 -1025
  342. package/browser/driver/mongodb/typings.js +24 -24
  343. package/browser/driver/mongodb/typings.js.map +1 -1
  344. package/browser/driver/mysql/MysqlConnectionCredentialsOptions.d.ts +0 -1
  345. package/browser/driver/mysql/MysqlConnectionCredentialsOptions.js +3 -3
  346. package/browser/driver/mysql/MysqlConnectionCredentialsOptions.js.map +1 -1
  347. package/{driver/mysql/MysqlConnectionOptions.d.ts → browser/driver/mysql/MysqlDataSourceOptions.d.ts} +6 -13
  348. package/browser/driver/mysql/MysqlDataSourceOptions.js +3 -0
  349. package/browser/driver/mysql/MysqlDataSourceOptions.js.map +1 -0
  350. package/browser/driver/mysql/MysqlDriver.d.ts +69 -37
  351. package/browser/driver/mysql/MysqlDriver.js +141 -251
  352. package/browser/driver/mysql/MysqlDriver.js.map +1 -1
  353. package/browser/driver/mysql/MysqlQueryRunner.d.ts +167 -33
  354. package/browser/driver/mysql/MysqlQueryRunner.js +448 -325
  355. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  356. package/{driver/nativescript/NativescriptConnectionOptions.d.ts → browser/driver/nativescript/NativescriptDataSourceOptions.d.ts} +2 -2
  357. package/browser/driver/nativescript/NativescriptDataSourceOptions.js +3 -0
  358. package/browser/driver/nativescript/NativescriptDataSourceOptions.js.map +1 -0
  359. package/browser/driver/nativescript/NativescriptDriver.d.ts +9 -8
  360. package/browser/driver/nativescript/NativescriptDriver.js +16 -13
  361. package/browser/driver/nativescript/NativescriptDriver.js.map +1 -1
  362. package/browser/driver/nativescript/NativescriptQueryRunner.d.ts +7 -2
  363. package/browser/driver/nativescript/NativescriptQueryRunner.js +22 -14
  364. package/browser/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  365. package/browser/driver/oracle/OracleConnectionCredentialsOptions.js +3 -3
  366. package/browser/driver/oracle/OracleConnectionCredentialsOptions.js.map +1 -1
  367. package/{driver/oracle/OracleConnectionOptions.d.ts → browser/driver/oracle/OracleDataSourceOptions.d.ts} +3 -3
  368. package/{connection/BaseConnectionOptions.js → browser/driver/oracle/OracleDataSourceOptions.js} +1 -2
  369. package/browser/driver/oracle/OracleDataSourceOptions.js.map +1 -0
  370. package/browser/driver/oracle/OracleDriver.d.ts +65 -28
  371. package/browser/driver/oracle/OracleDriver.js +96 -55
  372. package/browser/driver/oracle/OracleDriver.js.map +1 -1
  373. package/browser/driver/oracle/OracleQueryRunner.d.ts +176 -29
  374. package/browser/driver/oracle/OracleQueryRunner.js +442 -267
  375. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  376. package/browser/driver/postgres/PostgresConnectionCredentialsOptions.d.ts +1 -1
  377. package/browser/driver/postgres/PostgresConnectionCredentialsOptions.js +3 -3
  378. package/browser/driver/postgres/PostgresConnectionCredentialsOptions.js.map +1 -1
  379. package/{driver/postgres/PostgresConnectionOptions.d.ts → browser/driver/postgres/PostgresDataSourceOptions.d.ts} +8 -5
  380. package/browser/driver/postgres/PostgresDataSourceOptions.js +3 -0
  381. package/browser/driver/postgres/PostgresDataSourceOptions.js.map +1 -0
  382. package/browser/driver/postgres/PostgresDriver.d.ts +85 -28
  383. package/browser/driver/postgres/PostgresDriver.js +244 -80
  384. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  385. package/browser/driver/postgres/PostgresQueryRunner.d.ts +225 -34
  386. package/browser/driver/postgres/PostgresQueryRunner.js +729 -447
  387. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  388. package/{driver/react-native/ReactNativeConnectionOptions.d.ts → browser/driver/react-native/ReactNativeDataSourceOptions.d.ts} +6 -2
  389. package/{driver/capacitor/CapacitorConnectionOptions.js → browser/driver/react-native/ReactNativeDataSourceOptions.js} +1 -2
  390. package/browser/driver/react-native/ReactNativeDataSourceOptions.js.map +1 -0
  391. package/browser/driver/react-native/ReactNativeDriver.d.ts +64 -24
  392. package/browser/driver/react-native/ReactNativeDriver.js +92 -50
  393. package/browser/driver/react-native/ReactNativeDriver.js.map +1 -1
  394. package/browser/driver/react-native/ReactNativeQueryRunner.d.ts +7 -2
  395. package/browser/driver/react-native/ReactNativeQueryRunner.js +26 -18
  396. package/browser/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  397. package/browser/driver/sap/SapConnectionCredentialsOptions.js +3 -3
  398. package/browser/driver/sap/SapConnectionCredentialsOptions.js.map +1 -1
  399. package/browser/driver/sap/{SapConnectionOptions.d.ts → SapDataSourceOptions.d.ts} +10 -37
  400. package/browser/driver/sap/SapDataSourceOptions.js +3 -0
  401. package/browser/driver/sap/SapDataSourceOptions.js.map +1 -0
  402. package/browser/driver/sap/SapDriver.d.ts +54 -17
  403. package/browser/driver/sap/SapDriver.js +97 -70
  404. package/browser/driver/sap/SapDriver.js.map +1 -1
  405. package/browser/driver/sap/SapQueryRunner.d.ts +179 -31
  406. package/browser/driver/sap/SapQueryRunner.js +488 -286
  407. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  408. package/browser/driver/spanner/SpannerConnectionCredentialsOptions.js +3 -3
  409. package/browser/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -1
  410. package/{driver/spanner/SpannerConnectionOptions.d.ts → browser/driver/spanner/SpannerDataSourceOptions.d.ts} +4 -4
  411. package/browser/driver/spanner/SpannerDataSourceOptions.js +3 -0
  412. package/browser/driver/spanner/SpannerDataSourceOptions.js.map +1 -0
  413. package/browser/driver/spanner/SpannerDriver.d.ts +61 -23
  414. package/browser/driver/spanner/SpannerDriver.js +82 -42
  415. package/browser/driver/spanner/SpannerDriver.js.map +1 -1
  416. package/browser/driver/spanner/SpannerQueryRunner.d.ts +170 -28
  417. package/browser/driver/spanner/SpannerQueryRunner.js +373 -201
  418. package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -1
  419. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.d.ts +74 -23
  420. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +162 -53
  421. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  422. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +164 -30
  423. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +357 -193
  424. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  425. package/{driver/sqljs/SqljsConnectionOptions.d.ts → browser/driver/sqljs/SqljsDataSourceOptions.d.ts} +2 -2
  426. package/browser/driver/sqljs/SqljsDataSourceOptions.js +3 -0
  427. package/browser/driver/sqljs/SqljsDataSourceOptions.js.map +1 -0
  428. package/browser/driver/sqljs/SqljsDriver.d.ts +15 -8
  429. package/browser/driver/sqljs/SqljsDriver.js +44 -34
  430. package/browser/driver/sqljs/SqljsDriver.js.map +1 -1
  431. package/browser/driver/sqljs/SqljsQueryRunner.d.ts +4 -1
  432. package/browser/driver/sqljs/SqljsQueryRunner.js +24 -18
  433. package/browser/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  434. package/browser/driver/sqlserver/MssqlParameter.d.ts +0 -1
  435. package/browser/driver/sqlserver/MssqlParameter.js +6 -4
  436. package/browser/driver/sqlserver/MssqlParameter.js.map +1 -1
  437. package/browser/driver/sqlserver/SqlServerConnectionCredentialsOptions.d.ts +8 -15
  438. package/browser/driver/sqlserver/SqlServerConnectionCredentialsOptions.js +3 -3
  439. package/browser/driver/sqlserver/SqlServerConnectionCredentialsOptions.js.map +1 -1
  440. package/browser/driver/sqlserver/{SqlServerConnectionOptions.d.ts → SqlServerDataSourceOptions.d.ts} +4 -4
  441. package/browser/driver/sqlserver/SqlServerDataSourceOptions.js +3 -0
  442. package/browser/driver/sqlserver/SqlServerDataSourceOptions.js.map +1 -0
  443. package/browser/driver/sqlserver/SqlServerDriver.d.ts +70 -28
  444. package/browser/driver/sqlserver/SqlServerDriver.js +115 -79
  445. package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
  446. package/browser/driver/sqlserver/SqlServerQueryRunner.d.ts +190 -30
  447. package/browser/driver/sqlserver/SqlServerQueryRunner.js +576 -350
  448. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  449. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js +3 -3
  450. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js.map +1 -1
  451. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryDefaultAuthentication.js +3 -3
  452. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryDefaultAuthentication.js.map +1 -1
  453. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js +3 -3
  454. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js.map +1 -1
  455. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js +3 -3
  456. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js.map +1 -1
  457. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js +3 -3
  458. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js.map +1 -1
  459. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.js +3 -3
  460. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.js.map +1 -1
  461. package/browser/driver/sqlserver/authentication/DefaultAuthentication.js +3 -3
  462. package/browser/driver/sqlserver/authentication/DefaultAuthentication.js.map +1 -1
  463. package/browser/driver/sqlserver/authentication/NtlmAuthentication.js +3 -3
  464. package/browser/driver/sqlserver/authentication/NtlmAuthentication.js.map +1 -1
  465. package/browser/driver/types/ColumnTypes.d.ts +1 -1
  466. package/browser/driver/types/ColumnTypes.js +3 -3
  467. package/browser/driver/types/ColumnTypes.js.map +1 -1
  468. package/browser/driver/types/CteCapabilities.js +3 -3
  469. package/browser/driver/types/CteCapabilities.js.map +1 -1
  470. package/browser/driver/types/DataTypeDefaults.d.ts +0 -1
  471. package/browser/driver/types/DataTypeDefaults.js +3 -3
  472. package/browser/driver/types/DataTypeDefaults.js.map +1 -1
  473. package/browser/driver/types/DatabaseType.d.ts +1 -1
  474. package/browser/driver/types/DatabaseType.js +3 -3
  475. package/browser/driver/types/DatabaseType.js.map +1 -1
  476. package/browser/driver/types/GeoJsonTypes.js +3 -3
  477. package/browser/driver/types/GeoJsonTypes.js.map +1 -1
  478. package/browser/driver/types/IsolationLevel.js +3 -3
  479. package/browser/driver/types/IsolationLevel.js.map +1 -1
  480. package/browser/driver/types/MappedColumnTypes.d.ts +1 -1
  481. package/browser/driver/types/MappedColumnTypes.js +3 -3
  482. package/browser/driver/types/MappedColumnTypes.js.map +1 -1
  483. package/browser/driver/types/MetadataTableType.js +6 -4
  484. package/browser/driver/types/MetadataTableType.js.map +1 -1
  485. package/browser/driver/types/ReplicationMode.js +3 -3
  486. package/browser/driver/types/ReplicationMode.js.map +1 -1
  487. package/browser/driver/types/ReturningType.d.ts +1 -0
  488. package/{find-options/JoinOptions.js → browser/driver/types/ReturningType.js} +1 -2
  489. package/browser/driver/types/ReturningType.js.map +1 -0
  490. package/browser/driver/types/UpsertType.js +3 -3
  491. package/browser/driver/types/UpsertType.js.map +1 -1
  492. package/browser/entity-manager/EntityManager.d.ts +111 -57
  493. package/browser/entity-manager/EntityManager.js +245 -203
  494. package/browser/entity-manager/EntityManager.js.map +1 -1
  495. package/browser/entity-manager/EntityManagerFactory.d.ts +6 -3
  496. package/browser/entity-manager/EntityManagerFactory.js +18 -12
  497. package/browser/entity-manager/EntityManagerFactory.js.map +1 -1
  498. package/browser/entity-manager/MongoEntityManager.d.ts +156 -30
  499. package/browser/entity-manager/MongoEntityManager.js +289 -112
  500. package/browser/entity-manager/MongoEntityManager.js.map +1 -1
  501. package/browser/entity-manager/SqljsEntityManager.d.ts +5 -3
  502. package/browser/entity-manager/SqljsEntityManager.js +12 -7
  503. package/browser/entity-manager/SqljsEntityManager.js.map +1 -1
  504. package/browser/entity-schema/EntitySchema.d.ts +1 -1
  505. package/browser/entity-schema/EntitySchema.js +6 -3
  506. package/browser/entity-schema/EntitySchema.js.map +1 -1
  507. package/browser/entity-schema/EntitySchemaCheckOptions.js +3 -3
  508. package/browser/entity-schema/EntitySchemaCheckOptions.js.map +1 -1
  509. package/browser/entity-schema/EntitySchemaColumnForeignKeyOptions.d.ts +2 -2
  510. package/browser/entity-schema/EntitySchemaColumnForeignKeyOptions.js +3 -3
  511. package/browser/entity-schema/EntitySchemaColumnForeignKeyOptions.js.map +1 -1
  512. package/browser/entity-schema/EntitySchemaColumnOptions.d.ts +6 -26
  513. package/browser/entity-schema/EntitySchemaColumnOptions.js +3 -3
  514. package/browser/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
  515. package/browser/entity-schema/EntitySchemaEmbeddedColumnOptions.d.ts +1 -1
  516. package/browser/entity-schema/EntitySchemaEmbeddedColumnOptions.js +6 -3
  517. package/browser/entity-schema/EntitySchemaEmbeddedColumnOptions.js.map +1 -1
  518. package/browser/entity-schema/EntitySchemaEmbeddedError.js +7 -4
  519. package/browser/entity-schema/EntitySchemaEmbeddedError.js.map +1 -1
  520. package/browser/entity-schema/EntitySchemaExclusionOptions.d.ts +5 -0
  521. package/browser/entity-schema/EntitySchemaExclusionOptions.js +3 -3
  522. package/browser/entity-schema/EntitySchemaExclusionOptions.js.map +1 -1
  523. package/browser/entity-schema/EntitySchemaForeignKeyOptions.d.ts +2 -2
  524. package/browser/entity-schema/EntitySchemaForeignKeyOptions.js +3 -3
  525. package/browser/entity-schema/EntitySchemaForeignKeyOptions.js.map +1 -1
  526. package/browser/entity-schema/EntitySchemaIndexOptions.js +3 -3
  527. package/browser/entity-schema/EntitySchemaIndexOptions.js.map +1 -1
  528. package/browser/entity-schema/EntitySchemaInheritanceOptions.d.ts +1 -1
  529. package/browser/entity-schema/EntitySchemaInheritanceOptions.js +3 -3
  530. package/browser/entity-schema/EntitySchemaInheritanceOptions.js.map +1 -1
  531. package/browser/entity-schema/EntitySchemaOptions.d.ts +16 -14
  532. package/browser/entity-schema/EntitySchemaOptions.js +6 -3
  533. package/browser/entity-schema/EntitySchemaOptions.js.map +1 -1
  534. package/browser/entity-schema/EntitySchemaRelationIdOptions.d.ts +1 -1
  535. package/browser/entity-schema/EntitySchemaRelationIdOptions.js +3 -3
  536. package/browser/entity-schema/EntitySchemaRelationIdOptions.js.map +1 -1
  537. package/browser/entity-schema/EntitySchemaRelationOptions.d.ts +8 -8
  538. package/browser/entity-schema/EntitySchemaRelationOptions.js +3 -3
  539. package/browser/entity-schema/EntitySchemaRelationOptions.js.map +1 -1
  540. package/browser/entity-schema/EntitySchemaTransformer.d.ts +2 -1
  541. package/browser/entity-schema/EntitySchemaTransformer.js +12 -10
  542. package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
  543. package/browser/entity-schema/EntitySchemaUniqueOptions.d.ts +1 -1
  544. package/browser/entity-schema/EntitySchemaUniqueOptions.js +3 -3
  545. package/browser/entity-schema/EntitySchemaUniqueOptions.js.map +1 -1
  546. package/browser/error/AlreadyHasActiveConnectionError.js +7 -4
  547. package/browser/error/AlreadyHasActiveConnectionError.js.map +1 -1
  548. package/browser/error/CannotAttachTreeChildrenEntityError.js +7 -4
  549. package/browser/error/CannotAttachTreeChildrenEntityError.js.map +1 -1
  550. package/browser/error/CannotConnectAlreadyConnectedError.d.ts +1 -1
  551. package/browser/error/CannotConnectAlreadyConnectedError.js +9 -6
  552. package/browser/error/CannotConnectAlreadyConnectedError.js.map +1 -1
  553. package/browser/error/CannotCreateEntityIdMapError.d.ts +1 -1
  554. package/browser/error/CannotCreateEntityIdMapError.js +7 -4
  555. package/browser/error/CannotCreateEntityIdMapError.js.map +1 -1
  556. package/browser/error/CannotDetermineEntityError.js +7 -4
  557. package/browser/error/CannotDetermineEntityError.js.map +1 -1
  558. package/browser/error/CannotExecuteNotConnectedError.d.ts +1 -1
  559. package/browser/error/CannotExecuteNotConnectedError.js +9 -6
  560. package/browser/error/CannotExecuteNotConnectedError.js.map +1 -1
  561. package/browser/error/CannotGetEntityManagerNotConnectedError.js +7 -4
  562. package/browser/error/CannotGetEntityManagerNotConnectedError.js.map +1 -1
  563. package/browser/error/CannotReflectMethodParameterTypeError.js +7 -4
  564. package/browser/error/CannotReflectMethodParameterTypeError.js.map +1 -1
  565. package/browser/error/CircularRelationsError.js +7 -4
  566. package/browser/error/CircularRelationsError.js.map +1 -1
  567. package/browser/error/ColumnTypeUndefinedError.js +7 -4
  568. package/browser/error/ColumnTypeUndefinedError.js.map +1 -1
  569. package/browser/error/ConnectionIsNotSetError.js +7 -4
  570. package/browser/error/ConnectionIsNotSetError.js.map +1 -1
  571. package/browser/error/ConnectionNotFoundError.js +7 -4
  572. package/browser/error/ConnectionNotFoundError.js.map +1 -1
  573. package/browser/error/DataTypeNotSupportedError.d.ts +3 -3
  574. package/browser/error/DataTypeNotSupportedError.js +7 -4
  575. package/browser/error/DataTypeNotSupportedError.js.map +1 -1
  576. package/browser/error/DriverOptionNotSetError.js +7 -4
  577. package/browser/error/DriverOptionNotSetError.js.map +1 -1
  578. package/browser/error/DriverPackageNotInstalledError.js +7 -4
  579. package/browser/error/DriverPackageNotInstalledError.js.map +1 -1
  580. package/browser/error/EntityMetadataNotFoundError.d.ts +1 -1
  581. package/browser/error/EntityMetadataNotFoundError.js +11 -8
  582. package/browser/error/EntityMetadataNotFoundError.js.map +1 -1
  583. package/browser/error/EntityNotFoundError.d.ts +1 -1
  584. package/browser/error/EntityNotFoundError.js +11 -8
  585. package/browser/error/EntityNotFoundError.js.map +1 -1
  586. package/browser/error/EntityPropertyNotFoundError.d.ts +1 -1
  587. package/browser/error/EntityPropertyNotFoundError.js +7 -4
  588. package/browser/error/EntityPropertyNotFoundError.js.map +1 -1
  589. package/browser/error/FindRelationsNotFoundError.js +7 -4
  590. package/browser/error/FindRelationsNotFoundError.js.map +1 -1
  591. package/browser/error/ForbiddenTransactionModeOverrideError.d.ts +1 -1
  592. package/browser/error/ForbiddenTransactionModeOverrideError.js +7 -4
  593. package/browser/error/ForbiddenTransactionModeOverrideError.js.map +1 -1
  594. package/browser/error/InitializedRelationError.d.ts +1 -2
  595. package/browser/error/InitializedRelationError.js +7 -5
  596. package/browser/error/InitializedRelationError.js.map +1 -1
  597. package/browser/error/InsertValuesMissingError.js +7 -4
  598. package/browser/error/InsertValuesMissingError.js.map +1 -1
  599. package/browser/error/LimitOnUpdateNotSupportedError.js +7 -4
  600. package/browser/error/LimitOnUpdateNotSupportedError.js.map +1 -1
  601. package/browser/error/LockNotSupportedOnGivenDriverError.js +7 -4
  602. package/browser/error/LockNotSupportedOnGivenDriverError.js.map +1 -1
  603. package/browser/error/MetadataAlreadyExistsError.js +7 -4
  604. package/browser/error/MetadataAlreadyExistsError.js.map +1 -1
  605. package/browser/error/MetadataWithSuchNameAlreadyExistsError.js +7 -4
  606. package/browser/error/MetadataWithSuchNameAlreadyExistsError.js.map +1 -1
  607. package/browser/error/MissingDeleteDateColumnError.d.ts +1 -1
  608. package/browser/error/MissingDeleteDateColumnError.js +7 -4
  609. package/browser/error/MissingDeleteDateColumnError.js.map +1 -1
  610. package/browser/error/MissingDriverError.js +7 -4
  611. package/browser/error/MissingDriverError.js.map +1 -1
  612. package/browser/error/MissingJoinColumnError.d.ts +2 -2
  613. package/browser/error/MissingJoinColumnError.js +7 -4
  614. package/browser/error/MissingJoinColumnError.js.map +1 -1
  615. package/browser/error/MissingJoinTableError.d.ts +2 -2
  616. package/browser/error/MissingJoinTableError.js +7 -4
  617. package/browser/error/MissingJoinTableError.js.map +1 -1
  618. package/browser/error/MissingPrimaryColumnError.d.ts +1 -1
  619. package/browser/error/MissingPrimaryColumnError.js +7 -4
  620. package/browser/error/MissingPrimaryColumnError.js.map +1 -1
  621. package/browser/error/MustBeEntityError.js +7 -4
  622. package/browser/error/MustBeEntityError.js.map +1 -1
  623. package/browser/error/NestedSetMultipleRootError.js +7 -4
  624. package/browser/error/NestedSetMultipleRootError.js.map +1 -1
  625. package/browser/error/NoConnectionForRepositoryError.d.ts +1 -1
  626. package/browser/error/NoConnectionForRepositoryError.js +10 -7
  627. package/browser/error/NoConnectionForRepositoryError.js.map +1 -1
  628. package/browser/error/NoConnectionOptionError.js +7 -4
  629. package/browser/error/NoConnectionOptionError.js.map +1 -1
  630. package/browser/error/NoNeedToReleaseEntityManagerError.js +7 -4
  631. package/browser/error/NoNeedToReleaseEntityManagerError.js.map +1 -1
  632. package/browser/error/NoVersionOrUpdateDateColumnError.js +7 -4
  633. package/browser/error/NoVersionOrUpdateDateColumnError.js.map +1 -1
  634. package/browser/error/OffsetWithoutLimitNotSupportedError.js +7 -4
  635. package/browser/error/OffsetWithoutLimitNotSupportedError.js.map +1 -1
  636. package/browser/error/OptimisticLockCanNotBeUsedError.js +7 -4
  637. package/browser/error/OptimisticLockCanNotBeUsedError.js.map +1 -1
  638. package/browser/error/OptimisticLockVersionMismatchError.js +7 -4
  639. package/browser/error/OptimisticLockVersionMismatchError.js.map +1 -1
  640. package/browser/error/PersistedEntityNotFoundError.js +7 -4
  641. package/browser/error/PersistedEntityNotFoundError.js.map +1 -1
  642. package/browser/error/PessimisticLockTransactionRequiredError.js +7 -4
  643. package/browser/error/PessimisticLockTransactionRequiredError.js.map +1 -1
  644. package/browser/error/PrimaryColumnCannotBeNullableError.js +7 -4
  645. package/browser/error/PrimaryColumnCannotBeNullableError.js.map +1 -1
  646. package/browser/error/QueryFailedError.js +9 -6
  647. package/browser/error/QueryFailedError.js.map +1 -1
  648. package/browser/error/QueryRunnerAlreadyReleasedError.js +7 -4
  649. package/browser/error/QueryRunnerAlreadyReleasedError.js.map +1 -1
  650. package/browser/error/QueryRunnerProviderAlreadyReleasedError.js +7 -4
  651. package/browser/error/QueryRunnerProviderAlreadyReleasedError.js.map +1 -1
  652. package/browser/error/RepositoryNotTreeError.d.ts +1 -1
  653. package/browser/error/RepositoryNotTreeError.js +11 -8
  654. package/browser/error/RepositoryNotTreeError.js.map +1 -1
  655. package/browser/error/ReturningStatementNotSupportedError.js +7 -4
  656. package/browser/error/ReturningStatementNotSupportedError.js.map +1 -1
  657. package/browser/error/SubjectRemovedAndUpdatedError.d.ts +1 -1
  658. package/browser/error/SubjectRemovedAndUpdatedError.js +7 -4
  659. package/browser/error/SubjectRemovedAndUpdatedError.js.map +1 -1
  660. package/browser/error/SubjectWithoutIdentifierError.d.ts +1 -1
  661. package/browser/error/SubjectWithoutIdentifierError.js +7 -4
  662. package/browser/error/SubjectWithoutIdentifierError.js.map +1 -1
  663. package/browser/error/TransactionAlreadyStartedError.js +7 -4
  664. package/browser/error/TransactionAlreadyStartedError.js.map +1 -1
  665. package/browser/error/TransactionNotStartedError.js +7 -4
  666. package/browser/error/TransactionNotStartedError.js.map +1 -1
  667. package/browser/error/TreeRepositoryNotSupportedError.d.ts +1 -1
  668. package/browser/error/TreeRepositoryNotSupportedError.js +7 -4
  669. package/browser/error/TreeRepositoryNotSupportedError.js.map +1 -1
  670. package/browser/error/TypeORMError.js +6 -3
  671. package/browser/error/TypeORMError.js.map +1 -1
  672. package/browser/error/UpdateValuesMissingError.js +7 -4
  673. package/browser/error/UpdateValuesMissingError.js.map +1 -1
  674. package/browser/error/UsingJoinColumnIsNotAllowedError.d.ts +2 -2
  675. package/browser/error/UsingJoinColumnIsNotAllowedError.js +7 -4
  676. package/browser/error/UsingJoinColumnIsNotAllowedError.js.map +1 -1
  677. package/browser/error/UsingJoinColumnOnlyOnOneSideAllowedError.d.ts +2 -2
  678. package/browser/error/UsingJoinColumnOnlyOnOneSideAllowedError.js +7 -4
  679. package/browser/error/UsingJoinColumnOnlyOnOneSideAllowedError.js.map +1 -1
  680. package/browser/error/UsingJoinTableIsNotAllowedError.d.ts +2 -2
  681. package/browser/error/UsingJoinTableIsNotAllowedError.js +7 -4
  682. package/browser/error/UsingJoinTableIsNotAllowedError.js.map +1 -1
  683. package/browser/error/UsingJoinTableOnlyOnOneSideAllowedError.d.ts +2 -2
  684. package/browser/error/UsingJoinTableOnlyOnOneSideAllowedError.js +7 -4
  685. package/browser/error/UsingJoinTableOnlyOnOneSideAllowedError.js.map +1 -1
  686. package/browser/error/index.d.ts +0 -3
  687. package/browser/error/index.js +62 -63
  688. package/browser/error/index.js.map +1 -1
  689. package/browser/find-options/EqualOperator.js +7 -4
  690. package/browser/find-options/EqualOperator.js.map +1 -1
  691. package/browser/find-options/FindManyOptions.d.ts +1 -1
  692. package/browser/find-options/FindManyOptions.js +3 -3
  693. package/browser/find-options/FindManyOptions.js.map +1 -1
  694. package/browser/find-options/FindOneOptions.d.ts +7 -14
  695. package/browser/find-options/FindOneOptions.js +3 -3
  696. package/browser/find-options/FindOneOptions.js.map +1 -1
  697. package/browser/find-options/FindOperator.d.ts +3 -3
  698. package/browser/find-options/FindOperator.js +16 -13
  699. package/browser/find-options/FindOperator.js.map +1 -1
  700. package/browser/find-options/FindOperatorType.js +3 -3
  701. package/browser/find-options/FindOperatorType.js.map +1 -1
  702. package/browser/find-options/FindOptionsOrder.d.ts +2 -2
  703. package/browser/find-options/FindOptionsOrder.js +3 -3
  704. package/browser/find-options/FindOptionsOrder.js.map +1 -1
  705. package/browser/find-options/FindOptionsRelations.d.ts +2 -9
  706. package/browser/find-options/FindOptionsRelations.js +3 -3
  707. package/browser/find-options/FindOptionsRelations.js.map +1 -1
  708. package/browser/find-options/FindOptionsSelect.d.ts +2 -9
  709. package/browser/find-options/FindOptionsSelect.js +3 -3
  710. package/browser/find-options/FindOptionsSelect.js.map +1 -1
  711. package/browser/find-options/FindOptionsUtils.d.ts +46 -11
  712. package/browser/find-options/FindOptionsUtils.js +114 -28
  713. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  714. package/browser/find-options/FindOptionsWhere.d.ts +4 -4
  715. package/browser/find-options/FindOptionsWhere.js +3 -3
  716. package/browser/find-options/FindOptionsWhere.js.map +1 -1
  717. package/browser/find-options/FindTreeOptions.js +3 -3
  718. package/browser/find-options/FindTreeOptions.js.map +1 -1
  719. package/browser/find-options/OrderByCondition.d.ts +0 -2
  720. package/browser/find-options/OrderByCondition.js +3 -3
  721. package/browser/find-options/OrderByCondition.js.map +1 -1
  722. package/browser/find-options/mongodb/MongoFindManyOptions.d.ts +1 -1
  723. package/browser/find-options/mongodb/MongoFindManyOptions.js +3 -3
  724. package/browser/find-options/mongodb/MongoFindManyOptions.js.map +1 -1
  725. package/browser/find-options/mongodb/MongoFindOneOptions.d.ts +2 -2
  726. package/browser/find-options/mongodb/MongoFindOneOptions.js +3 -3
  727. package/browser/find-options/mongodb/MongoFindOneOptions.js.map +1 -1
  728. package/browser/find-options/operator/And.d.ts +4 -0
  729. package/browser/find-options/operator/And.js +11 -5
  730. package/browser/find-options/operator/And.js.map +1 -1
  731. package/browser/find-options/operator/Any.d.ts +1 -0
  732. package/browser/find-options/operator/Any.js +8 -5
  733. package/browser/find-options/operator/Any.js.map +1 -1
  734. package/browser/find-options/operator/ArrayContainedBy.d.ts +1 -0
  735. package/browser/find-options/operator/ArrayContainedBy.js +8 -5
  736. package/browser/find-options/operator/ArrayContainedBy.js.map +1 -1
  737. package/browser/find-options/operator/ArrayContains.d.ts +1 -0
  738. package/browser/find-options/operator/ArrayContains.js +8 -5
  739. package/browser/find-options/operator/ArrayContains.js.map +1 -1
  740. package/browser/find-options/operator/ArrayOverlap.d.ts +1 -0
  741. package/browser/find-options/operator/ArrayOverlap.js +8 -5
  742. package/browser/find-options/operator/ArrayOverlap.js.map +1 -1
  743. package/browser/find-options/operator/Between.d.ts +2 -0
  744. package/browser/find-options/operator/Between.js +9 -5
  745. package/browser/find-options/operator/Between.js.map +1 -1
  746. package/browser/find-options/operator/Equal.d.ts +2 -1
  747. package/browser/find-options/operator/Equal.js +8 -5
  748. package/browser/find-options/operator/Equal.js.map +1 -1
  749. package/browser/find-options/operator/ILike.d.ts +1 -0
  750. package/browser/find-options/operator/ILike.js +8 -5
  751. package/browser/find-options/operator/ILike.js.map +1 -1
  752. package/browser/find-options/operator/In.d.ts +1 -0
  753. package/browser/find-options/operator/In.js +8 -5
  754. package/browser/find-options/operator/In.js.map +1 -1
  755. package/browser/find-options/operator/IsNull.js +7 -5
  756. package/browser/find-options/operator/IsNull.js.map +1 -1
  757. package/browser/find-options/operator/JsonContains.d.ts +1 -0
  758. package/browser/find-options/operator/JsonContains.js +8 -5
  759. package/browser/find-options/operator/JsonContains.js.map +1 -1
  760. package/browser/find-options/operator/LessThan.d.ts +1 -0
  761. package/browser/find-options/operator/LessThan.js +8 -5
  762. package/browser/find-options/operator/LessThan.js.map +1 -1
  763. package/browser/find-options/operator/LessThanOrEqual.d.ts +1 -0
  764. package/browser/find-options/operator/LessThanOrEqual.js +8 -5
  765. package/browser/find-options/operator/LessThanOrEqual.js.map +1 -1
  766. package/browser/find-options/operator/Like.d.ts +1 -0
  767. package/browser/find-options/operator/Like.js +8 -5
  768. package/browser/find-options/operator/Like.js.map +1 -1
  769. package/browser/find-options/operator/MoreThan.d.ts +1 -0
  770. package/browser/find-options/operator/MoreThan.js +8 -5
  771. package/browser/find-options/operator/MoreThan.js.map +1 -1
  772. package/browser/find-options/operator/MoreThanOrEqual.d.ts +1 -0
  773. package/browser/find-options/operator/MoreThanOrEqual.js +8 -5
  774. package/browser/find-options/operator/MoreThanOrEqual.js.map +1 -1
  775. package/browser/find-options/operator/Not.d.ts +1 -0
  776. package/browser/find-options/operator/Not.js +8 -5
  777. package/browser/find-options/operator/Not.js.map +1 -1
  778. package/browser/find-options/operator/Or.d.ts +4 -0
  779. package/browser/find-options/operator/Or.js +11 -5
  780. package/browser/find-options/operator/Or.js.map +1 -1
  781. package/browser/find-options/operator/Raw.d.ts +5 -1
  782. package/browser/find-options/operator/Raw.js +8 -6
  783. package/browser/find-options/operator/Raw.js.map +1 -1
  784. package/browser/globals.d.ts +2 -114
  785. package/browser/globals.js +17 -163
  786. package/browser/globals.js.map +1 -1
  787. package/browser/index.d.ts +62 -69
  788. package/browser/index.js +141 -161
  789. package/browser/index.js.map +1 -1
  790. package/browser/logger/AbstractLogger.d.ts +26 -3
  791. package/browser/logger/AbstractLogger.js +32 -6
  792. package/browser/logger/AbstractLogger.js.map +1 -1
  793. package/browser/logger/AdvancedConsoleLogger.d.ts +5 -2
  794. package/browser/logger/AdvancedConsoleLogger.js +18 -12
  795. package/browser/logger/AdvancedConsoleLogger.js.map +1 -1
  796. package/browser/logger/DebugLogger.d.ts +6 -2
  797. package/browser/logger/DebugLogger.js +21 -14
  798. package/browser/logger/DebugLogger.js.map +1 -1
  799. package/browser/logger/FileLogger.d.ts +7 -3
  800. package/browser/logger/FileLogger.js +17 -9
  801. package/browser/logger/FileLogger.js.map +1 -1
  802. package/browser/logger/FormattedConsoleLogger.d.ts +5 -2
  803. package/browser/logger/FormattedConsoleLogger.js +18 -12
  804. package/browser/logger/FormattedConsoleLogger.js.map +1 -1
  805. package/browser/logger/Logger.d.ts +1 -1
  806. package/browser/logger/Logger.js +3 -3
  807. package/browser/logger/Logger.js.map +1 -1
  808. package/browser/logger/LoggerFactory.d.ts +4 -2
  809. package/browser/logger/LoggerFactory.js +21 -16
  810. package/browser/logger/LoggerFactory.js.map +1 -1
  811. package/browser/logger/LoggerOptions.d.ts +1 -1
  812. package/browser/logger/LoggerOptions.js +3 -3
  813. package/browser/logger/LoggerOptions.js.map +1 -1
  814. package/browser/logger/SimpleConsoleLogger.d.ts +5 -2
  815. package/browser/logger/SimpleConsoleLogger.js +10 -4
  816. package/browser/logger/SimpleConsoleLogger.js.map +1 -1
  817. package/browser/metadata/CheckMetadata.d.ts +4 -3
  818. package/browser/metadata/CheckMetadata.js +7 -3
  819. package/browser/metadata/CheckMetadata.js.map +1 -1
  820. package/browser/metadata/ColumnMetadata.d.ts +24 -23
  821. package/browser/metadata/ColumnMetadata.js +85 -74
  822. package/browser/metadata/ColumnMetadata.js.map +1 -1
  823. package/browser/metadata/EmbeddedMetadata.d.ts +14 -22
  824. package/browser/metadata/EmbeddedMetadata.js +11 -18
  825. package/browser/metadata/EmbeddedMetadata.js.map +1 -1
  826. package/browser/metadata/EntityListenerMetadata.d.ts +9 -5
  827. package/browser/metadata/EntityListenerMetadata.js +10 -3
  828. package/browser/metadata/EntityListenerMetadata.js.map +1 -1
  829. package/browser/metadata/EntityMetadata.d.ts +60 -35
  830. package/browser/metadata/EntityMetadata.js +71 -57
  831. package/browser/metadata/EntityMetadata.js.map +1 -1
  832. package/browser/metadata/ExclusionMetadata.d.ts +9 -3
  833. package/browser/metadata/ExclusionMetadata.js +8 -3
  834. package/browser/metadata/ExclusionMetadata.js.map +1 -1
  835. package/browser/metadata/ForeignKeyMetadata.d.ts +7 -6
  836. package/browser/metadata/ForeignKeyMetadata.js +7 -3
  837. package/browser/metadata/ForeignKeyMetadata.js.map +1 -1
  838. package/browser/metadata/IndexMetadata.d.ts +13 -5
  839. package/browser/metadata/IndexMetadata.js +27 -10
  840. package/browser/metadata/IndexMetadata.js.map +1 -1
  841. package/browser/metadata/RelationIdMetadata.d.ts +6 -5
  842. package/browser/metadata/RelationIdMetadata.js +9 -5
  843. package/browser/metadata/RelationIdMetadata.js.map +1 -1
  844. package/browser/metadata/RelationMetadata.d.ts +27 -16
  845. package/browser/metadata/RelationMetadata.js +29 -15
  846. package/browser/metadata/RelationMetadata.js.map +1 -1
  847. package/browser/metadata/UniqueMetadata.d.ts +7 -6
  848. package/browser/metadata/UniqueMetadata.js +19 -9
  849. package/browser/metadata/UniqueMetadata.js.map +1 -1
  850. package/browser/metadata/types/ClosureTreeOptions.d.ts +1 -1
  851. package/browser/metadata/types/ClosureTreeOptions.js +3 -3
  852. package/browser/metadata/types/ClosureTreeOptions.js.map +1 -1
  853. package/browser/metadata/types/DeferrableType.js +3 -3
  854. package/browser/metadata/types/DeferrableType.js.map +1 -1
  855. package/browser/metadata/types/EventListenerTypes.js +17 -14
  856. package/browser/metadata/types/EventListenerTypes.js.map +1 -1
  857. package/browser/metadata/types/OnDeleteType.js +3 -3
  858. package/browser/metadata/types/OnDeleteType.js.map +1 -1
  859. package/browser/metadata/types/OnUpdateType.js +3 -3
  860. package/browser/metadata/types/OnUpdateType.js.map +1 -1
  861. package/browser/metadata/types/PropertyTypeInFunction.js +3 -3
  862. package/browser/metadata/types/PropertyTypeInFunction.js.map +1 -1
  863. package/browser/metadata/types/RelationTypeInFunction.d.ts +1 -1
  864. package/browser/metadata/types/RelationTypeInFunction.js +3 -3
  865. package/browser/metadata/types/RelationTypeInFunction.js.map +1 -1
  866. package/browser/metadata/types/RelationTypes.js +3 -3
  867. package/browser/metadata/types/RelationTypes.js.map +1 -1
  868. package/browser/metadata/types/TableTypes.js +3 -3
  869. package/browser/metadata/types/TableTypes.js.map +1 -1
  870. package/browser/metadata/types/TreeTypes.js +3 -3
  871. package/browser/metadata/types/TreeTypes.js.map +1 -1
  872. package/browser/metadata-args/CheckMetadataArgs.js +3 -3
  873. package/browser/metadata-args/CheckMetadataArgs.js.map +1 -1
  874. package/browser/metadata-args/ColumnMetadataArgs.d.ts +2 -2
  875. package/browser/metadata-args/ColumnMetadataArgs.js +3 -3
  876. package/browser/metadata-args/ColumnMetadataArgs.js.map +1 -1
  877. package/browser/metadata-args/DiscriminatorValueMetadataArgs.js +3 -3
  878. package/browser/metadata-args/DiscriminatorValueMetadataArgs.js.map +1 -1
  879. package/browser/metadata-args/EmbeddedMetadataArgs.js +3 -3
  880. package/browser/metadata-args/EmbeddedMetadataArgs.js.map +1 -1
  881. package/browser/metadata-args/EntityListenerMetadataArgs.d.ts +1 -1
  882. package/browser/metadata-args/EntityListenerMetadataArgs.js +3 -3
  883. package/browser/metadata-args/EntityListenerMetadataArgs.js.map +1 -1
  884. package/browser/metadata-args/EntitySubscriberMetadataArgs.js +3 -3
  885. package/browser/metadata-args/EntitySubscriberMetadataArgs.js.map +1 -1
  886. package/browser/metadata-args/ExclusionMetadataArgs.d.ts +5 -0
  887. package/browser/metadata-args/ExclusionMetadataArgs.js +3 -3
  888. package/browser/metadata-args/ExclusionMetadataArgs.js.map +1 -1
  889. package/browser/metadata-args/ForeignKeyMetadataArgs.d.ts +5 -5
  890. package/browser/metadata-args/ForeignKeyMetadataArgs.js +3 -3
  891. package/browser/metadata-args/ForeignKeyMetadataArgs.js.map +1 -1
  892. package/browser/metadata-args/GeneratedMetadataArgs.js +3 -3
  893. package/browser/metadata-args/GeneratedMetadataArgs.js.map +1 -1
  894. package/browser/metadata-args/IndexMetadataArgs.d.ts +7 -0
  895. package/browser/metadata-args/IndexMetadataArgs.js +3 -3
  896. package/browser/metadata-args/IndexMetadataArgs.js.map +1 -1
  897. package/browser/metadata-args/InheritanceMetadataArgs.d.ts +1 -1
  898. package/browser/metadata-args/InheritanceMetadataArgs.js +3 -3
  899. package/browser/metadata-args/InheritanceMetadataArgs.js.map +1 -1
  900. package/browser/metadata-args/JoinColumnMetadataArgs.js +3 -3
  901. package/browser/metadata-args/JoinColumnMetadataArgs.js.map +1 -1
  902. package/browser/metadata-args/JoinTableMetadataArgs.d.ts +1 -1
  903. package/browser/metadata-args/JoinTableMetadataArgs.js +3 -3
  904. package/browser/metadata-args/JoinTableMetadataArgs.js.map +1 -1
  905. package/browser/metadata-args/MetadataArgsStorage.d.ts +29 -27
  906. package/browser/metadata-args/MetadataArgsStorage.js +16 -10
  907. package/browser/metadata-args/MetadataArgsStorage.js.map +1 -1
  908. package/browser/metadata-args/NamingStrategyMetadataArgs.js +3 -3
  909. package/browser/metadata-args/NamingStrategyMetadataArgs.js.map +1 -1
  910. package/browser/metadata-args/RelationIdMetadataArgs.d.ts +1 -1
  911. package/browser/metadata-args/RelationIdMetadataArgs.js +3 -3
  912. package/browser/metadata-args/RelationIdMetadataArgs.js.map +1 -1
  913. package/browser/metadata-args/RelationMetadataArgs.d.ts +4 -4
  914. package/browser/metadata-args/RelationMetadataArgs.js +3 -3
  915. package/browser/metadata-args/RelationMetadataArgs.js.map +1 -1
  916. package/browser/metadata-args/TableMetadataArgs.d.ts +5 -4
  917. package/browser/metadata-args/TableMetadataArgs.js +3 -3
  918. package/browser/metadata-args/TableMetadataArgs.js.map +1 -1
  919. package/browser/metadata-args/TransactionEntityMetadataArgs.d.ts +1 -1
  920. package/browser/metadata-args/TransactionEntityMetadataArgs.js +3 -3
  921. package/browser/metadata-args/TransactionEntityMetadataArgs.js.map +1 -1
  922. package/browser/metadata-args/TransactionRepositoryMetadataArgs.d.ts +1 -1
  923. package/browser/metadata-args/TransactionRepositoryMetadataArgs.js +3 -3
  924. package/browser/metadata-args/TransactionRepositoryMetadataArgs.js.map +1 -1
  925. package/browser/metadata-args/TreeMetadataArgs.d.ts +2 -2
  926. package/browser/metadata-args/TreeMetadataArgs.js +3 -3
  927. package/browser/metadata-args/TreeMetadataArgs.js.map +1 -1
  928. package/browser/metadata-args/UniqueMetadataArgs.d.ts +1 -1
  929. package/browser/metadata-args/UniqueMetadataArgs.js +3 -3
  930. package/browser/metadata-args/UniqueMetadataArgs.js.map +1 -1
  931. package/browser/metadata-args/types/ColumnMode.js +3 -3
  932. package/browser/metadata-args/types/ColumnMode.js.map +1 -1
  933. package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.d.ts +4 -3
  934. package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js +27 -28
  935. package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
  936. package/browser/metadata-builder/EntityMetadataBuilder.d.ts +16 -6
  937. package/browser/metadata-builder/EntityMetadataBuilder.js +119 -126
  938. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  939. package/browser/metadata-builder/EntityMetadataValidator.d.ts +9 -2
  940. package/browser/metadata-builder/EntityMetadataValidator.js +42 -37
  941. package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
  942. package/browser/metadata-builder/JunctionEntityMetadataBuilder.d.ts +11 -5
  943. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +53 -52
  944. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  945. package/browser/metadata-builder/MetadataUtils.d.ts +5 -0
  946. package/browser/metadata-builder/MetadataUtils.js +11 -3
  947. package/browser/metadata-builder/MetadataUtils.js.map +1 -1
  948. package/browser/metadata-builder/RelationJoinColumnBuilder.d.ts +24 -12
  949. package/browser/metadata-builder/RelationJoinColumnBuilder.js +46 -34
  950. package/browser/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  951. package/browser/migration/Migration.d.ts +1 -1
  952. package/browser/migration/Migration.js +6 -3
  953. package/browser/migration/Migration.js.map +1 -1
  954. package/browser/migration/MigrationExecutor.d.ts +16 -9
  955. package/browser/migration/MigrationExecutor.js +95 -79
  956. package/browser/migration/MigrationExecutor.js.map +1 -1
  957. package/browser/migration/MigrationInterface.d.ts +1 -1
  958. package/browser/migration/MigrationInterface.js +3 -3
  959. package/browser/migration/MigrationInterface.js.map +1 -1
  960. package/browser/naming-strategy/DefaultNamingStrategy.d.ts +5 -5
  961. package/browser/naming-strategy/DefaultNamingStrategy.js +24 -21
  962. package/browser/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  963. package/browser/naming-strategy/LegacyOracleNamingStrategy.d.ts +1 -1
  964. package/browser/naming-strategy/LegacyOracleNamingStrategy.js +12 -9
  965. package/browser/naming-strategy/LegacyOracleNamingStrategy.js.map +1 -1
  966. package/browser/naming-strategy/NamingStrategyInterface.d.ts +3 -5
  967. package/browser/naming-strategy/NamingStrategyInterface.js +3 -3
  968. package/browser/naming-strategy/NamingStrategyInterface.js.map +1 -1
  969. package/browser/persistence/EntityPersistExecutor.d.ts +7 -7
  970. package/browser/persistence/EntityPersistExecutor.js +32 -29
  971. package/browser/persistence/EntityPersistExecutor.js.map +1 -1
  972. package/browser/persistence/Subject.d.ts +5 -5
  973. package/browser/persistence/Subject.js +13 -9
  974. package/browser/persistence/Subject.js.map +1 -1
  975. package/browser/persistence/SubjectChangeMap.d.ts +3 -3
  976. package/browser/persistence/SubjectChangeMap.js +3 -3
  977. package/browser/persistence/SubjectChangeMap.js.map +1 -1
  978. package/browser/persistence/SubjectChangedColumnsComputer.d.ts +5 -1
  979. package/browser/persistence/SubjectChangedColumnsComputer.js +48 -36
  980. package/browser/persistence/SubjectChangedColumnsComputer.js.map +1 -1
  981. package/browser/persistence/SubjectDatabaseEntityLoader.d.ts +3 -2
  982. package/browser/persistence/SubjectDatabaseEntityLoader.js +15 -8
  983. package/browser/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  984. package/browser/persistence/SubjectExecutor.d.ts +7 -4
  985. package/browser/persistence/SubjectExecutor.js +63 -49
  986. package/browser/persistence/SubjectExecutor.js.map +1 -1
  987. package/browser/persistence/SubjectTopologicalSorter.d.ts +6 -2
  988. package/browser/persistence/SubjectTopologicalSorter.js +23 -6
  989. package/browser/persistence/SubjectTopologicalSorter.js.map +1 -1
  990. package/browser/persistence/subject-builder/CascadesSubjectBuilder.d.ts +5 -1
  991. package/browser/persistence/subject-builder/CascadesSubjectBuilder.js +14 -7
  992. package/browser/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  993. package/browser/persistence/subject-builder/ManyToManySubjectBuilder.d.ts +16 -6
  994. package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js +29 -16
  995. package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  996. package/browser/persistence/subject-builder/OneToManySubjectBuilder.d.ts +14 -7
  997. package/browser/persistence/subject-builder/OneToManySubjectBuilder.js +26 -16
  998. package/browser/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  999. package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.d.ts +14 -7
  1000. package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +24 -14
  1001. package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
  1002. package/browser/persistence/tree/ClosureSubjectExecutor.d.ts +6 -2
  1003. package/browser/persistence/tree/ClosureSubjectExecutor.js +24 -17
  1004. package/browser/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  1005. package/browser/persistence/tree/MaterializedPathSubjectExecutor.d.ts +4 -2
  1006. package/browser/persistence/tree/MaterializedPathSubjectExecutor.js +17 -11
  1007. package/browser/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  1008. package/browser/persistence/tree/NestedSetSubjectExecutor.d.ts +10 -4
  1009. package/browser/persistence/tree/NestedSetSubjectExecutor.js +25 -16
  1010. package/browser/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
  1011. package/browser/platform/BrowserConnectionOptionsReaderDummy.d.ts +0 -11
  1012. package/browser/platform/BrowserConnectionOptionsReaderDummy.js +10 -22
  1013. package/browser/platform/BrowserConnectionOptionsReaderDummy.js.map +1 -1
  1014. package/browser/platform/BrowserDirectoryExportedClassesLoader.d.ts +0 -4
  1015. package/browser/platform/BrowserDirectoryExportedClassesLoader.js +5 -9
  1016. package/browser/platform/BrowserDirectoryExportedClassesLoader.js.map +1 -1
  1017. package/browser/platform/BrowserDisabledDriversDummy.d.ts +0 -6
  1018. package/browser/platform/BrowserDisabledDriversDummy.js +30 -21
  1019. package/browser/platform/BrowserDisabledDriversDummy.js.map +1 -1
  1020. package/browser/platform/BrowserFileLoggerDummy.js +8 -4
  1021. package/browser/platform/BrowserFileLoggerDummy.js.map +1 -1
  1022. package/browser/platform/BrowserPlatformTools.d.ts +7 -5
  1023. package/browser/platform/BrowserPlatformTools.js +16 -33
  1024. package/browser/platform/BrowserPlatformTools.js.map +1 -1
  1025. package/browser/platform/PlatformTools.d.ts +12 -11
  1026. package/browser/platform/PlatformTools.js +62 -65
  1027. package/browser/platform/PlatformTools.js.map +1 -1
  1028. package/browser/query-builder/Alias.d.ts +1 -1
  1029. package/browser/query-builder/Alias.js +10 -7
  1030. package/browser/query-builder/Alias.js.map +1 -1
  1031. package/browser/query-builder/Brackets.d.ts +2 -1
  1032. package/browser/query-builder/Brackets.js +7 -3
  1033. package/browser/query-builder/Brackets.js.map +1 -1
  1034. package/browser/query-builder/DeleteQueryBuilder.d.ts +17 -6
  1035. package/browser/query-builder/DeleteQueryBuilder.js +29 -13
  1036. package/browser/query-builder/DeleteQueryBuilder.js.map +1 -1
  1037. package/browser/query-builder/InsertOrUpdateOptions.d.ts +3 -3
  1038. package/browser/query-builder/InsertOrUpdateOptions.js +3 -3
  1039. package/browser/query-builder/InsertOrUpdateOptions.js.map +1 -1
  1040. package/browser/query-builder/InsertQueryBuilder.d.ts +34 -29
  1041. package/browser/query-builder/InsertQueryBuilder.js +320 -187
  1042. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  1043. package/browser/query-builder/JoinAttribute.d.ts +7 -7
  1044. package/browser/query-builder/JoinAttribute.js +25 -33
  1045. package/browser/query-builder/JoinAttribute.js.map +1 -1
  1046. package/browser/query-builder/JoinOptions.js +3 -3
  1047. package/browser/query-builder/JoinOptions.js.map +1 -1
  1048. package/browser/query-builder/NotBrackets.js +7 -4
  1049. package/browser/query-builder/NotBrackets.js.map +1 -1
  1050. package/browser/query-builder/QueryBuilder.d.ts +51 -33
  1051. package/browser/query-builder/QueryBuilder.js +120 -127
  1052. package/browser/query-builder/QueryBuilder.js.map +1 -1
  1053. package/browser/query-builder/QueryBuilderCte.js +3 -3
  1054. package/browser/query-builder/QueryBuilderCte.js.map +1 -1
  1055. package/browser/query-builder/QueryBuilderUtils.d.ts +1 -0
  1056. package/browser/query-builder/QueryBuilderUtils.js +7 -3
  1057. package/browser/query-builder/QueryBuilderUtils.js.map +1 -1
  1058. package/browser/query-builder/QueryExpressionMap.d.ts +29 -30
  1059. package/browser/query-builder/QueryExpressionMap.js +36 -39
  1060. package/browser/query-builder/QueryExpressionMap.js.map +1 -1
  1061. package/browser/query-builder/QueryPartialEntity.d.ts +1 -1
  1062. package/browser/query-builder/QueryPartialEntity.js +3 -3
  1063. package/browser/query-builder/QueryPartialEntity.js.map +1 -1
  1064. package/browser/query-builder/RelationIdLoader.d.ts +39 -11
  1065. package/browser/query-builder/RelationIdLoader.js +106 -65
  1066. package/browser/query-builder/RelationIdLoader.js.map +1 -1
  1067. package/browser/query-builder/RelationLoader.d.ts +49 -14
  1068. package/browser/query-builder/RelationLoader.js +86 -28
  1069. package/browser/query-builder/RelationLoader.js.map +1 -1
  1070. package/browser/query-builder/RelationQueryBuilder.d.ts +7 -11
  1071. package/browser/query-builder/RelationQueryBuilder.js +33 -34
  1072. package/browser/query-builder/RelationQueryBuilder.js.map +1 -1
  1073. package/browser/query-builder/RelationRemover.d.ts +3 -2
  1074. package/browser/query-builder/RelationRemover.js +12 -8
  1075. package/browser/query-builder/RelationRemover.js.map +1 -1
  1076. package/browser/query-builder/RelationUpdater.d.ts +3 -2
  1077. package/browser/query-builder/RelationUpdater.js +17 -13
  1078. package/browser/query-builder/RelationUpdater.js.map +1 -1
  1079. package/browser/query-builder/ReturningOption.d.ts +4 -0
  1080. package/browser/query-builder/ReturningOption.js +3 -0
  1081. package/browser/query-builder/ReturningOption.js.map +1 -0
  1082. package/browser/query-builder/ReturningResultsEntityUpdator.d.ts +10 -6
  1083. package/browser/query-builder/ReturningResultsEntityUpdator.js +21 -14
  1084. package/browser/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
  1085. package/browser/query-builder/SelectQuery.js +3 -3
  1086. package/browser/query-builder/SelectQuery.js.map +1 -1
  1087. package/browser/query-builder/SelectQueryBuilder.d.ts +71 -33
  1088. package/browser/query-builder/SelectQueryBuilder.js +418 -338
  1089. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  1090. package/browser/query-builder/SelectQueryBuilderOption.js +3 -3
  1091. package/browser/query-builder/SelectQueryBuilderOption.js.map +1 -1
  1092. package/browser/query-builder/SoftDeleteQueryBuilder.d.ts +24 -7
  1093. package/browser/query-builder/SoftDeleteQueryBuilder.js +61 -31
  1094. package/browser/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  1095. package/browser/query-builder/UpdateQueryBuilder.d.ts +23 -7
  1096. package/browser/query-builder/UpdateQueryBuilder.js +75 -49
  1097. package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
  1098. package/browser/query-builder/WhereClause.js +3 -3
  1099. package/browser/query-builder/WhereClause.js.map +1 -1
  1100. package/browser/query-builder/WhereExpressionBuilder.d.ts +2 -7
  1101. package/browser/query-builder/WhereExpressionBuilder.js +3 -3
  1102. package/browser/query-builder/WhereExpressionBuilder.js.map +1 -1
  1103. package/browser/query-builder/index.d.ts +3 -0
  1104. package/browser/query-builder/index.js +21 -16
  1105. package/browser/query-builder/index.js.map +1 -1
  1106. package/browser/query-builder/relation-id/RelationIdAttribute.d.ts +4 -4
  1107. package/browser/query-builder/relation-id/RelationIdAttribute.js +17 -14
  1108. package/browser/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
  1109. package/browser/query-builder/relation-id/RelationIdLoadResult.d.ts +1 -1
  1110. package/browser/query-builder/relation-id/RelationIdLoadResult.js +3 -3
  1111. package/browser/query-builder/relation-id/RelationIdLoadResult.js.map +1 -1
  1112. package/browser/query-builder/relation-id/RelationIdLoader.d.ts +6 -6
  1113. package/browser/query-builder/relation-id/RelationIdLoader.js +22 -19
  1114. package/browser/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  1115. package/browser/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.d.ts +1 -1
  1116. package/browser/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js +8 -5
  1117. package/browser/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js.map +1 -1
  1118. package/browser/query-builder/result/DeleteResult.d.ts +1 -1
  1119. package/browser/query-builder/result/DeleteResult.js +6 -3
  1120. package/browser/query-builder/result/DeleteResult.js.map +1 -1
  1121. package/browser/query-builder/result/InsertResult.d.ts +2 -2
  1122. package/browser/query-builder/result/InsertResult.js +6 -3
  1123. package/browser/query-builder/result/InsertResult.js.map +1 -1
  1124. package/browser/query-builder/result/UpdateResult.d.ts +2 -2
  1125. package/browser/query-builder/result/UpdateResult.js +6 -3
  1126. package/browser/query-builder/result/UpdateResult.js.map +1 -1
  1127. package/browser/query-builder/transformer/DocumentToEntityTransformer.d.ts +3 -3
  1128. package/browser/query-builder/transformer/DocumentToEntityTransformer.js +7 -74
  1129. package/browser/query-builder/transformer/DocumentToEntityTransformer.js.map +1 -1
  1130. package/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.d.ts +3 -3
  1131. package/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js +22 -8
  1132. package/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
  1133. package/browser/query-builder/transformer/PlainObjectToNewEntityTransformer.d.ts +6 -2
  1134. package/browser/query-builder/transformer/PlainObjectToNewEntityTransformer.js +13 -6
  1135. package/browser/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
  1136. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.d.ts +22 -11
  1137. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js +57 -59
  1138. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  1139. package/browser/query-runner/BaseQueryRunner.d.ts +79 -16
  1140. package/browser/query-runner/BaseQueryRunner.js +120 -54
  1141. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  1142. package/browser/query-runner/QueryLock.js +9 -4
  1143. package/browser/query-runner/QueryLock.js.map +1 -1
  1144. package/browser/query-runner/QueryResult.js +6 -3
  1145. package/browser/query-runner/QueryResult.js.map +1 -1
  1146. package/browser/query-runner/QueryRunner.d.ts +52 -56
  1147. package/browser/query-runner/QueryRunner.js +3 -3
  1148. package/browser/query-runner/QueryRunner.js.map +1 -1
  1149. package/browser/repository/BaseEntity.d.ts +64 -44
  1150. package/browser/repository/BaseEntity.js +61 -34
  1151. package/browser/repository/BaseEntity.js.map +1 -1
  1152. package/browser/repository/EntityId.d.ts +1 -1
  1153. package/browser/repository/EntityId.js +3 -3
  1154. package/browser/repository/EntityId.js.map +1 -1
  1155. package/browser/repository/FindTreesOptions.js +3 -3
  1156. package/browser/repository/FindTreesOptions.js.map +1 -1
  1157. package/browser/repository/MongoRepository.d.ts +79 -29
  1158. package/browser/repository/MongoRepository.js +80 -31
  1159. package/browser/repository/MongoRepository.js.map +1 -1
  1160. package/browser/repository/RemoveOptions.js +3 -3
  1161. package/browser/repository/RemoveOptions.js.map +1 -1
  1162. package/browser/repository/Repository.d.ts +75 -52
  1163. package/browser/repository/Repository.js +76 -50
  1164. package/browser/repository/Repository.js.map +1 -1
  1165. package/browser/repository/SaveOptions.js +3 -3
  1166. package/browser/repository/SaveOptions.js.map +1 -1
  1167. package/browser/repository/TreeRepository.d.ts +21 -4
  1168. package/browser/repository/TreeRepository.js +48 -28
  1169. package/browser/repository/TreeRepository.js.map +1 -1
  1170. package/browser/repository/UpdateOptions.d.ts +11 -0
  1171. package/browser/repository/UpdateOptions.js +3 -0
  1172. package/browser/repository/UpdateOptions.js.map +1 -0
  1173. package/browser/repository/UpsertOptions.d.ts +8 -2
  1174. package/browser/repository/UpsertOptions.js +3 -3
  1175. package/browser/repository/UpsertOptions.js.map +1 -1
  1176. package/browser/schema-builder/MongoSchemaBuilder.d.ts +4 -4
  1177. package/browser/schema-builder/MongoSchemaBuilder.js +12 -9
  1178. package/browser/schema-builder/MongoSchemaBuilder.js.map +1 -1
  1179. package/browser/schema-builder/RdbmsSchemaBuilder.d.ts +29 -9
  1180. package/browser/schema-builder/RdbmsSchemaBuilder.js +202 -180
  1181. package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  1182. package/browser/schema-builder/SchemaBuilder.d.ts +1 -1
  1183. package/browser/schema-builder/SchemaBuilder.js +3 -3
  1184. package/browser/schema-builder/SchemaBuilder.js.map +1 -1
  1185. package/browser/schema-builder/options/TableCheckOptions.js +3 -3
  1186. package/browser/schema-builder/options/TableCheckOptions.js.map +1 -1
  1187. package/browser/schema-builder/options/TableColumnOptions.d.ts +0 -10
  1188. package/browser/schema-builder/options/TableColumnOptions.js +3 -3
  1189. package/browser/schema-builder/options/TableColumnOptions.js.map +1 -1
  1190. package/browser/schema-builder/options/TableExclusionOptions.d.ts +5 -0
  1191. package/browser/schema-builder/options/TableExclusionOptions.js +3 -3
  1192. package/browser/schema-builder/options/TableExclusionOptions.js.map +1 -1
  1193. package/browser/schema-builder/options/TableForeignKeyOptions.js +3 -3
  1194. package/browser/schema-builder/options/TableForeignKeyOptions.js.map +1 -1
  1195. package/browser/schema-builder/options/TableIndexOptions.d.ts +7 -0
  1196. package/browser/schema-builder/options/TableIndexOptions.js +3 -3
  1197. package/browser/schema-builder/options/TableIndexOptions.js.map +1 -1
  1198. package/browser/schema-builder/options/TableIndexTypes.d.ts +1 -0
  1199. package/browser/schema-builder/options/TableIndexTypes.js +3 -0
  1200. package/browser/schema-builder/options/TableIndexTypes.js.map +1 -0
  1201. package/browser/schema-builder/options/TableOptions.d.ts +6 -6
  1202. package/browser/schema-builder/options/TableOptions.js +3 -3
  1203. package/browser/schema-builder/options/TableOptions.js.map +1 -1
  1204. package/browser/schema-builder/options/TableUniqueOptions.js +3 -3
  1205. package/browser/schema-builder/options/TableUniqueOptions.js.map +1 -1
  1206. package/browser/schema-builder/options/ViewOptions.d.ts +3 -2
  1207. package/browser/schema-builder/options/ViewOptions.js +3 -3
  1208. package/browser/schema-builder/options/ViewOptions.js.map +1 -1
  1209. package/browser/schema-builder/table/Table.d.ts +23 -3
  1210. package/browser/schema-builder/table/Table.js +44 -21
  1211. package/browser/schema-builder/table/Table.js.map +1 -1
  1212. package/browser/schema-builder/table/TableCheck.d.ts +3 -2
  1213. package/browser/schema-builder/table/TableCheck.js +7 -3
  1214. package/browser/schema-builder/table/TableCheck.js.map +1 -1
  1215. package/browser/schema-builder/table/TableColumn.d.ts +1 -11
  1216. package/browser/schema-builder/table/TableColumn.js +7 -13
  1217. package/browser/schema-builder/table/TableColumn.js.map +1 -1
  1218. package/browser/schema-builder/table/TableExclusion.d.ts +8 -2
  1219. package/browser/schema-builder/table/TableExclusion.js +10 -3
  1220. package/browser/schema-builder/table/TableExclusion.js.map +1 -1
  1221. package/browser/schema-builder/table/TableForeignKey.d.ts +5 -3
  1222. package/browser/schema-builder/table/TableForeignKey.js +8 -3
  1223. package/browser/schema-builder/table/TableForeignKey.js.map +1 -1
  1224. package/browser/schema-builder/table/TableIndex.d.ts +10 -2
  1225. package/browser/schema-builder/table/TableIndex.js +10 -3
  1226. package/browser/schema-builder/table/TableIndex.js.map +1 -1
  1227. package/browser/schema-builder/table/TableUnique.d.ts +3 -2
  1228. package/browser/schema-builder/table/TableUnique.js +7 -3
  1229. package/browser/schema-builder/table/TableUnique.js.map +1 -1
  1230. package/browser/schema-builder/util/TableUtils.d.ts +3 -3
  1231. package/browser/schema-builder/util/TableUtils.js +6 -5
  1232. package/browser/schema-builder/util/TableUtils.js.map +1 -1
  1233. package/browser/schema-builder/util/ViewUtils.d.ts +3 -1
  1234. package/browser/schema-builder/util/ViewUtils.js +8 -3
  1235. package/browser/schema-builder/util/ViewUtils.js.map +1 -1
  1236. package/browser/schema-builder/view/View.d.ts +11 -3
  1237. package/browser/schema-builder/view/View.js +10 -3
  1238. package/browser/schema-builder/view/View.js.map +1 -1
  1239. package/browser/subscriber/Broadcaster.d.ts +76 -10
  1240. package/browser/subscriber/Broadcaster.js +157 -71
  1241. package/browser/subscriber/Broadcaster.js.map +1 -1
  1242. package/browser/subscriber/BroadcasterResult.js +6 -3
  1243. package/browser/subscriber/BroadcasterResult.js.map +1 -1
  1244. package/browser/subscriber/EntitySubscriberInterface.d.ts +12 -12
  1245. package/browser/subscriber/EntitySubscriberInterface.js +3 -3
  1246. package/browser/subscriber/EntitySubscriberInterface.js.map +1 -1
  1247. package/browser/subscriber/event/BaseEvent.d.ts +27 -0
  1248. package/browser/subscriber/event/BaseEvent.js +3 -0
  1249. package/browser/subscriber/event/BaseEvent.js.map +1 -0
  1250. package/browser/subscriber/event/InsertEvent.d.ts +4 -20
  1251. package/browser/subscriber/event/InsertEvent.js +3 -3
  1252. package/browser/subscriber/event/InsertEvent.js.map +1 -1
  1253. package/browser/subscriber/event/LoadEvent.d.ts +3 -19
  1254. package/browser/subscriber/event/LoadEvent.js +3 -3
  1255. package/browser/subscriber/event/LoadEvent.js.map +1 -1
  1256. package/browser/subscriber/event/QueryEvent.d.ts +4 -20
  1257. package/browser/subscriber/event/QueryEvent.js +3 -3
  1258. package/browser/subscriber/event/QueryEvent.js.map +1 -1
  1259. package/browser/subscriber/event/RecoverEvent.d.ts +1 -1
  1260. package/browser/subscriber/event/RecoverEvent.js +3 -3
  1261. package/browser/subscriber/event/RecoverEvent.js.map +1 -1
  1262. package/browser/subscriber/event/RemoveEvent.d.ts +3 -19
  1263. package/browser/subscriber/event/RemoveEvent.js +3 -3
  1264. package/browser/subscriber/event/RemoveEvent.js.map +1 -1
  1265. package/browser/subscriber/event/SoftRemoveEvent.d.ts +1 -1
  1266. package/browser/subscriber/event/SoftRemoveEvent.js +3 -3
  1267. package/browser/subscriber/event/SoftRemoveEvent.js.map +1 -1
  1268. package/browser/subscriber/event/TransactionCommitEvent.d.ts +2 -18
  1269. package/browser/subscriber/event/TransactionCommitEvent.js +3 -3
  1270. package/browser/subscriber/event/TransactionCommitEvent.js.map +1 -1
  1271. package/browser/subscriber/event/TransactionRollbackEvent.d.ts +2 -18
  1272. package/browser/subscriber/event/TransactionRollbackEvent.js +3 -3
  1273. package/browser/subscriber/event/TransactionRollbackEvent.js.map +1 -1
  1274. package/browser/subscriber/event/TransactionStartEvent.d.ts +2 -18
  1275. package/browser/subscriber/event/TransactionStartEvent.js +3 -3
  1276. package/browser/subscriber/event/TransactionStartEvent.js.map +1 -1
  1277. package/browser/subscriber/event/UpdateEvent.d.ts +6 -22
  1278. package/browser/subscriber/event/UpdateEvent.js +3 -3
  1279. package/browser/subscriber/event/UpdateEvent.js.map +1 -1
  1280. package/browser/util/ApplyValueTransformers.d.ts +1 -1
  1281. package/browser/util/ApplyValueTransformers.js +11 -3
  1282. package/browser/util/ApplyValueTransformers.js.map +1 -1
  1283. package/browser/util/DateUtils.d.ts +36 -1
  1284. package/browser/util/DateUtils.js +63 -11
  1285. package/browser/util/DateUtils.js.map +1 -1
  1286. package/browser/util/DepGraph.d.ts +16 -0
  1287. package/browser/util/DepGraph.js +30 -12
  1288. package/browser/util/DepGraph.js.map +1 -1
  1289. package/browser/util/DirectoryExportedClassesLoader.d.ts +4 -5
  1290. package/browser/util/DirectoryExportedClassesLoader.js +23 -24
  1291. package/browser/util/DirectoryExportedClassesLoader.js.map +1 -1
  1292. package/browser/util/ImportUtils.d.ts +4 -0
  1293. package/browser/util/ImportUtils.js +28 -12
  1294. package/browser/util/ImportUtils.js.map +1 -1
  1295. package/browser/util/InstanceChecker.d.ts +2 -2
  1296. package/browser/util/InstanceChecker.js +6 -3
  1297. package/browser/util/InstanceChecker.js.map +1 -1
  1298. package/browser/util/ObjectUtils.d.ts +4 -1
  1299. package/browser/util/ObjectUtils.js +9 -3
  1300. package/browser/util/ObjectUtils.js.map +1 -1
  1301. package/browser/util/OrmUtils.d.ts +43 -4
  1302. package/browser/util/OrmUtils.js +119 -20
  1303. package/browser/util/OrmUtils.js.map +1 -1
  1304. package/browser/util/PathUtils.d.ts +6 -0
  1305. package/browser/util/PathUtils.js +17 -7
  1306. package/browser/util/PathUtils.js.map +1 -1
  1307. package/browser/util/RandomGenerator.d.ts +9 -0
  1308. package/browser/util/RandomGenerator.js +107 -69
  1309. package/browser/util/RandomGenerator.js.map +1 -1
  1310. package/browser/util/SqlTagUtils.d.ts +8 -1
  1311. package/browser/util/SqlTagUtils.js +15 -5
  1312. package/browser/util/SqlTagUtils.js.map +1 -1
  1313. package/browser/util/StringUtils.d.ts +13 -8
  1314. package/browser/util/StringUtils.js +50 -22
  1315. package/browser/util/StringUtils.js.map +1 -1
  1316. package/browser/util/TreeRepositoryUtils.d.ts +3 -3
  1317. package/browser/util/TreeRepositoryUtils.js +8 -5
  1318. package/browser/util/TreeRepositoryUtils.js.map +1 -1
  1319. package/browser/util/Uint8ArrayUtils.d.ts +3 -0
  1320. package/browser/util/Uint8ArrayUtils.js +45 -0
  1321. package/browser/util/Uint8ArrayUtils.js.map +1 -0
  1322. package/browser/util/VersionUtils.js +10 -3
  1323. package/browser/util/VersionUtils.js.map +1 -1
  1324. package/browser/util/escapeRegExp.js +6 -3
  1325. package/browser/util/escapeRegExp.js.map +1 -1
  1326. package/cache/DbQueryResultCache.d.ts +17 -6
  1327. package/cache/DbQueryResultCache.js +31 -21
  1328. package/cache/DbQueryResultCache.js.map +1 -1
  1329. package/cache/QueryResultCache.d.ts +2 -2
  1330. package/cache/QueryResultCache.js +1 -2
  1331. package/cache/QueryResultCache.js.map +1 -1
  1332. package/cache/QueryResultCacheFactory.d.ts +4 -4
  1333. package/cache/QueryResultCacheFactory.js +8 -9
  1334. package/cache/QueryResultCacheFactory.js.map +1 -1
  1335. package/cache/QueryResultCacheOptions.js +1 -2
  1336. package/cache/QueryResultCacheOptions.js.map +1 -1
  1337. package/cache/RedisQueryResultCache.d.ts +18 -19
  1338. package/cache/RedisQueryResultCache.js +43 -123
  1339. package/cache/RedisQueryResultCache.js.map +1 -1
  1340. package/cli-ts-node-commonjs.js +1 -2
  1341. package/cli-ts-node-commonjs.js.map +1 -1
  1342. package/cli-ts-node-esm.js +1 -2
  1343. package/cli-ts-node-esm.js.map +1 -1
  1344. package/cli.js +19 -19
  1345. package/cli.js.map +1 -1
  1346. package/commands/CacheClearCommand.d.ts +1 -1
  1347. package/commands/CacheClearCommand.js +1 -2
  1348. package/commands/CacheClearCommand.js.map +1 -1
  1349. package/commands/CommandUtils.d.ts +7 -1
  1350. package/commands/CommandUtils.js +10 -4
  1351. package/commands/CommandUtils.js.map +1 -1
  1352. package/commands/EntityCreateCommand.d.ts +2 -1
  1353. package/commands/EntityCreateCommand.js +2 -2
  1354. package/commands/EntityCreateCommand.js.map +1 -1
  1355. package/commands/InitCommand.d.ts +19 -2
  1356. package/commands/InitCommand.js +115 -85
  1357. package/commands/InitCommand.js.map +1 -1
  1358. package/commands/MigrationCreateCommand.d.ts +6 -1
  1359. package/commands/MigrationCreateCommand.js +6 -2
  1360. package/commands/MigrationCreateCommand.js.map +1 -1
  1361. package/commands/MigrationGenerateCommand.d.ts +12 -1
  1362. package/commands/MigrationGenerateCommand.js +13 -3
  1363. package/commands/MigrationGenerateCommand.js.map +1 -1
  1364. package/commands/MigrationRevertCommand.d.ts +1 -1
  1365. package/commands/MigrationRevertCommand.js +1 -2
  1366. package/commands/MigrationRevertCommand.js.map +1 -1
  1367. package/commands/MigrationRunCommand.d.ts +1 -1
  1368. package/commands/MigrationRunCommand.js +5 -6
  1369. package/commands/MigrationRunCommand.js.map +1 -1
  1370. package/commands/MigrationShowCommand.d.ts +1 -1
  1371. package/commands/MigrationShowCommand.js +1 -2
  1372. package/commands/MigrationShowCommand.js.map +1 -1
  1373. package/commands/QueryCommand.d.ts +1 -1
  1374. package/commands/QueryCommand.js +1 -2
  1375. package/commands/QueryCommand.js.map +1 -1
  1376. package/commands/SchemaDropCommand.d.ts +1 -1
  1377. package/commands/SchemaDropCommand.js +1 -2
  1378. package/commands/SchemaDropCommand.js.map +1 -1
  1379. package/commands/SchemaLogCommand.d.ts +1 -1
  1380. package/commands/SchemaLogCommand.js +1 -2
  1381. package/commands/SchemaLogCommand.js.map +1 -1
  1382. package/commands/SchemaSyncCommand.d.ts +1 -1
  1383. package/commands/SchemaSyncCommand.js +1 -2
  1384. package/commands/SchemaSyncCommand.js.map +1 -1
  1385. package/commands/SubscriberCreateCommand.d.ts +2 -1
  1386. package/commands/SubscriberCreateCommand.js +2 -2
  1387. package/commands/SubscriberCreateCommand.js.map +1 -1
  1388. package/commands/VersionCommand.d.ts +1 -1
  1389. package/commands/VersionCommand.js +1 -2
  1390. package/commands/VersionCommand.js.map +1 -1
  1391. package/common/DeepPartial.js +1 -2
  1392. package/common/DeepPartial.js.map +1 -1
  1393. package/common/EntityTarget.d.ts +2 -2
  1394. package/common/EntityTarget.js +1 -2
  1395. package/common/EntityTarget.js.map +1 -1
  1396. package/common/MixedList.js +1 -2
  1397. package/common/MixedList.js.map +1 -1
  1398. package/common/NonNever.d.ts +1 -1
  1399. package/common/NonNever.js +1 -2
  1400. package/common/NonNever.js.map +1 -1
  1401. package/common/ObjectLiteral.js +1 -2
  1402. package/common/ObjectLiteral.js.map +1 -1
  1403. package/common/ObjectType.js +1 -2
  1404. package/common/ObjectType.js.map +1 -1
  1405. package/common/PickKeysByType.js +1 -2
  1406. package/common/PickKeysByType.js.map +1 -1
  1407. package/common/PrimitiveCriteria.js +1 -2
  1408. package/common/PrimitiveCriteria.js.map +1 -1
  1409. package/common/RelationType.d.ts +5 -5
  1410. package/common/RelationType.js +1 -2
  1411. package/common/RelationType.js.map +1 -1
  1412. package/connection/ConnectionMetadataBuilder.d.ts +10 -7
  1413. package/connection/ConnectionMetadataBuilder.js +13 -12
  1414. package/connection/ConnectionMetadataBuilder.js.map +1 -1
  1415. package/connection/ConnectionOptionsReader.d.ts +3 -11
  1416. package/connection/ConnectionOptionsReader.js +26 -59
  1417. package/connection/ConnectionOptionsReader.js.map +1 -1
  1418. package/data-source/BaseDataSourceOptions.d.ts +13 -20
  1419. package/data-source/BaseDataSourceOptions.js +1 -2
  1420. package/data-source/BaseDataSourceOptions.js.map +1 -1
  1421. package/data-source/DataSource.d.ts +50 -61
  1422. package/data-source/DataSource.js +38 -49
  1423. package/data-source/DataSource.js.map +1 -1
  1424. package/data-source/DataSourceOptions.d.ts +18 -19
  1425. package/data-source/DataSourceOptions.js +1 -2
  1426. package/data-source/DataSourceOptions.js.map +1 -1
  1427. package/data-source/index.d.ts +1 -1
  1428. package/data-source/index.js +1 -3
  1429. package/data-source/index.js.map +1 -1
  1430. package/decorator/Check.d.ts +3 -0
  1431. package/decorator/Check.js +3 -2
  1432. package/decorator/Check.js.map +1 -1
  1433. package/decorator/Exclusion.d.ts +8 -2
  1434. package/decorator/Exclusion.js +10 -5
  1435. package/decorator/Exclusion.js.map +1 -1
  1436. package/decorator/ForeignKey.d.ts +11 -2
  1437. package/decorator/ForeignKey.js +5 -2
  1438. package/decorator/ForeignKey.js.map +1 -1
  1439. package/decorator/Generated.d.ts +1 -0
  1440. package/decorator/Generated.js +2 -2
  1441. package/decorator/Generated.js.map +1 -1
  1442. package/decorator/Index.d.ts +17 -1
  1443. package/decorator/Index.js +5 -2
  1444. package/decorator/Index.js.map +1 -1
  1445. package/decorator/Unique.d.ts +11 -1
  1446. package/decorator/Unique.js +4 -2
  1447. package/decorator/Unique.js.map +1 -1
  1448. package/decorator/columns/Column.d.ts +31 -10
  1449. package/decorator/columns/Column.js +3 -2
  1450. package/decorator/columns/Column.js.map +1 -1
  1451. package/decorator/columns/CreateDateColumn.d.ts +2 -1
  1452. package/decorator/columns/CreateDateColumn.js +2 -2
  1453. package/decorator/columns/CreateDateColumn.js.map +1 -1
  1454. package/decorator/columns/DeleteDateColumn.d.ts +2 -1
  1455. package/decorator/columns/DeleteDateColumn.js +2 -2
  1456. package/decorator/columns/DeleteDateColumn.js.map +1 -1
  1457. package/decorator/columns/ObjectIdColumn.d.ts +2 -1
  1458. package/decorator/columns/ObjectIdColumn.js +2 -2
  1459. package/decorator/columns/ObjectIdColumn.js.map +1 -1
  1460. package/decorator/columns/PrimaryColumn.d.ts +5 -2
  1461. package/decorator/columns/PrimaryColumn.js +3 -2
  1462. package/decorator/columns/PrimaryColumn.js.map +1 -1
  1463. package/decorator/columns/PrimaryGeneratedColumn.d.ts +10 -3
  1464. package/decorator/columns/PrimaryGeneratedColumn.js +3 -2
  1465. package/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
  1466. package/decorator/columns/UpdateDateColumn.d.ts +2 -1
  1467. package/decorator/columns/UpdateDateColumn.js +2 -2
  1468. package/decorator/columns/UpdateDateColumn.js.map +1 -1
  1469. package/decorator/columns/VersionColumn.d.ts +2 -1
  1470. package/decorator/columns/VersionColumn.js +2 -2
  1471. package/decorator/columns/VersionColumn.js.map +1 -1
  1472. package/decorator/columns/ViewColumn.d.ts +2 -1
  1473. package/decorator/columns/ViewColumn.js +2 -2
  1474. package/decorator/columns/ViewColumn.js.map +1 -1
  1475. package/decorator/columns/VirtualColumn.d.ts +5 -2
  1476. package/decorator/columns/VirtualColumn.js +3 -2
  1477. package/decorator/columns/VirtualColumn.js.map +1 -1
  1478. package/decorator/entity/ChildEntity.d.ts +1 -0
  1479. package/decorator/entity/ChildEntity.js +2 -2
  1480. package/decorator/entity/ChildEntity.js.map +1 -1
  1481. package/decorator/entity/Entity.d.ts +4 -1
  1482. package/decorator/entity/Entity.js +3 -2
  1483. package/decorator/entity/Entity.js.map +1 -1
  1484. package/decorator/entity/TableInheritance.d.ts +4 -1
  1485. package/decorator/entity/TableInheritance.js +4 -2
  1486. package/decorator/entity/TableInheritance.js.map +1 -1
  1487. package/decorator/entity-view/ViewEntity.d.ts +4 -1
  1488. package/decorator/entity-view/ViewEntity.js +3 -2
  1489. package/decorator/entity-view/ViewEntity.js.map +1 -1
  1490. package/decorator/listeners/AfterInsert.js +1 -2
  1491. package/decorator/listeners/AfterInsert.js.map +1 -1
  1492. package/decorator/listeners/AfterLoad.js +1 -2
  1493. package/decorator/listeners/AfterLoad.js.map +1 -1
  1494. package/decorator/listeners/AfterRecover.js +1 -2
  1495. package/decorator/listeners/AfterRecover.js.map +1 -1
  1496. package/decorator/listeners/AfterRemove.js +1 -2
  1497. package/decorator/listeners/AfterRemove.js.map +1 -1
  1498. package/decorator/listeners/AfterSoftRemove.js +1 -2
  1499. package/decorator/listeners/AfterSoftRemove.js.map +1 -1
  1500. package/decorator/listeners/AfterUpdate.js +1 -2
  1501. package/decorator/listeners/AfterUpdate.js.map +1 -1
  1502. package/decorator/listeners/BeforeInsert.js +1 -2
  1503. package/decorator/listeners/BeforeInsert.js.map +1 -1
  1504. package/decorator/listeners/BeforeRecover.js +1 -2
  1505. package/decorator/listeners/BeforeRecover.js.map +1 -1
  1506. package/decorator/listeners/BeforeRemove.js +1 -2
  1507. package/decorator/listeners/BeforeRemove.js.map +1 -1
  1508. package/decorator/listeners/BeforeSoftRemove.js +1 -2
  1509. package/decorator/listeners/BeforeSoftRemove.js.map +1 -1
  1510. package/decorator/listeners/BeforeUpdate.js +1 -2
  1511. package/decorator/listeners/BeforeUpdate.js.map +1 -1
  1512. package/decorator/listeners/EventSubscriber.js +1 -2
  1513. package/decorator/listeners/EventSubscriber.js.map +1 -1
  1514. package/decorator/options/ColumnCommonOptions.d.ts +2 -2
  1515. package/decorator/options/ColumnCommonOptions.js +1 -2
  1516. package/decorator/options/ColumnCommonOptions.js.map +1 -1
  1517. package/decorator/options/ColumnEmbeddedOptions.js +1 -2
  1518. package/decorator/options/ColumnEmbeddedOptions.js.map +1 -1
  1519. package/decorator/options/ColumnEnumOptions.js +1 -2
  1520. package/decorator/options/ColumnEnumOptions.js.map +1 -1
  1521. package/decorator/options/ColumnHstoreOptions.js +1 -2
  1522. package/decorator/options/ColumnHstoreOptions.js.map +1 -1
  1523. package/decorator/options/ColumnNumericOptions.d.ts +0 -16
  1524. package/decorator/options/ColumnNumericOptions.js +1 -2
  1525. package/decorator/options/ColumnNumericOptions.js.map +1 -1
  1526. package/decorator/options/ColumnOptions.d.ts +8 -33
  1527. package/decorator/options/ColumnOptions.js +1 -2
  1528. package/decorator/options/ColumnOptions.js.map +1 -1
  1529. package/decorator/options/ColumnUnsignedOptions.d.ts +1 -20
  1530. package/decorator/options/ColumnUnsignedOptions.js +1 -2
  1531. package/decorator/options/ColumnUnsignedOptions.js.map +1 -1
  1532. package/decorator/options/ColumnWithLengthOptions.js +1 -2
  1533. package/decorator/options/ColumnWithLengthOptions.js.map +1 -1
  1534. package/decorator/options/EntityOptions.d.ts +1 -1
  1535. package/decorator/options/EntityOptions.js +1 -2
  1536. package/decorator/options/EntityOptions.js.map +1 -1
  1537. package/decorator/options/ExclusionOptions.d.ts +10 -0
  1538. package/decorator/options/ExclusionOptions.js +3 -0
  1539. package/decorator/options/ExclusionOptions.js.map +1 -0
  1540. package/decorator/options/ForeignKeyOptions.d.ts +3 -3
  1541. package/decorator/options/ForeignKeyOptions.js +1 -2
  1542. package/decorator/options/ForeignKeyOptions.js.map +1 -1
  1543. package/decorator/options/IndexOptions.d.ts +7 -0
  1544. package/decorator/options/IndexOptions.js +1 -2
  1545. package/decorator/options/IndexOptions.js.map +1 -1
  1546. package/decorator/options/JoinColumnOptions.js +1 -2
  1547. package/decorator/options/JoinColumnOptions.js.map +1 -1
  1548. package/decorator/options/JoinTableMultipleColumnsOptions.d.ts +1 -1
  1549. package/decorator/options/JoinTableMultipleColumnsOptions.js +1 -2
  1550. package/decorator/options/JoinTableMultipleColumnsOptions.js.map +1 -1
  1551. package/decorator/options/JoinTableOptions.d.ts +1 -1
  1552. package/decorator/options/JoinTableOptions.js +1 -2
  1553. package/decorator/options/JoinTableOptions.js.map +1 -1
  1554. package/decorator/options/PrimaryGeneratedColumnIdentityOptions.d.ts +1 -1
  1555. package/decorator/options/PrimaryGeneratedColumnIdentityOptions.js +1 -2
  1556. package/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -1
  1557. package/decorator/options/PrimaryGeneratedColumnNumericOptions.d.ts +1 -9
  1558. package/decorator/options/PrimaryGeneratedColumnNumericOptions.js +1 -2
  1559. package/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
  1560. package/decorator/options/PrimaryGeneratedColumnUUIDOptions.js +1 -2
  1561. package/decorator/options/PrimaryGeneratedColumnUUIDOptions.js.map +1 -1
  1562. package/decorator/options/RelationOptions.d.ts +3 -3
  1563. package/decorator/options/RelationOptions.js +1 -2
  1564. package/decorator/options/RelationOptions.js.map +1 -1
  1565. package/decorator/options/SpatialColumnOptions.d.ts +1 -1
  1566. package/decorator/options/SpatialColumnOptions.js +1 -2
  1567. package/decorator/options/SpatialColumnOptions.js.map +1 -1
  1568. package/decorator/options/TransactionOptions.d.ts +1 -1
  1569. package/decorator/options/TransactionOptions.js +1 -2
  1570. package/decorator/options/TransactionOptions.js.map +1 -1
  1571. package/decorator/options/UniqueOptions.d.ts +1 -1
  1572. package/decorator/options/UniqueOptions.js +1 -2
  1573. package/decorator/options/UniqueOptions.js.map +1 -1
  1574. package/decorator/options/ValueTransformer.js +1 -2
  1575. package/decorator/options/ValueTransformer.js.map +1 -1
  1576. package/decorator/options/ViewColumnOptions.d.ts +1 -1
  1577. package/decorator/options/ViewColumnOptions.js +1 -2
  1578. package/decorator/options/ViewColumnOptions.js.map +1 -1
  1579. package/decorator/options/ViewEntityOptions.d.ts +3 -2
  1580. package/decorator/options/ViewEntityOptions.js +1 -2
  1581. package/decorator/options/ViewEntityOptions.js.map +1 -1
  1582. package/decorator/options/VirtualColumnOptions.d.ts +3 -3
  1583. package/decorator/options/VirtualColumnOptions.js +1 -2
  1584. package/decorator/options/VirtualColumnOptions.js.map +1 -1
  1585. package/decorator/relations/JoinColumn.d.ts +3 -1
  1586. package/decorator/relations/JoinColumn.js +2 -2
  1587. package/decorator/relations/JoinColumn.js.map +1 -1
  1588. package/decorator/relations/JoinTable.d.ts +4 -2
  1589. package/decorator/relations/JoinTable.js +2 -2
  1590. package/decorator/relations/JoinTable.js.map +1 -1
  1591. package/decorator/relations/ManyToMany.d.ts +7 -2
  1592. package/decorator/relations/ManyToMany.js +4 -2
  1593. package/decorator/relations/ManyToMany.js.map +1 -1
  1594. package/decorator/relations/ManyToOne.d.ts +7 -2
  1595. package/decorator/relations/ManyToOne.js +4 -2
  1596. package/decorator/relations/ManyToOne.js.map +1 -1
  1597. package/decorator/relations/OneToMany.d.ts +5 -2
  1598. package/decorator/relations/OneToMany.js +4 -2
  1599. package/decorator/relations/OneToMany.js.map +1 -1
  1600. package/decorator/relations/OneToOne.d.ts +7 -2
  1601. package/decorator/relations/OneToOne.js +4 -2
  1602. package/decorator/relations/OneToOne.js.map +1 -1
  1603. package/decorator/relations/RelationId.d.ts +4 -2
  1604. package/decorator/relations/RelationId.js +4 -3
  1605. package/decorator/relations/RelationId.js.map +1 -1
  1606. package/decorator/tree/Tree.d.ts +6 -4
  1607. package/decorator/tree/Tree.js +5 -4
  1608. package/decorator/tree/Tree.js.map +1 -1
  1609. package/decorator/tree/TreeChildren.d.ts +2 -0
  1610. package/decorator/tree/TreeChildren.js +3 -2
  1611. package/decorator/tree/TreeChildren.js.map +1 -1
  1612. package/decorator/tree/TreeLevelColumn.js +1 -2
  1613. package/decorator/tree/TreeLevelColumn.js.map +1 -1
  1614. package/decorator/tree/TreeParent.d.ts +3 -1
  1615. package/decorator/tree/TreeParent.js +3 -2
  1616. package/decorator/tree/TreeParent.js.map +1 -1
  1617. package/driver/Driver.d.ts +32 -21
  1618. package/driver/Driver.js +1 -2
  1619. package/driver/Driver.js.map +1 -1
  1620. package/driver/DriverFactory.d.ts +5 -3
  1621. package/driver/DriverFactory.js +48 -51
  1622. package/driver/DriverFactory.js.map +1 -1
  1623. package/driver/DriverUtils.d.ts +13 -11
  1624. package/driver/DriverUtils.js +18 -24
  1625. package/driver/DriverUtils.js.map +1 -1
  1626. package/driver/Query.js +1 -2
  1627. package/driver/Query.js.map +1 -1
  1628. package/driver/SqlInMemory.d.ts +1 -1
  1629. package/driver/SqlInMemory.js +1 -2
  1630. package/driver/SqlInMemory.js.map +1 -1
  1631. package/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.d.ts +0 -1
  1632. package/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.js +1 -2
  1633. package/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.js.map +1 -1
  1634. package/{browser/driver/aurora-mysql/AuroraMysqlConnectionOptions.d.ts → driver/aurora-mysql/AuroraMysqlDataSourceOptions.d.ts} +4 -5
  1635. package/driver/aurora-mysql/AuroraMysqlDataSourceOptions.js +3 -0
  1636. package/driver/aurora-mysql/AuroraMysqlDataSourceOptions.js.map +1 -0
  1637. package/driver/aurora-mysql/AuroraMysqlDriver.d.ts +66 -28
  1638. package/driver/aurora-mysql/AuroraMysqlDriver.js +76 -64
  1639. package/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  1640. package/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts +168 -32
  1641. package/driver/aurora-mysql/AuroraMysqlQueryRunner.js +245 -135
  1642. package/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
  1643. package/{browser/driver/aurora-postgres/AuroraPostgresConnectionOptions.d.ts → driver/aurora-postgres/AuroraPostgresDataSourceOptions.d.ts} +2 -2
  1644. package/driver/aurora-postgres/AuroraPostgresDataSourceOptions.js +3 -0
  1645. package/driver/aurora-postgres/AuroraPostgresDataSourceOptions.js.map +1 -0
  1646. package/driver/aurora-postgres/AuroraPostgresDriver.d.ts +15 -13
  1647. package/driver/aurora-postgres/AuroraPostgresDriver.js +17 -11
  1648. package/driver/aurora-postgres/AuroraPostgresDriver.js.map +1 -1
  1649. package/driver/aurora-postgres/AuroraPostgresQueryRunner.d.ts +11 -9
  1650. package/driver/aurora-postgres/AuroraPostgresQueryRunner.js +7 -2
  1651. package/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
  1652. package/{browser/driver/better-sqlite3/BetterSqlite3ConnectionOptions.d.ts → driver/better-sqlite3/BetterSqlite3DataSourceOptions.d.ts} +5 -3
  1653. package/driver/better-sqlite3/BetterSqlite3DataSourceOptions.js +3 -0
  1654. package/driver/better-sqlite3/BetterSqlite3DataSourceOptions.js.map +1 -0
  1655. package/driver/better-sqlite3/BetterSqlite3Driver.d.ts +13 -12
  1656. package/driver/better-sqlite3/BetterSqlite3Driver.js +19 -16
  1657. package/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  1658. package/driver/better-sqlite3/BetterSqlite3QueryRunner.d.ts +4 -1
  1659. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js +23 -16
  1660. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  1661. package/driver/capacitor/{CapacitorConnectionOptions.d.ts → CapacitorDataSourceOptions.d.ts} +2 -2
  1662. package/driver/capacitor/CapacitorDataSourceOptions.js +3 -0
  1663. package/driver/capacitor/CapacitorDataSourceOptions.js.map +1 -0
  1664. package/driver/capacitor/CapacitorDriver.d.ts +7 -6
  1665. package/driver/capacitor/CapacitorDriver.js +5 -5
  1666. package/driver/capacitor/CapacitorDriver.js.map +1 -1
  1667. package/driver/capacitor/CapacitorQueryRunner.d.ts +6 -2
  1668. package/driver/capacitor/CapacitorQueryRunner.js +11 -8
  1669. package/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
  1670. package/driver/cockroachdb/CockroachConnectionCredentialsOptions.d.ts +1 -1
  1671. package/driver/cockroachdb/CockroachConnectionCredentialsOptions.js +1 -2
  1672. package/driver/cockroachdb/CockroachConnectionCredentialsOptions.js.map +1 -1
  1673. package/{browser/driver/cockroachdb/CockroachConnectionOptions.d.ts → driver/cockroachdb/CockroachDataSourceOptions.d.ts} +4 -4
  1674. package/driver/cockroachdb/CockroachDataSourceOptions.js +3 -0
  1675. package/driver/cockroachdb/CockroachDataSourceOptions.js.map +1 -0
  1676. package/driver/cockroachdb/CockroachDriver.d.ts +79 -27
  1677. package/driver/cockroachdb/CockroachDriver.js +121 -45
  1678. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  1679. package/driver/cockroachdb/CockroachQueryRunner.d.ts +203 -31
  1680. package/driver/cockroachdb/CockroachQueryRunner.js +370 -160
  1681. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  1682. package/driver/cordova/{CordovaConnectionOptions.d.ts → CordovaDataSourceOptions.d.ts} +2 -2
  1683. package/driver/cordova/CordovaDataSourceOptions.js +3 -0
  1684. package/driver/cordova/CordovaDataSourceOptions.js.map +1 -0
  1685. package/driver/cordova/CordovaDriver.d.ts +7 -6
  1686. package/driver/cordova/CordovaDriver.js +5 -7
  1687. package/driver/cordova/CordovaDriver.js.map +1 -1
  1688. package/driver/cordova/CordovaQueryRunner.d.ts +7 -35
  1689. package/driver/cordova/CordovaQueryRunner.js +11 -39
  1690. package/driver/cordova/CordovaQueryRunner.js.map +1 -1
  1691. package/driver/expo/{ExpoConnectionOptions.d.ts → ExpoDataSourceOptions.d.ts} +2 -2
  1692. package/driver/expo/ExpoDataSourceOptions.js +3 -0
  1693. package/driver/expo/ExpoDataSourceOptions.js.map +1 -0
  1694. package/driver/expo/ExpoDriver.d.ts +6 -5
  1695. package/driver/expo/ExpoDriver.js +10 -4
  1696. package/driver/expo/ExpoDriver.js.map +1 -1
  1697. package/driver/expo/ExpoQueryRunner.d.ts +1 -1
  1698. package/driver/expo/ExpoQueryRunner.js +5 -6
  1699. package/driver/expo/ExpoQueryRunner.js.map +1 -1
  1700. package/{browser/driver/mongodb/MongoConnectionOptions.d.ts → driver/mongodb/MongoDataSourceOptions.d.ts} +7 -69
  1701. package/driver/mongodb/MongoDataSourceOptions.js +3 -0
  1702. package/driver/mongodb/MongoDataSourceOptions.js.map +1 -0
  1703. package/driver/mongodb/MongoDriver.d.ts +51 -23
  1704. package/driver/mongodb/MongoDriver.js +41 -33
  1705. package/driver/mongodb/MongoDriver.js.map +1 -1
  1706. package/driver/mongodb/MongoQueryRunner.d.ts +239 -83
  1707. package/driver/mongodb/MongoQueryRunner.js +234 -68
  1708. package/driver/mongodb/MongoQueryRunner.js.map +1 -1
  1709. package/driver/mongodb/bson.typings.d.ts +604 -97
  1710. package/driver/mongodb/bson.typings.js +2 -2
  1711. package/driver/mongodb/bson.typings.js.map +1 -1
  1712. package/driver/mongodb/typings.d.ts +3577 -1025
  1713. package/driver/mongodb/typings.js +3 -3
  1714. package/driver/mongodb/typings.js.map +1 -1
  1715. package/driver/mysql/MysqlConnectionCredentialsOptions.d.ts +0 -1
  1716. package/driver/mysql/MysqlConnectionCredentialsOptions.js +1 -2
  1717. package/driver/mysql/MysqlConnectionCredentialsOptions.js.map +1 -1
  1718. package/{browser/driver/mysql/MysqlConnectionOptions.d.ts → driver/mysql/MysqlDataSourceOptions.d.ts} +6 -13
  1719. package/driver/mysql/MysqlDataSourceOptions.js +3 -0
  1720. package/driver/mysql/MysqlDataSourceOptions.js.map +1 -0
  1721. package/driver/mysql/MysqlDriver.d.ts +69 -37
  1722. package/driver/mysql/MysqlDriver.js +91 -205
  1723. package/driver/mysql/MysqlDriver.js.map +1 -1
  1724. package/driver/mysql/MysqlQueryRunner.d.ts +167 -33
  1725. package/driver/mysql/MysqlQueryRunner.js +265 -146
  1726. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  1727. package/{browser/driver/nativescript/NativescriptConnectionOptions.d.ts → driver/nativescript/NativescriptDataSourceOptions.d.ts} +2 -2
  1728. package/driver/nativescript/NativescriptDataSourceOptions.js +3 -0
  1729. package/driver/nativescript/NativescriptDataSourceOptions.js.map +1 -0
  1730. package/driver/nativescript/NativescriptDriver.d.ts +9 -8
  1731. package/driver/nativescript/NativescriptDriver.js +7 -8
  1732. package/driver/nativescript/NativescriptDriver.js.map +1 -1
  1733. package/driver/nativescript/NativescriptQueryRunner.d.ts +7 -2
  1734. package/driver/nativescript/NativescriptQueryRunner.js +8 -4
  1735. package/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  1736. package/driver/oracle/OracleConnectionCredentialsOptions.js +1 -2
  1737. package/driver/oracle/OracleConnectionCredentialsOptions.js.map +1 -1
  1738. package/{browser/driver/oracle/OracleConnectionOptions.d.ts → driver/oracle/OracleDataSourceOptions.d.ts} +3 -3
  1739. package/driver/oracle/OracleDataSourceOptions.js +3 -0
  1740. package/driver/oracle/OracleDataSourceOptions.js.map +1 -0
  1741. package/driver/oracle/OracleDriver.d.ts +65 -28
  1742. package/driver/oracle/OracleDriver.js +60 -23
  1743. package/driver/oracle/OracleDriver.js.map +1 -1
  1744. package/driver/oracle/OracleQueryRunner.d.ts +176 -29
  1745. package/driver/oracle/OracleQueryRunner.js +271 -100
  1746. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  1747. package/driver/postgres/PostgresConnectionCredentialsOptions.d.ts +1 -1
  1748. package/driver/postgres/PostgresConnectionCredentialsOptions.js +1 -2
  1749. package/driver/postgres/PostgresConnectionCredentialsOptions.js.map +1 -1
  1750. package/{browser/driver/postgres/PostgresConnectionOptions.d.ts → driver/postgres/PostgresDataSourceOptions.d.ts} +8 -5
  1751. package/driver/postgres/PostgresDataSourceOptions.js +3 -0
  1752. package/driver/postgres/PostgresDataSourceOptions.js.map +1 -0
  1753. package/driver/postgres/PostgresDriver.d.ts +85 -28
  1754. package/driver/postgres/PostgresDriver.js +201 -41
  1755. package/driver/postgres/PostgresDriver.js.map +1 -1
  1756. package/driver/postgres/PostgresQueryRunner.d.ts +225 -34
  1757. package/driver/postgres/PostgresQueryRunner.js +497 -219
  1758. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  1759. package/{browser/driver/react-native/ReactNativeConnectionOptions.d.ts → driver/react-native/ReactNativeDataSourceOptions.d.ts} +6 -2
  1760. package/driver/react-native/ReactNativeDataSourceOptions.js +3 -0
  1761. package/driver/react-native/ReactNativeDataSourceOptions.js.map +1 -0
  1762. package/driver/react-native/ReactNativeDriver.d.ts +64 -24
  1763. package/driver/react-native/ReactNativeDriver.js +60 -22
  1764. package/driver/react-native/ReactNativeDriver.js.map +1 -1
  1765. package/driver/react-native/ReactNativeQueryRunner.d.ts +7 -2
  1766. package/driver/react-native/ReactNativeQueryRunner.js +10 -6
  1767. package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  1768. package/driver/sap/SapConnectionCredentialsOptions.js +1 -2
  1769. package/driver/sap/SapConnectionCredentialsOptions.js.map +1 -1
  1770. package/driver/sap/{SapConnectionOptions.d.ts → SapDataSourceOptions.d.ts} +10 -37
  1771. package/driver/sap/SapDataSourceOptions.js +3 -0
  1772. package/driver/sap/SapDataSourceOptions.js.map +1 -0
  1773. package/driver/sap/SapDriver.d.ts +54 -17
  1774. package/driver/sap/SapDriver.js +48 -25
  1775. package/driver/sap/SapDriver.js.map +1 -1
  1776. package/driver/sap/SapQueryRunner.d.ts +179 -31
  1777. package/driver/sap/SapQueryRunner.js +316 -118
  1778. package/driver/sap/SapQueryRunner.js.map +1 -1
  1779. package/driver/spanner/SpannerConnectionCredentialsOptions.js +1 -2
  1780. package/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -1
  1781. package/{browser/driver/spanner/SpannerConnectionOptions.d.ts → driver/spanner/SpannerDataSourceOptions.d.ts} +4 -4
  1782. package/driver/spanner/SpannerDataSourceOptions.js +3 -0
  1783. package/driver/spanner/SpannerDataSourceOptions.js.map +1 -0
  1784. package/driver/spanner/SpannerDriver.d.ts +61 -23
  1785. package/driver/spanner/SpannerDriver.js +57 -21
  1786. package/driver/spanner/SpannerDriver.js.map +1 -1
  1787. package/driver/spanner/SpannerQueryRunner.d.ts +170 -28
  1788. package/driver/spanner/SpannerQueryRunner.js +243 -75
  1789. package/driver/spanner/SpannerQueryRunner.js.map +1 -1
  1790. package/driver/sqlite-abstract/AbstractSqliteDriver.d.ts +74 -23
  1791. package/driver/sqlite-abstract/AbstractSqliteDriver.js +131 -26
  1792. package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  1793. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +164 -30
  1794. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +242 -82
  1795. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  1796. package/{browser/driver/sqljs/SqljsConnectionOptions.d.ts → driver/sqljs/SqljsDataSourceOptions.d.ts} +2 -2
  1797. package/driver/sqljs/SqljsDataSourceOptions.js +3 -0
  1798. package/driver/sqljs/SqljsDataSourceOptions.js.map +1 -0
  1799. package/driver/sqljs/SqljsDriver.d.ts +15 -8
  1800. package/driver/sqljs/SqljsDriver.js +17 -11
  1801. package/driver/sqljs/SqljsDriver.js.map +1 -1
  1802. package/driver/sqljs/SqljsQueryRunner.d.ts +4 -1
  1803. package/driver/sqljs/SqljsQueryRunner.js +8 -6
  1804. package/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  1805. package/driver/sqlserver/MssqlParameter.d.ts +0 -1
  1806. package/driver/sqlserver/MssqlParameter.js +1 -3
  1807. package/driver/sqlserver/MssqlParameter.js.map +1 -1
  1808. package/driver/sqlserver/SqlServerConnectionCredentialsOptions.d.ts +8 -15
  1809. package/driver/sqlserver/SqlServerConnectionCredentialsOptions.js +1 -2
  1810. package/driver/sqlserver/SqlServerConnectionCredentialsOptions.js.map +1 -1
  1811. package/driver/sqlserver/{SqlServerConnectionOptions.d.ts → SqlServerDataSourceOptions.d.ts} +4 -4
  1812. package/driver/sqlserver/SqlServerDataSourceOptions.js +3 -0
  1813. package/driver/sqlserver/SqlServerDataSourceOptions.js.map +1 -0
  1814. package/driver/sqlserver/SqlServerDriver.d.ts +70 -28
  1815. package/driver/sqlserver/SqlServerDriver.js +66 -34
  1816. package/driver/sqlserver/SqlServerDriver.js.map +1 -1
  1817. package/driver/sqlserver/SqlServerQueryRunner.d.ts +190 -30
  1818. package/driver/sqlserver/SqlServerQueryRunner.js +377 -155
  1819. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  1820. package/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js +1 -2
  1821. package/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js.map +1 -1
  1822. package/driver/sqlserver/authentication/AzureActiveDirectoryDefaultAuthentication.js +1 -2
  1823. package/driver/sqlserver/authentication/AzureActiveDirectoryDefaultAuthentication.js.map +1 -1
  1824. package/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js +1 -2
  1825. package/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js.map +1 -1
  1826. package/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js +1 -2
  1827. package/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js.map +1 -1
  1828. package/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js +1 -2
  1829. package/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js.map +1 -1
  1830. package/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.js +1 -2
  1831. package/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.js.map +1 -1
  1832. package/driver/sqlserver/authentication/DefaultAuthentication.js +1 -2
  1833. package/driver/sqlserver/authentication/DefaultAuthentication.js.map +1 -1
  1834. package/driver/sqlserver/authentication/NtlmAuthentication.js +1 -2
  1835. package/driver/sqlserver/authentication/NtlmAuthentication.js.map +1 -1
  1836. package/driver/types/ColumnTypes.d.ts +1 -1
  1837. package/driver/types/ColumnTypes.js +1 -2
  1838. package/driver/types/ColumnTypes.js.map +1 -1
  1839. package/driver/types/CteCapabilities.js +1 -2
  1840. package/driver/types/CteCapabilities.js.map +1 -1
  1841. package/driver/types/DataTypeDefaults.d.ts +0 -1
  1842. package/driver/types/DataTypeDefaults.js +1 -2
  1843. package/driver/types/DataTypeDefaults.js.map +1 -1
  1844. package/driver/types/DatabaseType.d.ts +1 -1
  1845. package/driver/types/DatabaseType.js +1 -2
  1846. package/driver/types/DatabaseType.js.map +1 -1
  1847. package/driver/types/GeoJsonTypes.js +1 -2
  1848. package/driver/types/GeoJsonTypes.js.map +1 -1
  1849. package/driver/types/IsolationLevel.js +1 -2
  1850. package/driver/types/IsolationLevel.js.map +1 -1
  1851. package/driver/types/MappedColumnTypes.d.ts +1 -1
  1852. package/driver/types/MappedColumnTypes.js +1 -2
  1853. package/driver/types/MappedColumnTypes.js.map +1 -1
  1854. package/driver/types/MetadataTableType.js +1 -2
  1855. package/driver/types/MetadataTableType.js.map +1 -1
  1856. package/driver/types/ReplicationMode.js +1 -2
  1857. package/driver/types/ReplicationMode.js.map +1 -1
  1858. package/driver/types/ReturningType.d.ts +1 -0
  1859. package/driver/types/ReturningType.js +3 -0
  1860. package/driver/types/ReturningType.js.map +1 -0
  1861. package/driver/types/UpsertType.js +1 -2
  1862. package/driver/types/UpsertType.js.map +1 -1
  1863. package/entity-manager/EntityManager.d.ts +111 -57
  1864. package/entity-manager/EntityManager.js +191 -153
  1865. package/entity-manager/EntityManager.js.map +1 -1
  1866. package/entity-manager/EntityManagerFactory.d.ts +6 -3
  1867. package/entity-manager/EntityManagerFactory.js +10 -8
  1868. package/entity-manager/EntityManagerFactory.js.map +1 -1
  1869. package/entity-manager/MongoEntityManager.d.ts +156 -30
  1870. package/entity-manager/MongoEntityManager.js +262 -89
  1871. package/entity-manager/MongoEntityManager.js.map +1 -1
  1872. package/entity-manager/SqljsEntityManager.d.ts +5 -3
  1873. package/entity-manager/SqljsEntityManager.js +6 -5
  1874. package/entity-manager/SqljsEntityManager.js.map +1 -1
  1875. package/entity-schema/EntitySchema.d.ts +1 -1
  1876. package/entity-schema/EntitySchema.js +1 -2
  1877. package/entity-schema/EntitySchema.js.map +1 -1
  1878. package/entity-schema/EntitySchemaCheckOptions.js +1 -2
  1879. package/entity-schema/EntitySchemaCheckOptions.js.map +1 -1
  1880. package/entity-schema/EntitySchemaColumnForeignKeyOptions.d.ts +2 -2
  1881. package/entity-schema/EntitySchemaColumnForeignKeyOptions.js +1 -2
  1882. package/entity-schema/EntitySchemaColumnForeignKeyOptions.js.map +1 -1
  1883. package/entity-schema/EntitySchemaColumnOptions.d.ts +6 -26
  1884. package/entity-schema/EntitySchemaColumnOptions.js +1 -2
  1885. package/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
  1886. package/entity-schema/EntitySchemaEmbeddedColumnOptions.d.ts +1 -1
  1887. package/entity-schema/EntitySchemaEmbeddedColumnOptions.js +1 -2
  1888. package/entity-schema/EntitySchemaEmbeddedColumnOptions.js.map +1 -1
  1889. package/entity-schema/EntitySchemaEmbeddedError.js +1 -2
  1890. package/entity-schema/EntitySchemaEmbeddedError.js.map +1 -1
  1891. package/entity-schema/EntitySchemaExclusionOptions.d.ts +5 -0
  1892. package/entity-schema/EntitySchemaExclusionOptions.js +1 -2
  1893. package/entity-schema/EntitySchemaExclusionOptions.js.map +1 -1
  1894. package/entity-schema/EntitySchemaForeignKeyOptions.d.ts +2 -2
  1895. package/entity-schema/EntitySchemaForeignKeyOptions.js +1 -2
  1896. package/entity-schema/EntitySchemaForeignKeyOptions.js.map +1 -1
  1897. package/entity-schema/EntitySchemaIndexOptions.js +1 -2
  1898. package/entity-schema/EntitySchemaIndexOptions.js.map +1 -1
  1899. package/entity-schema/EntitySchemaInheritanceOptions.d.ts +1 -1
  1900. package/entity-schema/EntitySchemaInheritanceOptions.js +1 -2
  1901. package/entity-schema/EntitySchemaInheritanceOptions.js.map +1 -1
  1902. package/entity-schema/EntitySchemaOptions.d.ts +16 -14
  1903. package/entity-schema/EntitySchemaOptions.js +1 -2
  1904. package/entity-schema/EntitySchemaOptions.js.map +1 -1
  1905. package/entity-schema/EntitySchemaRelationIdOptions.d.ts +1 -1
  1906. package/entity-schema/EntitySchemaRelationIdOptions.js +1 -2
  1907. package/entity-schema/EntitySchemaRelationIdOptions.js.map +1 -1
  1908. package/entity-schema/EntitySchemaRelationOptions.d.ts +8 -8
  1909. package/entity-schema/EntitySchemaRelationOptions.js +1 -2
  1910. package/entity-schema/EntitySchemaRelationOptions.js.map +1 -1
  1911. package/entity-schema/EntitySchemaTransformer.d.ts +2 -1
  1912. package/entity-schema/EntitySchemaTransformer.js +3 -5
  1913. package/entity-schema/EntitySchemaTransformer.js.map +1 -1
  1914. package/entity-schema/EntitySchemaUniqueOptions.d.ts +1 -1
  1915. package/entity-schema/EntitySchemaUniqueOptions.js +1 -2
  1916. package/entity-schema/EntitySchemaUniqueOptions.js.map +1 -1
  1917. package/error/AlreadyHasActiveConnectionError.js +1 -2
  1918. package/error/AlreadyHasActiveConnectionError.js.map +1 -1
  1919. package/error/CannotAttachTreeChildrenEntityError.js +1 -2
  1920. package/error/CannotAttachTreeChildrenEntityError.js.map +1 -1
  1921. package/error/CannotConnectAlreadyConnectedError.d.ts +1 -1
  1922. package/error/CannotConnectAlreadyConnectedError.js +3 -4
  1923. package/error/CannotConnectAlreadyConnectedError.js.map +1 -1
  1924. package/error/CannotCreateEntityIdMapError.d.ts +1 -1
  1925. package/error/CannotCreateEntityIdMapError.js +1 -2
  1926. package/error/CannotCreateEntityIdMapError.js.map +1 -1
  1927. package/error/CannotDetermineEntityError.js +1 -2
  1928. package/error/CannotDetermineEntityError.js.map +1 -1
  1929. package/error/CannotExecuteNotConnectedError.d.ts +1 -1
  1930. package/error/CannotExecuteNotConnectedError.js +3 -4
  1931. package/error/CannotExecuteNotConnectedError.js.map +1 -1
  1932. package/error/CannotGetEntityManagerNotConnectedError.js +1 -2
  1933. package/error/CannotGetEntityManagerNotConnectedError.js.map +1 -1
  1934. package/error/CannotReflectMethodParameterTypeError.js +1 -2
  1935. package/error/CannotReflectMethodParameterTypeError.js.map +1 -1
  1936. package/error/CircularRelationsError.js +1 -2
  1937. package/error/CircularRelationsError.js.map +1 -1
  1938. package/error/ColumnTypeUndefinedError.js +1 -2
  1939. package/error/ColumnTypeUndefinedError.js.map +1 -1
  1940. package/error/ConnectionIsNotSetError.js +1 -2
  1941. package/error/ConnectionIsNotSetError.js.map +1 -1
  1942. package/error/ConnectionNotFoundError.js +1 -2
  1943. package/error/ConnectionNotFoundError.js.map +1 -1
  1944. package/error/DataTypeNotSupportedError.d.ts +3 -3
  1945. package/error/DataTypeNotSupportedError.js +1 -2
  1946. package/error/DataTypeNotSupportedError.js.map +1 -1
  1947. package/error/DriverOptionNotSetError.js +1 -2
  1948. package/error/DriverOptionNotSetError.js.map +1 -1
  1949. package/error/DriverPackageNotInstalledError.js +1 -2
  1950. package/error/DriverPackageNotInstalledError.js.map +1 -1
  1951. package/error/EntityMetadataNotFoundError.d.ts +1 -1
  1952. package/error/EntityMetadataNotFoundError.js +1 -2
  1953. package/error/EntityMetadataNotFoundError.js.map +1 -1
  1954. package/error/EntityNotFoundError.d.ts +1 -1
  1955. package/error/EntityNotFoundError.js +1 -2
  1956. package/error/EntityNotFoundError.js.map +1 -1
  1957. package/error/EntityPropertyNotFoundError.d.ts +1 -1
  1958. package/error/EntityPropertyNotFoundError.js +1 -2
  1959. package/error/EntityPropertyNotFoundError.js.map +1 -1
  1960. package/error/FindRelationsNotFoundError.js +1 -2
  1961. package/error/FindRelationsNotFoundError.js.map +1 -1
  1962. package/error/ForbiddenTransactionModeOverrideError.d.ts +1 -1
  1963. package/error/ForbiddenTransactionModeOverrideError.js +1 -2
  1964. package/error/ForbiddenTransactionModeOverrideError.js.map +1 -1
  1965. package/error/InitializedRelationError.d.ts +1 -2
  1966. package/error/InitializedRelationError.js +1 -3
  1967. package/error/InitializedRelationError.js.map +1 -1
  1968. package/error/InsertValuesMissingError.js +1 -2
  1969. package/error/InsertValuesMissingError.js.map +1 -1
  1970. package/error/LimitOnUpdateNotSupportedError.js +1 -2
  1971. package/error/LimitOnUpdateNotSupportedError.js.map +1 -1
  1972. package/error/LockNotSupportedOnGivenDriverError.js +1 -2
  1973. package/error/LockNotSupportedOnGivenDriverError.js.map +1 -1
  1974. package/error/MetadataAlreadyExistsError.js +1 -2
  1975. package/error/MetadataAlreadyExistsError.js.map +1 -1
  1976. package/error/MetadataWithSuchNameAlreadyExistsError.js +1 -2
  1977. package/error/MetadataWithSuchNameAlreadyExistsError.js.map +1 -1
  1978. package/error/MissingDeleteDateColumnError.d.ts +1 -1
  1979. package/error/MissingDeleteDateColumnError.js +1 -2
  1980. package/error/MissingDeleteDateColumnError.js.map +1 -1
  1981. package/error/MissingDriverError.js +1 -2
  1982. package/error/MissingDriverError.js.map +1 -1
  1983. package/error/MissingJoinColumnError.d.ts +2 -2
  1984. package/error/MissingJoinColumnError.js +1 -2
  1985. package/error/MissingJoinColumnError.js.map +1 -1
  1986. package/error/MissingJoinTableError.d.ts +2 -2
  1987. package/error/MissingJoinTableError.js +1 -2
  1988. package/error/MissingJoinTableError.js.map +1 -1
  1989. package/error/MissingPrimaryColumnError.d.ts +1 -1
  1990. package/error/MissingPrimaryColumnError.js +1 -2
  1991. package/error/MissingPrimaryColumnError.js.map +1 -1
  1992. package/error/MustBeEntityError.js +1 -2
  1993. package/error/MustBeEntityError.js.map +1 -1
  1994. package/error/NestedSetMultipleRootError.js +1 -2
  1995. package/error/NestedSetMultipleRootError.js.map +1 -1
  1996. package/error/NoConnectionForRepositoryError.d.ts +1 -1
  1997. package/error/NoConnectionForRepositoryError.js +4 -5
  1998. package/error/NoConnectionForRepositoryError.js.map +1 -1
  1999. package/error/NoConnectionOptionError.js +1 -2
  2000. package/error/NoConnectionOptionError.js.map +1 -1
  2001. package/error/NoNeedToReleaseEntityManagerError.js +1 -2
  2002. package/error/NoNeedToReleaseEntityManagerError.js.map +1 -1
  2003. package/error/NoVersionOrUpdateDateColumnError.js +1 -2
  2004. package/error/NoVersionOrUpdateDateColumnError.js.map +1 -1
  2005. package/error/OffsetWithoutLimitNotSupportedError.js +1 -2
  2006. package/error/OffsetWithoutLimitNotSupportedError.js.map +1 -1
  2007. package/error/OptimisticLockCanNotBeUsedError.js +1 -2
  2008. package/error/OptimisticLockCanNotBeUsedError.js.map +1 -1
  2009. package/error/OptimisticLockVersionMismatchError.js +1 -2
  2010. package/error/OptimisticLockVersionMismatchError.js.map +1 -1
  2011. package/error/PersistedEntityNotFoundError.js +1 -2
  2012. package/error/PersistedEntityNotFoundError.js.map +1 -1
  2013. package/error/PessimisticLockTransactionRequiredError.js +1 -2
  2014. package/error/PessimisticLockTransactionRequiredError.js.map +1 -1
  2015. package/error/PrimaryColumnCannotBeNullableError.js +1 -2
  2016. package/error/PrimaryColumnCannotBeNullableError.js.map +1 -1
  2017. package/error/QueryFailedError.js +1 -2
  2018. package/error/QueryFailedError.js.map +1 -1
  2019. package/error/QueryRunnerAlreadyReleasedError.js +1 -2
  2020. package/error/QueryRunnerAlreadyReleasedError.js.map +1 -1
  2021. package/error/QueryRunnerProviderAlreadyReleasedError.js +1 -2
  2022. package/error/QueryRunnerProviderAlreadyReleasedError.js.map +1 -1
  2023. package/error/RepositoryNotTreeError.d.ts +1 -1
  2024. package/error/RepositoryNotTreeError.js +1 -2
  2025. package/error/RepositoryNotTreeError.js.map +1 -1
  2026. package/error/ReturningStatementNotSupportedError.js +1 -2
  2027. package/error/ReturningStatementNotSupportedError.js.map +1 -1
  2028. package/error/SubjectRemovedAndUpdatedError.d.ts +1 -1
  2029. package/error/SubjectRemovedAndUpdatedError.js +1 -2
  2030. package/error/SubjectRemovedAndUpdatedError.js.map +1 -1
  2031. package/error/SubjectWithoutIdentifierError.d.ts +1 -1
  2032. package/error/SubjectWithoutIdentifierError.js +1 -2
  2033. package/error/SubjectWithoutIdentifierError.js.map +1 -1
  2034. package/error/TransactionAlreadyStartedError.js +1 -2
  2035. package/error/TransactionAlreadyStartedError.js.map +1 -1
  2036. package/error/TransactionNotStartedError.js +1 -2
  2037. package/error/TransactionNotStartedError.js.map +1 -1
  2038. package/error/TreeRepositoryNotSupportedError.d.ts +1 -1
  2039. package/error/TreeRepositoryNotSupportedError.js +1 -2
  2040. package/error/TreeRepositoryNotSupportedError.js.map +1 -1
  2041. package/error/TypeORMError.js +1 -2
  2042. package/error/TypeORMError.js.map +1 -1
  2043. package/error/UpdateValuesMissingError.js +1 -2
  2044. package/error/UpdateValuesMissingError.js.map +1 -1
  2045. package/error/UsingJoinColumnIsNotAllowedError.d.ts +2 -2
  2046. package/error/UsingJoinColumnIsNotAllowedError.js +1 -2
  2047. package/error/UsingJoinColumnIsNotAllowedError.js.map +1 -1
  2048. package/error/UsingJoinColumnOnlyOnOneSideAllowedError.d.ts +2 -2
  2049. package/error/UsingJoinColumnOnlyOnOneSideAllowedError.js +1 -2
  2050. package/error/UsingJoinColumnOnlyOnOneSideAllowedError.js.map +1 -1
  2051. package/error/UsingJoinTableIsNotAllowedError.d.ts +2 -2
  2052. package/error/UsingJoinTableIsNotAllowedError.js +1 -2
  2053. package/error/UsingJoinTableIsNotAllowedError.js.map +1 -1
  2054. package/error/UsingJoinTableOnlyOnOneSideAllowedError.d.ts +2 -2
  2055. package/error/UsingJoinTableOnlyOnOneSideAllowedError.js +1 -2
  2056. package/error/UsingJoinTableOnlyOnOneSideAllowedError.js.map +1 -1
  2057. package/error/index.d.ts +0 -3
  2058. package/error/index.js +1 -5
  2059. package/error/index.js.map +1 -1
  2060. package/find-options/EqualOperator.js +1 -2
  2061. package/find-options/EqualOperator.js.map +1 -1
  2062. package/find-options/FindManyOptions.d.ts +1 -1
  2063. package/find-options/FindManyOptions.js +1 -2
  2064. package/find-options/FindManyOptions.js.map +1 -1
  2065. package/find-options/FindOneOptions.d.ts +7 -14
  2066. package/find-options/FindOneOptions.js +1 -2
  2067. package/find-options/FindOneOptions.js.map +1 -1
  2068. package/find-options/FindOperator.d.ts +3 -3
  2069. package/find-options/FindOperator.js +1 -2
  2070. package/find-options/FindOperator.js.map +1 -1
  2071. package/find-options/FindOperatorType.js +1 -2
  2072. package/find-options/FindOperatorType.js.map +1 -1
  2073. package/find-options/FindOptionsOrder.d.ts +2 -2
  2074. package/find-options/FindOptionsOrder.js +1 -2
  2075. package/find-options/FindOptionsOrder.js.map +1 -1
  2076. package/find-options/FindOptionsRelations.d.ts +2 -9
  2077. package/find-options/FindOptionsRelations.js +1 -2
  2078. package/find-options/FindOptionsRelations.js.map +1 -1
  2079. package/find-options/FindOptionsSelect.d.ts +2 -9
  2080. package/find-options/FindOptionsSelect.js +1 -2
  2081. package/find-options/FindOptionsSelect.js.map +1 -1
  2082. package/find-options/FindOptionsUtils.d.ts +46 -11
  2083. package/find-options/FindOptionsUtils.js +104 -22
  2084. package/find-options/FindOptionsUtils.js.map +1 -1
  2085. package/find-options/FindOptionsWhere.d.ts +4 -4
  2086. package/find-options/FindOptionsWhere.js +1 -2
  2087. package/find-options/FindOptionsWhere.js.map +1 -1
  2088. package/find-options/FindTreeOptions.js +1 -2
  2089. package/find-options/FindTreeOptions.js.map +1 -1
  2090. package/find-options/OrderByCondition.d.ts +0 -2
  2091. package/find-options/OrderByCondition.js +1 -2
  2092. package/find-options/OrderByCondition.js.map +1 -1
  2093. package/find-options/mongodb/MongoFindManyOptions.d.ts +1 -1
  2094. package/find-options/mongodb/MongoFindManyOptions.js +1 -2
  2095. package/find-options/mongodb/MongoFindManyOptions.js.map +1 -1
  2096. package/find-options/mongodb/MongoFindOneOptions.d.ts +2 -2
  2097. package/find-options/mongodb/MongoFindOneOptions.js +1 -2
  2098. package/find-options/mongodb/MongoFindOneOptions.js.map +1 -1
  2099. package/find-options/operator/And.d.ts +4 -0
  2100. package/find-options/operator/And.js +5 -2
  2101. package/find-options/operator/And.js.map +1 -1
  2102. package/find-options/operator/Any.d.ts +1 -0
  2103. package/find-options/operator/Any.js +2 -2
  2104. package/find-options/operator/Any.js.map +1 -1
  2105. package/find-options/operator/ArrayContainedBy.d.ts +1 -0
  2106. package/find-options/operator/ArrayContainedBy.js +2 -2
  2107. package/find-options/operator/ArrayContainedBy.js.map +1 -1
  2108. package/find-options/operator/ArrayContains.d.ts +1 -0
  2109. package/find-options/operator/ArrayContains.js +2 -2
  2110. package/find-options/operator/ArrayContains.js.map +1 -1
  2111. package/find-options/operator/ArrayOverlap.d.ts +1 -0
  2112. package/find-options/operator/ArrayOverlap.js +2 -2
  2113. package/find-options/operator/ArrayOverlap.js.map +1 -1
  2114. package/find-options/operator/Between.d.ts +2 -0
  2115. package/find-options/operator/Between.js +3 -2
  2116. package/find-options/operator/Between.js.map +1 -1
  2117. package/find-options/operator/Equal.d.ts +2 -1
  2118. package/find-options/operator/Equal.js +2 -2
  2119. package/find-options/operator/Equal.js.map +1 -1
  2120. package/find-options/operator/ILike.d.ts +1 -0
  2121. package/find-options/operator/ILike.js +2 -2
  2122. package/find-options/operator/ILike.js.map +1 -1
  2123. package/find-options/operator/In.d.ts +1 -0
  2124. package/find-options/operator/In.js +2 -2
  2125. package/find-options/operator/In.js.map +1 -1
  2126. package/find-options/operator/IsNull.js +1 -2
  2127. package/find-options/operator/IsNull.js.map +1 -1
  2128. package/find-options/operator/JsonContains.d.ts +1 -0
  2129. package/find-options/operator/JsonContains.js +2 -2
  2130. package/find-options/operator/JsonContains.js.map +1 -1
  2131. package/find-options/operator/LessThan.d.ts +1 -0
  2132. package/find-options/operator/LessThan.js +2 -2
  2133. package/find-options/operator/LessThan.js.map +1 -1
  2134. package/find-options/operator/LessThanOrEqual.d.ts +1 -0
  2135. package/find-options/operator/LessThanOrEqual.js +2 -2
  2136. package/find-options/operator/LessThanOrEqual.js.map +1 -1
  2137. package/find-options/operator/Like.d.ts +1 -0
  2138. package/find-options/operator/Like.js +2 -2
  2139. package/find-options/operator/Like.js.map +1 -1
  2140. package/find-options/operator/MoreThan.d.ts +1 -0
  2141. package/find-options/operator/MoreThan.js +2 -2
  2142. package/find-options/operator/MoreThan.js.map +1 -1
  2143. package/find-options/operator/MoreThanOrEqual.d.ts +1 -0
  2144. package/find-options/operator/MoreThanOrEqual.js +2 -2
  2145. package/find-options/operator/MoreThanOrEqual.js.map +1 -1
  2146. package/find-options/operator/Not.d.ts +1 -0
  2147. package/find-options/operator/Not.js +2 -2
  2148. package/find-options/operator/Not.js.map +1 -1
  2149. package/find-options/operator/Or.d.ts +4 -0
  2150. package/find-options/operator/Or.js +5 -2
  2151. package/find-options/operator/Or.js.map +1 -1
  2152. package/find-options/operator/Raw.d.ts +5 -1
  2153. package/find-options/operator/Raw.js +1 -2
  2154. package/find-options/operator/Raw.js.map +1 -1
  2155. package/globals.d.ts +2 -114
  2156. package/globals.js +7 -169
  2157. package/globals.js.map +1 -1
  2158. package/index.d.ts +62 -69
  2159. package/index.js +2 -52
  2160. package/index.js.map +1 -1
  2161. package/index.mjs +0 -80
  2162. package/logger/AbstractLogger.d.ts +26 -3
  2163. package/logger/AbstractLogger.js +25 -3
  2164. package/logger/AbstractLogger.js.map +1 -1
  2165. package/logger/AdvancedConsoleLogger.d.ts +5 -2
  2166. package/logger/AdvancedConsoleLogger.js +4 -2
  2167. package/logger/AdvancedConsoleLogger.js.map +1 -1
  2168. package/logger/DebugLogger.d.ts +6 -2
  2169. package/logger/DebugLogger.js +5 -2
  2170. package/logger/DebugLogger.js.map +1 -1
  2171. package/logger/FileLogger.d.ts +7 -3
  2172. package/logger/FileLogger.js +5 -2
  2173. package/logger/FileLogger.js.map +1 -1
  2174. package/logger/FormattedConsoleLogger.d.ts +5 -2
  2175. package/logger/FormattedConsoleLogger.js +4 -2
  2176. package/logger/FormattedConsoleLogger.js.map +1 -1
  2177. package/logger/Logger.d.ts +1 -1
  2178. package/logger/Logger.js +1 -2
  2179. package/logger/Logger.js.map +1 -1
  2180. package/logger/LoggerFactory.d.ts +4 -2
  2181. package/logger/LoggerFactory.js +3 -2
  2182. package/logger/LoggerFactory.js.map +1 -1
  2183. package/logger/LoggerOptions.d.ts +1 -1
  2184. package/logger/LoggerOptions.js +1 -2
  2185. package/logger/LoggerOptions.js.map +1 -1
  2186. package/logger/SimpleConsoleLogger.d.ts +5 -2
  2187. package/logger/SimpleConsoleLogger.js +4 -2
  2188. package/logger/SimpleConsoleLogger.js.map +1 -1
  2189. package/metadata/CheckMetadata.d.ts +4 -3
  2190. package/metadata/CheckMetadata.js +2 -2
  2191. package/metadata/CheckMetadata.js.map +1 -1
  2192. package/metadata/ColumnMetadata.d.ts +24 -23
  2193. package/metadata/ColumnMetadata.js +64 -57
  2194. package/metadata/ColumnMetadata.js.map +1 -1
  2195. package/metadata/EmbeddedMetadata.d.ts +14 -22
  2196. package/metadata/EmbeddedMetadata.js +4 -15
  2197. package/metadata/EmbeddedMetadata.js.map +1 -1
  2198. package/metadata/EntityListenerMetadata.d.ts +9 -5
  2199. package/metadata/EntityListenerMetadata.js +5 -2
  2200. package/metadata/EntityListenerMetadata.js.map +1 -1
  2201. package/metadata/EntityMetadata.d.ts +60 -35
  2202. package/metadata/EntityMetadata.js +52 -42
  2203. package/metadata/EntityMetadata.js.map +1 -1
  2204. package/metadata/ExclusionMetadata.d.ts +9 -3
  2205. package/metadata/ExclusionMetadata.js +3 -2
  2206. package/metadata/ExclusionMetadata.js.map +1 -1
  2207. package/metadata/ForeignKeyMetadata.d.ts +7 -6
  2208. package/metadata/ForeignKeyMetadata.js +2 -2
  2209. package/metadata/ForeignKeyMetadata.js.map +1 -1
  2210. package/metadata/IndexMetadata.d.ts +13 -5
  2211. package/metadata/IndexMetadata.js +20 -7
  2212. package/metadata/IndexMetadata.js.map +1 -1
  2213. package/metadata/RelationIdMetadata.d.ts +6 -5
  2214. package/metadata/RelationIdMetadata.js +2 -2
  2215. package/metadata/RelationIdMetadata.js.map +1 -1
  2216. package/metadata/RelationMetadata.d.ts +27 -16
  2217. package/metadata/RelationMetadata.js +12 -2
  2218. package/metadata/RelationMetadata.js.map +1 -1
  2219. package/metadata/UniqueMetadata.d.ts +7 -6
  2220. package/metadata/UniqueMetadata.js +12 -6
  2221. package/metadata/UniqueMetadata.js.map +1 -1
  2222. package/metadata/types/ClosureTreeOptions.d.ts +1 -1
  2223. package/metadata/types/ClosureTreeOptions.js +1 -2
  2224. package/metadata/types/ClosureTreeOptions.js.map +1 -1
  2225. package/metadata/types/DeferrableType.js +1 -2
  2226. package/metadata/types/DeferrableType.js.map +1 -1
  2227. package/metadata/types/EventListenerTypes.js +12 -13
  2228. package/metadata/types/EventListenerTypes.js.map +1 -1
  2229. package/metadata/types/OnDeleteType.js +1 -2
  2230. package/metadata/types/OnDeleteType.js.map +1 -1
  2231. package/metadata/types/OnUpdateType.js +1 -2
  2232. package/metadata/types/OnUpdateType.js.map +1 -1
  2233. package/metadata/types/PropertyTypeInFunction.js +1 -2
  2234. package/metadata/types/PropertyTypeInFunction.js.map +1 -1
  2235. package/metadata/types/RelationTypeInFunction.d.ts +1 -1
  2236. package/metadata/types/RelationTypeInFunction.js +1 -2
  2237. package/metadata/types/RelationTypeInFunction.js.map +1 -1
  2238. package/metadata/types/RelationTypes.js +1 -2
  2239. package/metadata/types/RelationTypes.js.map +1 -1
  2240. package/metadata/types/TableTypes.js +1 -2
  2241. package/metadata/types/TableTypes.js.map +1 -1
  2242. package/metadata/types/TreeTypes.js +1 -2
  2243. package/metadata/types/TreeTypes.js.map +1 -1
  2244. package/metadata-args/CheckMetadataArgs.js +1 -2
  2245. package/metadata-args/CheckMetadataArgs.js.map +1 -1
  2246. package/metadata-args/ColumnMetadataArgs.d.ts +2 -2
  2247. package/metadata-args/ColumnMetadataArgs.js +1 -2
  2248. package/metadata-args/ColumnMetadataArgs.js.map +1 -1
  2249. package/metadata-args/DiscriminatorValueMetadataArgs.js +1 -2
  2250. package/metadata-args/DiscriminatorValueMetadataArgs.js.map +1 -1
  2251. package/metadata-args/EmbeddedMetadataArgs.js +1 -2
  2252. package/metadata-args/EmbeddedMetadataArgs.js.map +1 -1
  2253. package/metadata-args/EntityListenerMetadataArgs.d.ts +1 -1
  2254. package/metadata-args/EntityListenerMetadataArgs.js +1 -2
  2255. package/metadata-args/EntityListenerMetadataArgs.js.map +1 -1
  2256. package/metadata-args/EntitySubscriberMetadataArgs.js +1 -2
  2257. package/metadata-args/EntitySubscriberMetadataArgs.js.map +1 -1
  2258. package/metadata-args/ExclusionMetadataArgs.d.ts +5 -0
  2259. package/metadata-args/ExclusionMetadataArgs.js +1 -2
  2260. package/metadata-args/ExclusionMetadataArgs.js.map +1 -1
  2261. package/metadata-args/ForeignKeyMetadataArgs.d.ts +5 -5
  2262. package/metadata-args/ForeignKeyMetadataArgs.js +1 -2
  2263. package/metadata-args/ForeignKeyMetadataArgs.js.map +1 -1
  2264. package/metadata-args/GeneratedMetadataArgs.js +1 -2
  2265. package/metadata-args/GeneratedMetadataArgs.js.map +1 -1
  2266. package/metadata-args/IndexMetadataArgs.d.ts +7 -0
  2267. package/metadata-args/IndexMetadataArgs.js +1 -2
  2268. package/metadata-args/IndexMetadataArgs.js.map +1 -1
  2269. package/metadata-args/InheritanceMetadataArgs.d.ts +1 -1
  2270. package/metadata-args/InheritanceMetadataArgs.js +1 -2
  2271. package/metadata-args/InheritanceMetadataArgs.js.map +1 -1
  2272. package/metadata-args/JoinColumnMetadataArgs.js +1 -2
  2273. package/metadata-args/JoinColumnMetadataArgs.js.map +1 -1
  2274. package/metadata-args/JoinTableMetadataArgs.d.ts +1 -1
  2275. package/metadata-args/JoinTableMetadataArgs.js +1 -2
  2276. package/metadata-args/JoinTableMetadataArgs.js.map +1 -1
  2277. package/metadata-args/MetadataArgsStorage.d.ts +29 -27
  2278. package/metadata-args/MetadataArgsStorage.js +9 -7
  2279. package/metadata-args/MetadataArgsStorage.js.map +1 -1
  2280. package/metadata-args/NamingStrategyMetadataArgs.js +1 -2
  2281. package/metadata-args/NamingStrategyMetadataArgs.js.map +1 -1
  2282. package/metadata-args/RelationIdMetadataArgs.d.ts +1 -1
  2283. package/metadata-args/RelationIdMetadataArgs.js +1 -2
  2284. package/metadata-args/RelationIdMetadataArgs.js.map +1 -1
  2285. package/metadata-args/RelationMetadataArgs.d.ts +4 -4
  2286. package/metadata-args/RelationMetadataArgs.js +1 -2
  2287. package/metadata-args/RelationMetadataArgs.js.map +1 -1
  2288. package/metadata-args/TableMetadataArgs.d.ts +5 -4
  2289. package/metadata-args/TableMetadataArgs.js +1 -2
  2290. package/metadata-args/TableMetadataArgs.js.map +1 -1
  2291. package/metadata-args/TransactionEntityMetadataArgs.d.ts +1 -1
  2292. package/metadata-args/TransactionEntityMetadataArgs.js +1 -2
  2293. package/metadata-args/TransactionEntityMetadataArgs.js.map +1 -1
  2294. package/metadata-args/TransactionRepositoryMetadataArgs.d.ts +1 -1
  2295. package/metadata-args/TransactionRepositoryMetadataArgs.js +1 -2
  2296. package/metadata-args/TransactionRepositoryMetadataArgs.js.map +1 -1
  2297. package/metadata-args/TreeMetadataArgs.d.ts +2 -2
  2298. package/metadata-args/TreeMetadataArgs.js +1 -2
  2299. package/metadata-args/TreeMetadataArgs.js.map +1 -1
  2300. package/metadata-args/UniqueMetadataArgs.d.ts +1 -1
  2301. package/metadata-args/UniqueMetadataArgs.js +1 -2
  2302. package/metadata-args/UniqueMetadataArgs.js.map +1 -1
  2303. package/metadata-args/types/ColumnMode.js +1 -2
  2304. package/metadata-args/types/ColumnMode.js.map +1 -1
  2305. package/metadata-builder/ClosureJunctionEntityMetadataBuilder.d.ts +4 -3
  2306. package/metadata-builder/ClosureJunctionEntityMetadataBuilder.js +10 -15
  2307. package/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
  2308. package/metadata-builder/EntityMetadataBuilder.d.ts +16 -6
  2309. package/metadata-builder/EntityMetadataBuilder.js +50 -61
  2310. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  2311. package/metadata-builder/EntityMetadataValidator.d.ts +9 -2
  2312. package/metadata-builder/EntityMetadataValidator.js +8 -7
  2313. package/metadata-builder/EntityMetadataValidator.js.map +1 -1
  2314. package/metadata-builder/JunctionEntityMetadataBuilder.d.ts +11 -5
  2315. package/metadata-builder/JunctionEntityMetadataBuilder.js +33 -36
  2316. package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  2317. package/metadata-builder/MetadataUtils.d.ts +5 -0
  2318. package/metadata-builder/MetadataUtils.js +6 -2
  2319. package/metadata-builder/MetadataUtils.js.map +1 -1
  2320. package/metadata-builder/RelationJoinColumnBuilder.d.ts +24 -12
  2321. package/metadata-builder/RelationJoinColumnBuilder.js +30 -22
  2322. package/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  2323. package/migration/Migration.d.ts +1 -1
  2324. package/migration/Migration.js +1 -2
  2325. package/migration/Migration.js.map +1 -1
  2326. package/migration/MigrationExecutor.d.ts +16 -9
  2327. package/migration/MigrationExecutor.js +76 -64
  2328. package/migration/MigrationExecutor.js.map +1 -1
  2329. package/migration/MigrationInterface.d.ts +1 -1
  2330. package/migration/MigrationInterface.js +1 -2
  2331. package/migration/MigrationInterface.js.map +1 -1
  2332. package/naming-strategy/DefaultNamingStrategy.d.ts +5 -5
  2333. package/naming-strategy/DefaultNamingStrategy.js +4 -5
  2334. package/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  2335. package/naming-strategy/LegacyOracleNamingStrategy.d.ts +1 -1
  2336. package/naming-strategy/LegacyOracleNamingStrategy.js +1 -2
  2337. package/naming-strategy/LegacyOracleNamingStrategy.js.map +1 -1
  2338. package/naming-strategy/NamingStrategyInterface.d.ts +3 -5
  2339. package/naming-strategy/NamingStrategyInterface.js +1 -2
  2340. package/naming-strategy/NamingStrategyInterface.js.map +1 -1
  2341. package/package.json +181 -1
  2342. package/persistence/EntityPersistExecutor.d.ts +7 -7
  2343. package/persistence/EntityPersistExecutor.js +6 -7
  2344. package/persistence/EntityPersistExecutor.js.map +1 -1
  2345. package/persistence/Subject.d.ts +5 -5
  2346. package/persistence/Subject.js +3 -3
  2347. package/persistence/Subject.js.map +1 -1
  2348. package/persistence/SubjectChangeMap.d.ts +3 -3
  2349. package/persistence/SubjectChangeMap.js +1 -2
  2350. package/persistence/SubjectChangeMap.js.map +1 -1
  2351. package/persistence/SubjectChangedColumnsComputer.d.ts +5 -1
  2352. package/persistence/SubjectChangedColumnsComputer.js +27 -19
  2353. package/persistence/SubjectChangedColumnsComputer.js.map +1 -1
  2354. package/persistence/SubjectDatabaseEntityLoader.d.ts +3 -2
  2355. package/persistence/SubjectDatabaseEntityLoader.js +8 -5
  2356. package/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  2357. package/persistence/SubjectExecutor.d.ts +7 -4
  2358. package/persistence/SubjectExecutor.js +21 -11
  2359. package/persistence/SubjectExecutor.js.map +1 -1
  2360. package/persistence/SubjectTopologicalSorter.d.ts +6 -2
  2361. package/persistence/SubjectTopologicalSorter.js +15 -2
  2362. package/persistence/SubjectTopologicalSorter.js.map +1 -1
  2363. package/persistence/subject-builder/CascadesSubjectBuilder.d.ts +5 -1
  2364. package/persistence/subject-builder/CascadesSubjectBuilder.js +5 -2
  2365. package/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  2366. package/persistence/subject-builder/ManyToManySubjectBuilder.d.ts +16 -6
  2367. package/persistence/subject-builder/ManyToManySubjectBuilder.js +15 -6
  2368. package/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  2369. package/persistence/subject-builder/OneToManySubjectBuilder.d.ts +14 -7
  2370. package/persistence/subject-builder/OneToManySubjectBuilder.js +14 -8
  2371. package/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  2372. package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.d.ts +14 -7
  2373. package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +14 -8
  2374. package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
  2375. package/persistence/tree/ClosureSubjectExecutor.d.ts +6 -2
  2376. package/persistence/tree/ClosureSubjectExecutor.js +14 -11
  2377. package/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  2378. package/persistence/tree/MaterializedPathSubjectExecutor.d.ts +4 -2
  2379. package/persistence/tree/MaterializedPathSubjectExecutor.js +5 -3
  2380. package/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  2381. package/persistence/tree/NestedSetSubjectExecutor.d.ts +10 -4
  2382. package/persistence/tree/NestedSetSubjectExecutor.js +13 -8
  2383. package/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
  2384. package/platform/PlatformTools.d.ts +12 -11
  2385. package/platform/PlatformTools.js +17 -29
  2386. package/platform/PlatformTools.js.map +1 -1
  2387. package/query-builder/Alias.d.ts +1 -1
  2388. package/query-builder/Alias.js +1 -2
  2389. package/query-builder/Alias.js.map +1 -1
  2390. package/query-builder/Brackets.d.ts +2 -1
  2391. package/query-builder/Brackets.js +2 -2
  2392. package/query-builder/Brackets.js.map +1 -1
  2393. package/query-builder/DeleteQueryBuilder.d.ts +17 -6
  2394. package/query-builder/DeleteQueryBuilder.js +17 -5
  2395. package/query-builder/DeleteQueryBuilder.js.map +1 -1
  2396. package/query-builder/InsertOrUpdateOptions.d.ts +3 -3
  2397. package/query-builder/InsertOrUpdateOptions.js +1 -2
  2398. package/query-builder/InsertOrUpdateOptions.js.map +1 -1
  2399. package/query-builder/InsertQueryBuilder.d.ts +34 -29
  2400. package/query-builder/InsertQueryBuilder.js +289 -160
  2401. package/query-builder/InsertQueryBuilder.js.map +1 -1
  2402. package/query-builder/JoinAttribute.d.ts +7 -7
  2403. package/query-builder/JoinAttribute.js +9 -21
  2404. package/query-builder/JoinAttribute.js.map +1 -1
  2405. package/query-builder/JoinOptions.js +1 -2
  2406. package/query-builder/JoinOptions.js.map +1 -1
  2407. package/query-builder/NotBrackets.js +1 -2
  2408. package/query-builder/NotBrackets.js.map +1 -1
  2409. package/query-builder/QueryBuilder.d.ts +51 -33
  2410. package/query-builder/QueryBuilder.js +81 -92
  2411. package/query-builder/QueryBuilder.js.map +1 -1
  2412. package/query-builder/QueryBuilderCte.js +1 -2
  2413. package/query-builder/QueryBuilderCte.js.map +1 -1
  2414. package/query-builder/QueryBuilderUtils.d.ts +1 -0
  2415. package/query-builder/QueryBuilderUtils.js +2 -2
  2416. package/query-builder/QueryBuilderUtils.js.map +1 -1
  2417. package/query-builder/QueryExpressionMap.d.ts +29 -30
  2418. package/query-builder/QueryExpressionMap.js +22 -29
  2419. package/query-builder/QueryExpressionMap.js.map +1 -1
  2420. package/query-builder/QueryPartialEntity.d.ts +1 -1
  2421. package/query-builder/QueryPartialEntity.js +1 -2
  2422. package/query-builder/QueryPartialEntity.js.map +1 -1
  2423. package/query-builder/RelationIdLoader.d.ts +39 -11
  2424. package/query-builder/RelationIdLoader.js +100 -63
  2425. package/query-builder/RelationIdLoader.js.map +1 -1
  2426. package/query-builder/RelationLoader.d.ts +49 -14
  2427. package/query-builder/RelationLoader.js +80 -26
  2428. package/query-builder/RelationLoader.js.map +1 -1
  2429. package/query-builder/RelationQueryBuilder.d.ts +7 -11
  2430. package/query-builder/RelationQueryBuilder.js +8 -13
  2431. package/query-builder/RelationQueryBuilder.js.map +1 -1
  2432. package/query-builder/RelationRemover.d.ts +3 -2
  2433. package/query-builder/RelationRemover.js +2 -2
  2434. package/query-builder/RelationRemover.js.map +1 -1
  2435. package/query-builder/RelationUpdater.d.ts +3 -2
  2436. package/query-builder/RelationUpdater.js +4 -4
  2437. package/query-builder/RelationUpdater.js.map +1 -1
  2438. package/query-builder/ReturningOption.d.ts +4 -0
  2439. package/query-builder/ReturningOption.js +3 -0
  2440. package/query-builder/ReturningOption.js.map +1 -0
  2441. package/query-builder/ReturningResultsEntityUpdator.d.ts +10 -6
  2442. package/query-builder/ReturningResultsEntityUpdator.js +13 -10
  2443. package/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
  2444. package/query-builder/SelectQuery.js +1 -2
  2445. package/query-builder/SelectQuery.js.map +1 -1
  2446. package/query-builder/SelectQueryBuilder.d.ts +71 -33
  2447. package/query-builder/SelectQueryBuilder.js +337 -261
  2448. package/query-builder/SelectQueryBuilder.js.map +1 -1
  2449. package/query-builder/SelectQueryBuilderOption.js +1 -2
  2450. package/query-builder/SelectQueryBuilderOption.js.map +1 -1
  2451. package/query-builder/SoftDeleteQueryBuilder.d.ts +24 -7
  2452. package/query-builder/SoftDeleteQueryBuilder.js +35 -9
  2453. package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  2454. package/query-builder/UpdateQueryBuilder.d.ts +23 -7
  2455. package/query-builder/UpdateQueryBuilder.js +52 -30
  2456. package/query-builder/UpdateQueryBuilder.js.map +1 -1
  2457. package/query-builder/WhereClause.js +1 -2
  2458. package/query-builder/WhereClause.js.map +1 -1
  2459. package/query-builder/WhereExpressionBuilder.d.ts +2 -7
  2460. package/query-builder/WhereExpressionBuilder.js +1 -2
  2461. package/query-builder/WhereExpressionBuilder.js.map +1 -1
  2462. package/query-builder/index.d.ts +3 -0
  2463. package/query-builder/index.js +4 -2
  2464. package/query-builder/index.js.map +1 -1
  2465. package/query-builder/relation-id/RelationIdAttribute.d.ts +4 -4
  2466. package/query-builder/relation-id/RelationIdAttribute.js +1 -2
  2467. package/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
  2468. package/query-builder/relation-id/RelationIdLoadResult.d.ts +1 -1
  2469. package/query-builder/relation-id/RelationIdLoadResult.js +1 -2
  2470. package/query-builder/relation-id/RelationIdLoadResult.js.map +1 -1
  2471. package/query-builder/relation-id/RelationIdLoader.d.ts +6 -6
  2472. package/query-builder/relation-id/RelationIdLoader.js +12 -13
  2473. package/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  2474. package/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.d.ts +1 -1
  2475. package/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js +1 -2
  2476. package/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js.map +1 -1
  2477. package/query-builder/result/DeleteResult.d.ts +1 -1
  2478. package/query-builder/result/DeleteResult.js +1 -2
  2479. package/query-builder/result/DeleteResult.js.map +1 -1
  2480. package/query-builder/result/InsertResult.d.ts +2 -2
  2481. package/query-builder/result/InsertResult.js +1 -2
  2482. package/query-builder/result/InsertResult.js.map +1 -1
  2483. package/query-builder/result/UpdateResult.d.ts +2 -2
  2484. package/query-builder/result/UpdateResult.js +1 -2
  2485. package/query-builder/result/UpdateResult.js.map +1 -1
  2486. package/query-builder/transformer/DocumentToEntityTransformer.d.ts +3 -3
  2487. package/query-builder/transformer/DocumentToEntityTransformer.js +2 -73
  2488. package/query-builder/transformer/DocumentToEntityTransformer.js.map +1 -1
  2489. package/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.d.ts +3 -3
  2490. package/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js +17 -7
  2491. package/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
  2492. package/query-builder/transformer/PlainObjectToNewEntityTransformer.d.ts +6 -2
  2493. package/query-builder/transformer/PlainObjectToNewEntityTransformer.js +5 -2
  2494. package/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
  2495. package/query-builder/transformer/RawSqlResultsToEntityTransformer.d.ts +22 -11
  2496. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js +47 -53
  2497. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  2498. package/query-runner/BaseQueryRunner.d.ts +79 -16
  2499. package/query-runner/BaseQueryRunner.js +96 -34
  2500. package/query-runner/BaseQueryRunner.js.map +1 -1
  2501. package/query-runner/QueryLock.js +4 -3
  2502. package/query-runner/QueryLock.js.map +1 -1
  2503. package/query-runner/QueryResult.js +1 -2
  2504. package/query-runner/QueryResult.js.map +1 -1
  2505. package/query-runner/QueryRunner.d.ts +52 -56
  2506. package/query-runner/QueryRunner.js +1 -2
  2507. package/query-runner/QueryRunner.js.map +1 -1
  2508. package/repository/BaseEntity.d.ts +64 -44
  2509. package/repository/BaseEntity.js +54 -31
  2510. package/repository/BaseEntity.js.map +1 -1
  2511. package/repository/EntityId.d.ts +1 -1
  2512. package/repository/EntityId.js +1 -2
  2513. package/repository/EntityId.js.map +1 -1
  2514. package/repository/FindTreesOptions.js +1 -2
  2515. package/repository/FindTreesOptions.js.map +1 -1
  2516. package/repository/MongoRepository.d.ts +79 -29
  2517. package/repository/MongoRepository.js +71 -26
  2518. package/repository/MongoRepository.js.map +1 -1
  2519. package/repository/RemoveOptions.js +1 -2
  2520. package/repository/RemoveOptions.js.map +1 -1
  2521. package/repository/Repository.d.ts +75 -52
  2522. package/repository/Repository.js +69 -47
  2523. package/repository/Repository.js.map +1 -1
  2524. package/repository/SaveOptions.js +1 -2
  2525. package/repository/SaveOptions.js.map +1 -1
  2526. package/repository/TreeRepository.d.ts +21 -4
  2527. package/repository/TreeRepository.js +27 -11
  2528. package/repository/TreeRepository.js.map +1 -1
  2529. package/repository/UpdateOptions.d.ts +11 -0
  2530. package/repository/UpdateOptions.js +3 -0
  2531. package/repository/UpdateOptions.js.map +1 -0
  2532. package/repository/UpsertOptions.d.ts +8 -2
  2533. package/repository/UpsertOptions.js +1 -2
  2534. package/repository/UpsertOptions.js.map +1 -1
  2535. package/schema-builder/MongoSchemaBuilder.d.ts +4 -4
  2536. package/schema-builder/MongoSchemaBuilder.js +5 -6
  2537. package/schema-builder/MongoSchemaBuilder.js.map +1 -1
  2538. package/schema-builder/RdbmsSchemaBuilder.d.ts +29 -9
  2539. package/schema-builder/RdbmsSchemaBuilder.js +176 -158
  2540. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  2541. package/schema-builder/SchemaBuilder.d.ts +1 -1
  2542. package/schema-builder/SchemaBuilder.js +1 -2
  2543. package/schema-builder/SchemaBuilder.js.map +1 -1
  2544. package/schema-builder/options/TableCheckOptions.js +1 -2
  2545. package/schema-builder/options/TableCheckOptions.js.map +1 -1
  2546. package/schema-builder/options/TableColumnOptions.d.ts +0 -10
  2547. package/schema-builder/options/TableColumnOptions.js +1 -2
  2548. package/schema-builder/options/TableColumnOptions.js.map +1 -1
  2549. package/schema-builder/options/TableExclusionOptions.d.ts +5 -0
  2550. package/schema-builder/options/TableExclusionOptions.js +1 -2
  2551. package/schema-builder/options/TableExclusionOptions.js.map +1 -1
  2552. package/schema-builder/options/TableForeignKeyOptions.js +1 -2
  2553. package/schema-builder/options/TableForeignKeyOptions.js.map +1 -1
  2554. package/schema-builder/options/TableIndexOptions.d.ts +7 -0
  2555. package/schema-builder/options/TableIndexOptions.js +1 -2
  2556. package/schema-builder/options/TableIndexOptions.js.map +1 -1
  2557. package/schema-builder/options/TableIndexTypes.d.ts +1 -0
  2558. package/schema-builder/options/TableIndexTypes.js +3 -0
  2559. package/schema-builder/options/TableIndexTypes.js.map +1 -0
  2560. package/schema-builder/options/TableOptions.d.ts +6 -6
  2561. package/schema-builder/options/TableOptions.js +1 -2
  2562. package/schema-builder/options/TableOptions.js.map +1 -1
  2563. package/schema-builder/options/TableUniqueOptions.js +1 -2
  2564. package/schema-builder/options/TableUniqueOptions.js.map +1 -1
  2565. package/schema-builder/options/ViewOptions.d.ts +3 -2
  2566. package/schema-builder/options/ViewOptions.js +1 -2
  2567. package/schema-builder/options/ViewOptions.js.map +1 -1
  2568. package/schema-builder/table/Table.d.ts +23 -3
  2569. package/schema-builder/table/Table.js +21 -2
  2570. package/schema-builder/table/Table.js.map +1 -1
  2571. package/schema-builder/table/TableCheck.d.ts +3 -2
  2572. package/schema-builder/table/TableCheck.js +2 -2
  2573. package/schema-builder/table/TableCheck.js.map +1 -1
  2574. package/schema-builder/table/TableColumn.d.ts +1 -11
  2575. package/schema-builder/table/TableColumn.js +2 -12
  2576. package/schema-builder/table/TableColumn.js.map +1 -1
  2577. package/schema-builder/table/TableExclusion.d.ts +8 -2
  2578. package/schema-builder/table/TableExclusion.js +5 -2
  2579. package/schema-builder/table/TableExclusion.js.map +1 -1
  2580. package/schema-builder/table/TableForeignKey.d.ts +5 -3
  2581. package/schema-builder/table/TableForeignKey.js +3 -2
  2582. package/schema-builder/table/TableForeignKey.js.map +1 -1
  2583. package/schema-builder/table/TableIndex.d.ts +10 -2
  2584. package/schema-builder/table/TableIndex.js +5 -2
  2585. package/schema-builder/table/TableIndex.js.map +1 -1
  2586. package/schema-builder/table/TableUnique.d.ts +3 -2
  2587. package/schema-builder/table/TableUnique.js +2 -2
  2588. package/schema-builder/table/TableUnique.js.map +1 -1
  2589. package/schema-builder/util/TableUtils.d.ts +3 -3
  2590. package/schema-builder/util/TableUtils.js +1 -4
  2591. package/schema-builder/util/TableUtils.js.map +1 -1
  2592. package/schema-builder/util/ViewUtils.d.ts +3 -1
  2593. package/schema-builder/util/ViewUtils.js +3 -2
  2594. package/schema-builder/util/ViewUtils.js.map +1 -1
  2595. package/schema-builder/view/View.d.ts +11 -3
  2596. package/schema-builder/view/View.js +5 -2
  2597. package/schema-builder/view/View.js.map +1 -1
  2598. package/subscriber/Broadcaster.d.ts +76 -10
  2599. package/subscriber/Broadcaster.js +148 -66
  2600. package/subscriber/Broadcaster.js.map +1 -1
  2601. package/subscriber/BroadcasterResult.js +1 -2
  2602. package/subscriber/BroadcasterResult.js.map +1 -1
  2603. package/subscriber/EntitySubscriberInterface.d.ts +12 -12
  2604. package/subscriber/EntitySubscriberInterface.js +1 -2
  2605. package/subscriber/EntitySubscriberInterface.js.map +1 -1
  2606. package/subscriber/event/BaseEvent.d.ts +27 -0
  2607. package/subscriber/event/BaseEvent.js +3 -0
  2608. package/subscriber/event/BaseEvent.js.map +1 -0
  2609. package/subscriber/event/InsertEvent.d.ts +4 -20
  2610. package/subscriber/event/InsertEvent.js +1 -2
  2611. package/subscriber/event/InsertEvent.js.map +1 -1
  2612. package/subscriber/event/LoadEvent.d.ts +3 -19
  2613. package/subscriber/event/LoadEvent.js +1 -2
  2614. package/subscriber/event/LoadEvent.js.map +1 -1
  2615. package/subscriber/event/QueryEvent.d.ts +4 -20
  2616. package/subscriber/event/QueryEvent.js +1 -2
  2617. package/subscriber/event/QueryEvent.js.map +1 -1
  2618. package/subscriber/event/RecoverEvent.d.ts +1 -1
  2619. package/subscriber/event/RecoverEvent.js +1 -2
  2620. package/subscriber/event/RecoverEvent.js.map +1 -1
  2621. package/subscriber/event/RemoveEvent.d.ts +3 -19
  2622. package/subscriber/event/RemoveEvent.js +1 -2
  2623. package/subscriber/event/RemoveEvent.js.map +1 -1
  2624. package/subscriber/event/SoftRemoveEvent.d.ts +1 -1
  2625. package/subscriber/event/SoftRemoveEvent.js +1 -2
  2626. package/subscriber/event/SoftRemoveEvent.js.map +1 -1
  2627. package/subscriber/event/TransactionCommitEvent.d.ts +2 -18
  2628. package/subscriber/event/TransactionCommitEvent.js +1 -2
  2629. package/subscriber/event/TransactionCommitEvent.js.map +1 -1
  2630. package/subscriber/event/TransactionRollbackEvent.d.ts +2 -18
  2631. package/subscriber/event/TransactionRollbackEvent.js +1 -2
  2632. package/subscriber/event/TransactionRollbackEvent.js.map +1 -1
  2633. package/subscriber/event/TransactionStartEvent.d.ts +2 -18
  2634. package/subscriber/event/TransactionStartEvent.js +1 -2
  2635. package/subscriber/event/TransactionStartEvent.js.map +1 -1
  2636. package/subscriber/event/UpdateEvent.d.ts +6 -22
  2637. package/subscriber/event/UpdateEvent.js +1 -2
  2638. package/subscriber/event/UpdateEvent.js.map +1 -1
  2639. package/typeorm-class-transformer-shim.js +0 -5
  2640. package/typeorm-model-shim.js +0 -10
  2641. package/util/ApplyValueTransformers.d.ts +1 -1
  2642. package/util/ApplyValueTransformers.js +6 -2
  2643. package/util/ApplyValueTransformers.js.map +1 -1
  2644. package/util/DateUtils.d.ts +36 -1
  2645. package/util/DateUtils.js +55 -8
  2646. package/util/DateUtils.js.map +1 -1
  2647. package/util/DepGraph.d.ts +16 -0
  2648. package/util/DepGraph.js +17 -3
  2649. package/util/DepGraph.js.map +1 -1
  2650. package/util/DirectoryExportedClassesLoader.d.ts +4 -5
  2651. package/util/DirectoryExportedClassesLoader.js +12 -18
  2652. package/util/DirectoryExportedClassesLoader.js.map +1 -1
  2653. package/util/ImportUtils.d.ts +4 -0
  2654. package/util/ImportUtils.js +14 -2
  2655. package/util/ImportUtils.js.map +1 -1
  2656. package/util/InstanceChecker.d.ts +2 -2
  2657. package/util/InstanceChecker.js +1 -2
  2658. package/util/InstanceChecker.js.map +1 -1
  2659. package/util/ObjectUtils.d.ts +4 -1
  2660. package/util/ObjectUtils.js +4 -2
  2661. package/util/ObjectUtils.js.map +1 -1
  2662. package/util/OrmUtils.d.ts +43 -4
  2663. package/util/OrmUtils.js +114 -19
  2664. package/util/OrmUtils.js.map +1 -1
  2665. package/util/PathUtils.d.ts +6 -0
  2666. package/util/PathUtils.js +7 -2
  2667. package/util/PathUtils.js.map +1 -1
  2668. package/util/RandomGenerator.d.ts +9 -0
  2669. package/util/RandomGenerator.js +102 -68
  2670. package/util/RandomGenerator.js.map +1 -1
  2671. package/util/SqlTagUtils.d.ts +8 -1
  2672. package/util/SqlTagUtils.js +8 -2
  2673. package/util/SqlTagUtils.js.map +1 -1
  2674. package/util/StringUtils.d.ts +13 -8
  2675. package/util/StringUtils.js +36 -17
  2676. package/util/StringUtils.js.map +1 -1
  2677. package/util/TreeRepositoryUtils.d.ts +3 -3
  2678. package/util/TreeRepositoryUtils.js +3 -4
  2679. package/util/TreeRepositoryUtils.js.map +1 -1
  2680. package/util/Uint8ArrayUtils.d.ts +3 -0
  2681. package/util/Uint8ArrayUtils.js +45 -0
  2682. package/util/Uint8ArrayUtils.js.map +1 -0
  2683. package/util/VersionUtils.js +5 -2
  2684. package/util/VersionUtils.js.map +1 -1
  2685. package/util/escapeRegExp.js +1 -2
  2686. package/util/escapeRegExp.js.map +1 -1
  2687. package/browser/connection/BaseConnectionOptions.d.ts +0 -7
  2688. package/browser/connection/BaseConnectionOptions.js +0 -3
  2689. package/browser/connection/BaseConnectionOptions.js.map +0 -1
  2690. package/browser/connection/Connection.d.ts +0 -10
  2691. package/browser/connection/Connection.js +0 -12
  2692. package/browser/connection/Connection.js.map +0 -1
  2693. package/browser/connection/ConnectionManager.d.ts +0 -33
  2694. package/browser/connection/ConnectionManager.js +0 -62
  2695. package/browser/connection/ConnectionManager.js.map +0 -1
  2696. package/browser/connection/ConnectionOptions.d.ts +0 -9
  2697. package/browser/connection/ConnectionOptions.js +0 -3
  2698. package/browser/connection/ConnectionOptions.js.map +0 -1
  2699. package/browser/connection/options-reader/ConnectionOptionsEnvReader.d.ts +0 -30
  2700. package/browser/connection/options-reader/ConnectionOptionsEnvReader.js +0 -107
  2701. package/browser/connection/options-reader/ConnectionOptionsEnvReader.js.map +0 -1
  2702. package/browser/container.d.ts +0 -39
  2703. package/browser/container.js +0 -56
  2704. package/browser/container.js.map +0 -1
  2705. package/browser/decorator/EntityRepository.d.ts +0 -9
  2706. package/browser/decorator/EntityRepository.js +0 -18
  2707. package/browser/decorator/EntityRepository.js.map +0 -1
  2708. package/browser/decorator/relations/RelationCount.d.ts +0 -8
  2709. package/browser/decorator/relations/RelationCount.js +0 -20
  2710. package/browser/decorator/relations/RelationCount.js.map +0 -1
  2711. package/browser/driver/aurora-mysql/AuroraMysqlConnection.d.ts +0 -13
  2712. package/browser/driver/aurora-mysql/AuroraMysqlConnection.js +0 -15
  2713. package/browser/driver/aurora-mysql/AuroraMysqlConnection.js.map +0 -1
  2714. package/browser/driver/aurora-mysql/AuroraMysqlConnectionOptions.js +0 -3
  2715. package/browser/driver/aurora-mysql/AuroraMysqlConnectionOptions.js.map +0 -1
  2716. package/browser/driver/aurora-postgres/AuroraPostgresConnectionOptions.js +0 -3
  2717. package/browser/driver/aurora-postgres/AuroraPostgresConnectionOptions.js.map +0 -1
  2718. package/browser/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js +0 -3
  2719. package/browser/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js.map +0 -1
  2720. package/browser/driver/capacitor/CapacitorConnectionOptions.js +0 -3
  2721. package/browser/driver/capacitor/CapacitorConnectionOptions.js.map +0 -1
  2722. package/browser/driver/cockroachdb/CockroachConnectionOptions.js +0 -3
  2723. package/browser/driver/cockroachdb/CockroachConnectionOptions.js.map +0 -1
  2724. package/browser/driver/cordova/CordovaConnectionOptions.js +0 -3
  2725. package/browser/driver/cordova/CordovaConnectionOptions.js.map +0 -1
  2726. package/browser/driver/expo/ExpoConnectionOptions.js +0 -3
  2727. package/browser/driver/expo/ExpoConnectionOptions.js.map +0 -1
  2728. package/browser/driver/expo/ExpoDriverFactory.d.ts +0 -9
  2729. package/browser/driver/expo/ExpoDriverFactory.js +0 -18
  2730. package/browser/driver/expo/ExpoDriverFactory.js.map +0 -1
  2731. package/browser/driver/expo/legacy/ExpoLegacyDriver.d.ts +0 -21
  2732. package/browser/driver/expo/legacy/ExpoLegacyDriver.js +0 -71
  2733. package/browser/driver/expo/legacy/ExpoLegacyDriver.js.map +0 -1
  2734. package/browser/driver/expo/legacy/ExpoLegacyQueryRunner.d.ts +0 -57
  2735. package/browser/driver/expo/legacy/ExpoLegacyQueryRunner.js +0 -165
  2736. package/browser/driver/expo/legacy/ExpoLegacyQueryRunner.js.map +0 -1
  2737. package/browser/driver/mongodb/MongoConnectionOptions.js +0 -3
  2738. package/browser/driver/mongodb/MongoConnectionOptions.js.map +0 -1
  2739. package/browser/driver/mysql/MysqlConnectionOptions.js +0 -3
  2740. package/browser/driver/mysql/MysqlConnectionOptions.js.map +0 -1
  2741. package/browser/driver/nativescript/NativescriptConnectionOptions.js +0 -3
  2742. package/browser/driver/nativescript/NativescriptConnectionOptions.js.map +0 -1
  2743. package/browser/driver/oracle/OracleConnectionOptions.js +0 -3
  2744. package/browser/driver/oracle/OracleConnectionOptions.js.map +0 -1
  2745. package/browser/driver/postgres/PostgresConnectionOptions.js +0 -3
  2746. package/browser/driver/postgres/PostgresConnectionOptions.js.map +0 -1
  2747. package/browser/driver/react-native/ReactNativeConnectionOptions.js +0 -3
  2748. package/browser/driver/react-native/ReactNativeConnectionOptions.js.map +0 -1
  2749. package/browser/driver/sap/SapConnectionOptions.js +0 -3
  2750. package/browser/driver/sap/SapConnectionOptions.js.map +0 -1
  2751. package/browser/driver/spanner/SpannerConnectionOptions.js +0 -3
  2752. package/browser/driver/spanner/SpannerConnectionOptions.js.map +0 -1
  2753. package/browser/driver/sqlite/SqliteConnectionOptions.d.ts +0 -55
  2754. package/browser/driver/sqlite/SqliteConnectionOptions.js +0 -3
  2755. package/browser/driver/sqlite/SqliteConnectionOptions.js.map +0 -1
  2756. package/browser/driver/sqlite/SqliteDriver.d.ts +0 -59
  2757. package/browser/driver/sqlite/SqliteDriver.js +0 -169
  2758. package/browser/driver/sqlite/SqliteDriver.js.map +0 -1
  2759. package/browser/driver/sqlite/SqliteQueryRunner.d.ts +0 -27
  2760. package/browser/driver/sqlite/SqliteQueryRunner.js +0 -120
  2761. package/browser/driver/sqlite/SqliteQueryRunner.js.map +0 -1
  2762. package/browser/driver/sqljs/SqljsConnectionOptions.js +0 -3
  2763. package/browser/driver/sqljs/SqljsConnectionOptions.js.map +0 -1
  2764. package/browser/driver/sqlserver/SqlServerConnectionOptions.js +0 -3
  2765. package/browser/driver/sqlserver/SqlServerConnectionOptions.js.map +0 -1
  2766. package/browser/error/CustomRepositoryCannotInheritRepositoryError.d.ts +0 -7
  2767. package/browser/error/CustomRepositoryCannotInheritRepositoryError.js +0 -14
  2768. package/browser/error/CustomRepositoryCannotInheritRepositoryError.js.map +0 -1
  2769. package/browser/error/CustomRepositoryDoesNotHaveEntityError.d.ts +0 -7
  2770. package/browser/error/CustomRepositoryDoesNotHaveEntityError.js +0 -14
  2771. package/browser/error/CustomRepositoryDoesNotHaveEntityError.js.map +0 -1
  2772. package/browser/error/CustomRepositoryNotFoundError.d.ts +0 -7
  2773. package/browser/error/CustomRepositoryNotFoundError.js +0 -14
  2774. package/browser/error/CustomRepositoryNotFoundError.js.map +0 -1
  2775. package/browser/find-options/JoinOptions.d.ts +0 -76
  2776. package/browser/find-options/JoinOptions.js +0 -3
  2777. package/browser/find-options/JoinOptions.js.map +0 -1
  2778. package/browser/metadata/RelationCountMetadata.d.ts +0 -46
  2779. package/browser/metadata/RelationCountMetadata.js +0 -35
  2780. package/browser/metadata/RelationCountMetadata.js.map +0 -1
  2781. package/browser/metadata-args/EntityRepositoryMetadataArgs.d.ts +0 -14
  2782. package/browser/metadata-args/EntityRepositoryMetadataArgs.js +0 -3
  2783. package/browser/metadata-args/EntityRepositoryMetadataArgs.js.map +0 -1
  2784. package/browser/metadata-args/RelationCountMetadataArgs.d.ts +0 -26
  2785. package/browser/metadata-args/RelationCountMetadataArgs.js +0 -3
  2786. package/browser/metadata-args/RelationCountMetadataArgs.js.map +0 -1
  2787. package/browser/query-builder/relation-count/RelationCountAttribute.d.ts +0 -53
  2788. package/browser/query-builder/relation-count/RelationCountAttribute.js +0 -76
  2789. package/browser/query-builder/relation-count/RelationCountAttribute.js.map +0 -1
  2790. package/browser/query-builder/relation-count/RelationCountLoadResult.d.ts +0 -8
  2791. package/browser/query-builder/relation-count/RelationCountLoadResult.js +0 -3
  2792. package/browser/query-builder/relation-count/RelationCountLoadResult.js.map +0 -1
  2793. package/browser/query-builder/relation-count/RelationCountLoader.d.ts +0 -11
  2794. package/browser/query-builder/relation-count/RelationCountLoader.js +0 -164
  2795. package/browser/query-builder/relation-count/RelationCountLoader.js.map +0 -1
  2796. package/browser/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.d.ts +0 -7
  2797. package/browser/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js +0 -51
  2798. package/browser/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js.map +0 -1
  2799. package/browser/repository/AbstractRepository.d.ts +0 -51
  2800. package/browser/repository/AbstractRepository.js +0 -88
  2801. package/browser/repository/AbstractRepository.js.map +0 -1
  2802. package/connection/BaseConnectionOptions.d.ts +0 -7
  2803. package/connection/BaseConnectionOptions.js.map +0 -1
  2804. package/connection/Connection.d.ts +0 -10
  2805. package/connection/Connection.js +0 -16
  2806. package/connection/Connection.js.map +0 -1
  2807. package/connection/ConnectionManager.d.ts +0 -33
  2808. package/connection/ConnectionManager.js +0 -66
  2809. package/connection/ConnectionManager.js.map +0 -1
  2810. package/connection/ConnectionOptions.d.ts +0 -9
  2811. package/connection/ConnectionOptions.js.map +0 -1
  2812. package/connection/options-reader/ConnectionOptionsEnvReader.d.ts +0 -30
  2813. package/connection/options-reader/ConnectionOptionsEnvReader.js +0 -111
  2814. package/connection/options-reader/ConnectionOptionsEnvReader.js.map +0 -1
  2815. package/container.d.ts +0 -39
  2816. package/container.js +0 -60
  2817. package/container.js.map +0 -1
  2818. package/decorator/EntityRepository.d.ts +0 -9
  2819. package/decorator/EntityRepository.js +0 -21
  2820. package/decorator/EntityRepository.js.map +0 -1
  2821. package/decorator/relations/RelationCount.d.ts +0 -8
  2822. package/decorator/relations/RelationCount.js +0 -23
  2823. package/decorator/relations/RelationCount.js.map +0 -1
  2824. package/driver/aurora-mysql/AuroraMysqlConnection.d.ts +0 -13
  2825. package/driver/aurora-mysql/AuroraMysqlConnection.js +0 -19
  2826. package/driver/aurora-mysql/AuroraMysqlConnection.js.map +0 -1
  2827. package/driver/aurora-mysql/AuroraMysqlConnectionOptions.js.map +0 -1
  2828. package/driver/aurora-postgres/AuroraPostgresConnectionOptions.js +0 -4
  2829. package/driver/aurora-postgres/AuroraPostgresConnectionOptions.js.map +0 -1
  2830. package/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js +0 -4
  2831. package/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js.map +0 -1
  2832. package/driver/capacitor/CapacitorConnectionOptions.js.map +0 -1
  2833. package/driver/cockroachdb/CockroachConnectionOptions.js.map +0 -1
  2834. package/driver/cordova/CordovaConnectionOptions.js.map +0 -1
  2835. package/driver/expo/ExpoConnectionOptions.js.map +0 -1
  2836. package/driver/expo/ExpoDriverFactory.d.ts +0 -9
  2837. package/driver/expo/ExpoDriverFactory.js +0 -22
  2838. package/driver/expo/ExpoDriverFactory.js.map +0 -1
  2839. package/driver/expo/legacy/ExpoLegacyDriver.d.ts +0 -21
  2840. package/driver/expo/legacy/ExpoLegacyDriver.js +0 -75
  2841. package/driver/expo/legacy/ExpoLegacyDriver.js.map +0 -1
  2842. package/driver/expo/legacy/ExpoLegacyQueryRunner.d.ts +0 -57
  2843. package/driver/expo/legacy/ExpoLegacyQueryRunner.js +0 -169
  2844. package/driver/expo/legacy/ExpoLegacyQueryRunner.js.map +0 -1
  2845. package/driver/mongodb/MongoConnectionOptions.js.map +0 -1
  2846. package/driver/mysql/MysqlConnectionOptions.js +0 -4
  2847. package/driver/mysql/MysqlConnectionOptions.js.map +0 -1
  2848. package/driver/nativescript/NativescriptConnectionOptions.js +0 -4
  2849. package/driver/nativescript/NativescriptConnectionOptions.js.map +0 -1
  2850. package/driver/oracle/OracleConnectionOptions.js +0 -4
  2851. package/driver/oracle/OracleConnectionOptions.js.map +0 -1
  2852. package/driver/postgres/PostgresConnectionOptions.js +0 -4
  2853. package/driver/postgres/PostgresConnectionOptions.js.map +0 -1
  2854. package/driver/react-native/ReactNativeConnectionOptions.js +0 -4
  2855. package/driver/react-native/ReactNativeConnectionOptions.js.map +0 -1
  2856. package/driver/sap/SapConnectionOptions.js.map +0 -1
  2857. package/driver/spanner/SpannerConnectionOptions.js +0 -4
  2858. package/driver/spanner/SpannerConnectionOptions.js.map +0 -1
  2859. package/driver/sqlite/SqliteConnectionOptions.d.ts +0 -55
  2860. package/driver/sqlite/SqliteConnectionOptions.js +0 -4
  2861. package/driver/sqlite/SqliteConnectionOptions.js.map +0 -1
  2862. package/driver/sqlite/SqliteDriver.d.ts +0 -59
  2863. package/driver/sqlite/SqliteDriver.js +0 -174
  2864. package/driver/sqlite/SqliteDriver.js.map +0 -1
  2865. package/driver/sqlite/SqliteQueryRunner.d.ts +0 -27
  2866. package/driver/sqlite/SqliteQueryRunner.js +0 -124
  2867. package/driver/sqlite/SqliteQueryRunner.js.map +0 -1
  2868. package/driver/sqljs/SqljsConnectionOptions.js +0 -4
  2869. package/driver/sqljs/SqljsConnectionOptions.js.map +0 -1
  2870. package/driver/sqlserver/SqlServerConnectionOptions.js +0 -4
  2871. package/driver/sqlserver/SqlServerConnectionOptions.js.map +0 -1
  2872. package/error/CustomRepositoryCannotInheritRepositoryError.d.ts +0 -7
  2873. package/error/CustomRepositoryCannotInheritRepositoryError.js +0 -18
  2874. package/error/CustomRepositoryCannotInheritRepositoryError.js.map +0 -1
  2875. package/error/CustomRepositoryDoesNotHaveEntityError.d.ts +0 -7
  2876. package/error/CustomRepositoryDoesNotHaveEntityError.js +0 -18
  2877. package/error/CustomRepositoryDoesNotHaveEntityError.js.map +0 -1
  2878. package/error/CustomRepositoryNotFoundError.d.ts +0 -7
  2879. package/error/CustomRepositoryNotFoundError.js +0 -18
  2880. package/error/CustomRepositoryNotFoundError.js.map +0 -1
  2881. package/find-options/JoinOptions.d.ts +0 -76
  2882. package/find-options/JoinOptions.js.map +0 -1
  2883. package/metadata/RelationCountMetadata.d.ts +0 -46
  2884. package/metadata/RelationCountMetadata.js +0 -39
  2885. package/metadata/RelationCountMetadata.js.map +0 -1
  2886. package/metadata-args/EntityRepositoryMetadataArgs.d.ts +0 -14
  2887. package/metadata-args/EntityRepositoryMetadataArgs.js +0 -4
  2888. package/metadata-args/EntityRepositoryMetadataArgs.js.map +0 -1
  2889. package/metadata-args/RelationCountMetadataArgs.d.ts +0 -26
  2890. package/metadata-args/RelationCountMetadataArgs.js +0 -4
  2891. package/metadata-args/RelationCountMetadataArgs.js.map +0 -1
  2892. package/query-builder/relation-count/RelationCountAttribute.d.ts +0 -53
  2893. package/query-builder/relation-count/RelationCountAttribute.js +0 -80
  2894. package/query-builder/relation-count/RelationCountAttribute.js.map +0 -1
  2895. package/query-builder/relation-count/RelationCountLoadResult.d.ts +0 -8
  2896. package/query-builder/relation-count/RelationCountLoadResult.js +0 -4
  2897. package/query-builder/relation-count/RelationCountLoadResult.js.map +0 -1
  2898. package/query-builder/relation-count/RelationCountLoader.d.ts +0 -11
  2899. package/query-builder/relation-count/RelationCountLoader.js +0 -168
  2900. package/query-builder/relation-count/RelationCountLoader.js.map +0 -1
  2901. package/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.d.ts +0 -7
  2902. package/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js +0 -55
  2903. package/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js.map +0 -1
  2904. package/repository/AbstractRepository.d.ts +0 -51
  2905. package/repository/AbstractRepository.js +0 -92
  2906. package/repository/AbstractRepository.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/driver/cockroachdb/CockroachQueryRunner.ts"],"names":[],"mappings":";;;AACA,uCAA0C;AAC1C,mEAA+D;AAC/D,iGAA6F;AAC7F,uFAAmF;AAEnF,wEAAoE;AACpE,gEAA4D;AAG5D,4DAAwD;AACxD,sEAAkE;AAClE,wEAAoE;AACpE,8EAA0E;AAC1E,gFAA4E;AAC5E,sEAAkE;AAClE,wEAAoE;AACpE,yDAAqD;AACrD,8DAA0D;AAC1D,0EAAsE;AACtE,gEAA4D;AAC5D,kDAA8C;AAC9C,0DAAsD;AACtD,oCAAgC;AAGhC,kEAA8D;AAI9D;;GAEG;AACH,MAAa,oBACT,SAAQ,iCAAe;IAyCvB,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,YAAY,MAAuB,EAAE,IAAqB;QACtD,KAAK,EAAE,CAAA;QApBX;;WAEG;QACO,YAAO,GAA4C,EAAE,CAAA;QAE/D;;WAEG;QACO,iBAAY,GAAY,KAAK,CAAA;QAEvC;;WAEG;QACO,uBAAkB,GAAW,CAAC,CAAA;QAQpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAA;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,WAAW,GAAG,IAAI,yBAAW,CAAC,IAAI,CAAC,CAAA;IAC5C,CAAC;IAED,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E;;;OAGG;IACH,OAAO;QACH,IAAI,IAAI,CAAC,kBAAkB;YACvB,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;QAEnD,IAAI,IAAI,CAAC,yBAAyB;YAC9B,OAAO,IAAI,CAAC,yBAAyB,CAAA;QAEzC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YACpD,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,MAAM;iBACvC,qBAAqB,EAAE;iBACvB,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,OAAO,CAAQ,EAAE,EAAE;gBACnC,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC5C,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAA;gBAEpC,MAAM,eAAe,GAAG,CAAC,GAAU,EAAE,EAAE,CACnC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAA;gBAC/B,IAAI,CAAC,eAAe,GAAG,CAAC,GAAW,EAAE,EAAE;oBACnC,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAClC,OAAO,EACP,eAAe,CAClB,CAAA;oBACD,OAAO,CAAC,GAAG,CAAC,CAAA;gBAChB,CAAC,CAAA;gBACD,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,CAAC,CAAA;gBAEpD,OAAO,IAAI,CAAC,kBAAkB,CAAA;YAClC,CAAC,CAAC,CAAA;QACV,CAAC;aAAM,CAAC;YACJ,SAAS;YACT,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,MAAM;iBACvC,sBAAsB,EAAE;iBACxB,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,OAAO,CAAQ,EAAE,EAAE;gBACnC,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC5C,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAA;gBAEpC,MAAM,eAAe,GAAG,CAAC,GAAU,EAAE,EAAE,CACnC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAA;gBAC/B,IAAI,CAAC,eAAe,GAAG,CAAC,GAAW,EAAE,EAAE;oBACnC,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAClC,OAAO,EACP,eAAe,CAClB,CAAA;oBACD,OAAO,CAAC,GAAG,CAAC,CAAA;gBAChB,CAAC,CAAA;gBACD,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,CAAC,CAAA;gBAEpD,OAAO,IAAI,CAAC,kBAAkB,CAAA;YAClC,CAAC,CAAC,CAAA;QACV,CAAC;QAED,OAAO,IAAI,CAAC,yBAAyB,CAAA;IACzC,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,iBAAiB,CAAC,GAAW;QACvC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,OAAM;QACV,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;QACtB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;YACzB,IAAI,CAAC,eAAe,GAAG,SAAS,CAAA;QACpC,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAE7D,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QACtD,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,OAAO;QACH,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAA;IACnC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,cAA+B;QAClD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAA;QAC/B,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAA;QAC3B,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAA;QAC9D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAA;YAChC,MAAM,GAAG,CAAA;QACb,CAAC;QAED,IAAI,IAAI,CAAC,gBAAgB,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;YACrC,MAAM,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAA;YAC/C,IAAI,cAAc,EAAE,CAAC;gBACjB,MAAM,IAAI,CAAC,KAAK,CACZ,kCAAkC,GAAG,cAAc,CACtD,CAAA;YACL,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,CAAC,KAAK,CAAC,qBAAqB,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAA;QAClE,CAAC;QAED,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAA;QAC1B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;QAExB,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAA;IAC7D,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,iBAAiB;QACnB,IAAI,CAAC,IAAI,CAAC,mBAAmB;YAAE,MAAM,IAAI,uDAA0B,EAAE,CAAA;QAErE,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAA;QAE3D,IAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,KAAK,CACZ,6BAA6B,IAAI,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAC3D,CAAA;YACD,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAA;QAC9B,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;YACzB,MAAM,IAAI,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAA;YACvD,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;YAC1B,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;YACjB,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAA;YAChC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAA;YAC3B,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAA;QAC9B,CAAC;QAED,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAA;IAC9D,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,mBAAmB;QACrB,IAAI,CAAC,IAAI,CAAC,mBAAmB;YAAE,MAAM,IAAI,uDAA0B,EAAE,CAAA;QAErE,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAA;QAE7D,IAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,KAAK,CACZ,iCAAiC,IAAI,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAC/D,CAAA;QACL,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;YACzB,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;YAC5B,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;YACjB,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAA;YAChC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAA;QAC/B,CAAC;QACD,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAA;QAE1B,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAA;IAChE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CACP,KAAa,EACb,UAAkB,EAClB,mBAAmB,GAAG,KAAK;QAE3B,IAAI,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,iEAA+B,EAAE,CAAA;QAEhE,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;QAE/C,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;QAC/D,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,aAAa,EAAE,KAAK,EAAE,UAAU,CAAC,CAAA;QAElE,MAAM,iBAAiB,GAAG,IAAI,qCAAiB,EAAE,CAAA;QACjD,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAEjC,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAChD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAA;QAC5C,CAAC;QAED,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,IAAI,OAAO,CAAM,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE;gBAC5C,kBAAkB,CAAC,KAAK,CACpB,KAAK,EACL,UAAU,EACV,CAAC,GAAQ,EAAE,GAAQ,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CACtD,CAAA;YACL,CAAC,CAAC,CAAA;YAEF,oDAAoD;YACpD,MAAM,qBAAqB,GACvB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAA;YAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YAC/B,MAAM,kBAAkB,GAAG,YAAY,GAAG,cAAc,CAAA;YACxD,IACI,qBAAqB;gBACrB,kBAAkB,GAAG,qBAAqB,EAC5C,CAAC;gBACC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CACtC,kBAAkB,EAClB,KAAK,EACL,UAAU,EACV,IAAI,CACP,CAAA;YACL,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,yBAAW,EAAE,CAAA;YAEhC,IAAI,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;gBACjC,MAAM,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAA;YAClC,CAAC;YAED,IAAI,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7B,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC,IAAI,CAAA;YAC7B,CAAC;YAED,QAAQ,GAAG,CAAC,OAAO,EAAE,CAAC;gBAClB,KAAK,QAAQ;oBACT,+DAA+D;oBAC/D,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAA;oBACrC,MAAK;gBACT;oBACI,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAA;YAC7B,CAAC;YAED,IAAI,CAAC,WAAW,CAAC,wBAAwB,CACrC,iBAAiB,EACjB,KAAK,EACL,UAAU,EACV,IAAI,EACJ,kBAAkB,EAClB,GAAG,EACH,SAAS,CACZ,CAAA;YAED,IAAI,mBAAmB,EAAE,CAAC;gBACtB,OAAO,MAAM,CAAA;YACjB,CAAC;iBAAM,CAAC;gBACJ,OAAO,MAAM,CAAC,GAAG,CAAA;YACrB,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,IACI,GAAG,CAAC,IAAI,KAAK,OAAO;gBACpB,IAAI,CAAC,mBAAmB;gBACxB,IAAI,CAAC,kBAAkB;oBACnB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,qBAAqB,IAAI,CAAC,CAAC,EACtD,CAAC;gBACC,IAAI,CAAC,kBAAkB,IAAI,CAAC,CAAA;gBAC5B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;gBACzB,MAAM,IAAI,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAA;gBAC3D,MAAM,SAAS,GACX,CAAC,IAAI,IAAI,CAAC,kBAAkB;oBAC5B,GAAG;oBACH,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC;oBACrB,IAAI,CAAA;gBACR,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAA;gBAE9D,IAAI,MAAM,GAAG,SAAS,CAAA;gBACtB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBAC3B,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAClC,mCAAmC,CAAC,CAAC,KAAK,GAAG,EAC7C,CAAC,CAAC,UAAU,EACZ,IAAI,CACP,CAAA;oBACD,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,CAAA;gBACpD,CAAC;gBACD,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAA;gBAC3B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;gBAExB,OAAO,MAAM,CAAA;YACjB,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,aAAa,CACvC,GAAG,EACH,KAAK,EACL,UAAU,EACV,IAAI,CACP,CAAA;gBACD,IAAI,CAAC,WAAW,CAAC,wBAAwB,CACrC,iBAAiB,EACjB,KAAK,EACL,UAAU,EACV,KAAK,EACL,SAAS,EACT,SAAS,EACT,GAAG,CACN,CAAA;gBACD,MAAM,IAAI,mCAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,CAAA;YACtD,CAAC;QACL,CAAC;gBAAS,CAAC;YACP,MAAM,iBAAiB,CAAC,IAAI,EAAE,CAAA;QAClC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CACR,KAAa,EACb,UAAkB,EAClB,KAAgB,EAChB,OAAkB;QAElB,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAA;QACtD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,MAAM,IAAI,iEAA+B,EAAE,CAAA;QAC/C,CAAC;QAED,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;QAC/C,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;QAC/D,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CACnC,IAAI,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,CACrC,CAAA;QAED,IAAI,KAAK,EAAE,CAAC;YACR,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAC3B,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAC/B,CAAC;QAED,OAAO,MAAM,CAAA;IACjB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QACd,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAC9B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU,CAAC,QAAiB;QAC9B,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAC9B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,QAAgB;QAC9B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAC3B,kDAAkD,QAAQ,GAAG,CAChE,CAAA;QACD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAA;IACvC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB;QACpB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAA;QAClE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAA;IACvC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,MAAc;QAC1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAC3B,wEAAwE,MAAM,GAAG,CACpF,CAAA;QACD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAA;IACvC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB;QAClB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAA;QAChE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAA;IACrC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,WAA2B;QACtC,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;QAE/D,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;YAC1B,eAAe,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAC1D,CAAC;QAED,MAAM,GAAG,GAAG,uEAAuE,eAAe,CAAC,MAAM,yBAAyB,eAAe,CAAC,SAAS,GAAG,CAAA;QAC9J,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACpC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAA;IACvC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CACX,WAA2B,EAC3B,UAAkB;QAElB,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;QAE/D,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;YAC1B,eAAe,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAC1D,CAAC;QAED,MAAM,GAAG,GAAG,wEAAwE,eAAe,CAAC,MAAM,yBAAyB,eAAe,CAAC,SAAS,0BAA0B,UAAU,GAAG,CAAA;QACnM,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACpC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAA;IACvC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAChB,QAAgB,EAChB,UAAoB;QAEpB,MAAM,EAAE,GAAG,mBACP,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EACpC,KAAK,QAAQ,GAAG,CAAA;QAChB,MAAM,IAAI,GAAG,kBAAkB,QAAQ,GAAG,CAAA;QAC1C,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,aAAK,CAAC,EAAE,CAAC,EAAE,IAAI,aAAK,CAAC,IAAI,CAAC,CAAC,CAAA;IAC7D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,QAAgB,EAAE,OAAiB;QAClD,MAAM,EAAE,GAAG,iBAAiB,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,GAAG,CAAA;QACvE,MAAM,IAAI,GAAG,oBAAoB,QAAQ,GAAG,CAAA;QAC5C,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,aAAK,CAAC,EAAE,CAAC,EAAE,IAAI,aAAK,CAAC,IAAI,CAAC,CAAC,CAAA;IAC7D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CACd,UAAkB,EAClB,UAAoB;QAEpB,MAAM,MAAM,GACR,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAElC,MAAM,EAAE,GAAG,UAAU;YACjB,CAAC,CAAC,gCAAgC,MAAM,GAAG;YAC3C,CAAC,CAAC,kBAAkB,MAAM,GAAG,CAAA;QACjC,MAAM,IAAI,GAAG,gBAAgB,MAAM,WAAW,CAAA;QAC9C,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,aAAK,CAAC,EAAE,CAAC,EAAE,IAAI,aAAK,CAAC,IAAI,CAAC,CAAC,CAAA;IAC7D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CACZ,UAAkB,EAClB,OAAiB,EACjB,SAAmB;QAEnB,MAAM,MAAM,GACR,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAElC,MAAM,EAAE,GAAG,OAAO;YACd,CAAC,CAAC,0BAA0B,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE;YACnE,CAAC,CAAC,gBAAgB,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;QAC7D,MAAM,IAAI,GAAG,kBAAkB,MAAM,GAAG,CAAA;QACxC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,aAAK,CAAC,EAAE,CAAC,EAAE,IAAI,aAAK,CAAC,IAAI,CAAC,CAAC,CAAA;IAC7D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACb,KAAY,EACZ,aAAsB,KAAK,EAC3B,oBAA6B,IAAI,EACjC,gBAAyB,IAAI;QAE7B,IAAI,UAAU,EAAE,CAAC;YACb,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;YAC/C,IAAI,YAAY;gBAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;QAC9C,CAAC;QACD,MAAM,SAAS,GAAY,EAAE,CAAA;QAC7B,MAAM,WAAW,GAAY,EAAE,CAAA;QAE/B,6EAA6E;QAC7E,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CACpC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,CACtE,CAAA;QACD,MAAM,gBAAgB,GAAa,EAAE,CAAA;QACrC,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;YAC/B,2EAA2E;YAC3E,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;YACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;YAElD,8FAA8F;YAC9F,IAAI,CAAC,OAAO,IAAI,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBACxD,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;gBAC/B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAA;gBAC/D,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAA;YACnE,CAAC;QACL,CAAC;QAED,KAAK,CAAC,OAAO;aACR,MAAM,CACH,CAAC,MAAM,EAAE,EAAE,CACP,MAAM,CAAC,WAAW;YAClB,MAAM,CAAC,kBAAkB,KAAK,WAAW,CAChD;aACA,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAChB,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,mBAAmB,IAAI,CAAC,UAAU,CAC9B,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CACxC,EAAE,CACN,CACJ,CAAA;YACD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,iBAAiB,IAAI,CAAC,UAAU,CAC5B,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CACxC,EAAE,CACN,CACJ,CAAA;QACL,CAAC,CAAC,CAAA;QAEN,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAA;QAC7D,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAA;QAE1C,iFAAiF;QACjF,kIAAkI;QAClI,IAAI,iBAAiB;YACjB,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CACrC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAC9D,CAAA;QAEL,IAAI,aAAa,EAAE,CAAC;YAChB,KAAK,CAAC,OAAO;iBACR,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;iBAClC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBACf,sFAAsF;gBACtF,IAAI,CAAC,KAAK,CAAC,IAAI;oBACX,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CACjD,KAAK,EACL,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,KAAK,CACd,CAAA;gBACL,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;gBACjD,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;YACrD,CAAC,CAAC,CAAA;QACV,CAAC;QAED,6FAA6F;QAC7F,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CACzC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,YAAY,CAC1D,CAAA;QAED,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;YACpC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAA;YACnD,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;YAClD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,MAAM,GAAG,aAAa,CAAA;YAC1B,CAAC;YAED,MAAM,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC;gBAC9C,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,IAAI,EAAE,qCAAiB,CAAC,gBAAgB;gBACxC,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,KAAK,EAAE,MAAM,CAAC,YAAY;aAC7B,CAAC,CAAA;YAEF,MAAM,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC;gBAC9C,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,IAAI,EAAE,qCAAiB,CAAC,gBAAgB;gBACxC,IAAI,EAAE,MAAM,CAAC,IAAI;aACpB,CAAC,CAAA;YAEF,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YAC3B,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACjC,CAAC;QAED,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;IACrD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CACX,MAAsB,EACtB,OAAiB,EACjB,kBAA2B,IAAI,EAC/B,cAAuB,IAAI;QAE3B,qGAAqG;QACrG,wDAAwD;QACxD,IAAI,OAAO,EAAE,CAAC;YACV,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;YAChD,IAAI,CAAC,YAAY;gBAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;QAC/C,CAAC;QAED,8FAA8F;QAC9F,MAAM,iBAAiB,GAAY,eAAe,CAAA;QAClD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;QAC3C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAA;QAClD,MAAM,SAAS,GAAY,EAAE,CAAA;QAC7B,MAAM,WAAW,GAAY,EAAE,CAAA;QAE/B,4EAA4E;QAC5E,IAAI,eAAe;YACf,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CACrC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAC5D,CAAA;QAEL,IAAI,WAAW,EAAE,CAAC;YACd,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC5B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;gBAC/C,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;YACvD,CAAC,CAAC,CAAA;QACN,CAAC;QAED,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAA;QACxC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAA;QAE/D,KAAK,CAAC,OAAO;aACR,MAAM,CACH,CAAC,MAAM,EAAE,EAAE,CACP,MAAM,CAAC,WAAW;YAClB,MAAM,CAAC,kBAAkB,KAAK,WAAW,CAChD;aACA,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAChB,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,iBAAiB,IAAI,CAAC,UAAU,CAC5B,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CACxC,EAAE,CACN,CACJ,CAAA;YACD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,mBAAmB,IAAI,CAAC,UAAU,CAC9B,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CACxC,EAAE,CACN,CACJ,CAAA;QACL,CAAC,CAAC,CAAA;QAEN,kGAAkG;QAClG,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CACzC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,YAAY,CAC1D,CAAA;QAED,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;YACpC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAA;YACnD,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;YAClD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,MAAM,GAAG,aAAa,CAAA;YAC1B,CAAC;YAED,MAAM,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC;gBAC9C,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,IAAI,EAAE,qCAAiB,CAAC,gBAAgB;gBACxC,IAAI,EAAE,MAAM,CAAC,IAAI;aACpB,CAAC,CAAA;YAEF,MAAM,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC;gBAC9C,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,IAAI,EAAE,qCAAiB,CAAC,gBAAgB;gBACxC,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,KAAK,EAAE,MAAM,CAAC,YAAY;aAC7B,CAAC,CAAA;YAEF,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YAC3B,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACjC,CAAC;QAED,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;IACrD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CACZ,IAAU,EACV,mBAA4B,KAAK;QAEjC,MAAM,SAAS,GAAY,EAAE,CAAA;QAC7B,MAAM,WAAW,GAAY,EAAE,CAAA;QAC/B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAA;QACxC,IAAI,gBAAgB;YAChB,SAAS,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAA;QAC5D,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;QACxC,IAAI,gBAAgB;YAChB,WAAW,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAA;QAC9D,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;IACrD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,MAAqB;QAChC,MAAM,QAAQ,GAAG,iCAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAA;QACtE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;QAE/C,MAAM,SAAS,GAAY,EAAE,CAAA;QAC7B,MAAM,WAAW,GAAY,EAAE,CAAA;QAC/B,SAAS,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAA;QACxD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;QACtC,WAAW,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAA;QAC1D,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAA;QAC1C,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;IACrD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACb,cAA8B,EAC9B,YAAoB;QAEpB,MAAM,SAAS,GAAY,EAAE,CAAA;QAC7B,MAAM,WAAW,GAAY,EAAE,CAAA;QAC/B,MAAM,QAAQ,GAAG,iCAAe,CAAC,OAAO,CAAC,cAAc,CAAC;YACpD,CAAC,CAAC,cAAc;YAChB,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAA;QAC/C,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAA;QAEjC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,GACjD,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;QAExC,QAAQ,CAAC,IAAI,GAAG,UAAU;YACtB,CAAC,CAAC,GAAG,UAAU,IAAI,YAAY,EAAE;YACjC,CAAC,CAAC,YAAY,CAAA;QAElB,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,QAAQ,CACX,eAAe,YAAY,GAAG,CAClC,CACJ,CAAA;QACD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,QAAQ,CACX,eAAe,YAAY,GAAG,CAClC,CACJ,CAAA;QAED,uCAAuC;QACvC,IACI,QAAQ,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;YAClC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,wBAAwB,EACtD,CAAC;YACC,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,GAAG,CAC3C,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAC1B,CAAA;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,cAAc,CAC3D,QAAQ,EACR,WAAW,CACd,CAAA;YACD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,cAAc,CAC3D,QAAQ,EACR,WAAW,CACd,CAAA;YAED,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,QAAQ,CACX,uBAAuB,SAAS,SAAS,SAAS,GAAG,CACzD,CACJ,CAAA;YACD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,QAAQ,CACX,uBAAuB,SAAS,SAAS,SAAS,GAAG,CACzD,CACJ,CAAA;QACL,CAAC;QAED,4BAA4B;QAC5B,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAChC,MAAM,aAAa,GACf,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,oBAAoB,CAC/C,QAAQ,EACR,MAAM,CAAC,WAAW,CACrB,CAAA;YAEL,2DAA2D;YAC3D,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa;gBAAE,OAAM;YAEzC,4BAA4B;YAC5B,MAAM,aAAa,GACf,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,oBAAoB,CAC/C,QAAQ,EACR,MAAM,CAAC,WAAW,CACrB,CAAA;YAEL,gBAAgB;YAChB,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,QAAQ,CACX,uBACG,MAAM,CAAC,IACX,SAAS,aAAa,GAAG,CAC5B,CACJ,CAAA;YACD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,QAAQ,CACX,uBAAuB,aAAa,SACjC,MAAM,CAAC,IACX,GAAG,CACN,CACJ,CAAA;YAED,0BAA0B;YAC1B,MAAM,CAAC,IAAI,GAAG,aAAa,CAAA;QAC/B,CAAC,CAAC,CAAA;QAEF,2BAA2B;QAC3B,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CACzD,QAAQ,EACR,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,KAAK,CACd,CAAA;YAED,0DAA0D;YAC1D,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY;gBAAE,OAAM;YAEvC,4BAA4B;YAC5B,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;YACvD,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CACzD,QAAQ,EACR,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,KAAK,CACd,CAAA;YAED,gBAAgB;YAChB,MAAM,EAAE,GAAG,MAAM;gBACb,CAAC,CAAC,gBAAgB,MAAM,MAAM,KAAK,CAAC,IAAI,gBAAgB,YAAY,GAAG;gBACvE,CAAC,CAAC,gBAAgB,KAAK,CAAC,IAAI,gBAAgB,YAAY,GAAG,CAAA;YAC/D,MAAM,IAAI,GAAG,MAAM;gBACf,CAAC,CAAC,gBAAgB,MAAM,MAAM,YAAY,gBAAgB,KAAK,CAAC,IAAI,GAAG;gBACvE,CAAC,CAAC,gBAAgB,YAAY,gBAAgB,KAAK,CAAC,IAAI,GAAG,CAAA;YAC/D,SAAS,CAAC,IAAI,CAAC,IAAI,aAAK,CAAC,EAAE,CAAC,CAAC,CAAA;YAC7B,WAAW,CAAC,IAAI,CAAC,IAAI,aAAK,CAAC,IAAI,CAAC,CAAC,CAAA;YAEjC,0BAA0B;YAC1B,KAAK,CAAC,IAAI,GAAG,YAAY,CAAA;QAC7B,CAAC,CAAC,CAAA;QAEF,iCAAiC;QACjC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;YACxC,MAAM,iBAAiB,GACnB,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,cAAc,CACzC,QAAQ,EACR,UAAU,CAAC,WAAW,EACtB,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAC7B,UAAU,CAAC,qBAAqB,CACnC,CAAA;YAEL,gEAAgE;YAChE,IAAI,UAAU,CAAC,IAAI,KAAK,iBAAiB;gBAAE,OAAM;YAEjD,4BAA4B;YAC5B,MAAM,iBAAiB,GACnB,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,cAAc,CACzC,QAAQ,EACR,UAAU,CAAC,WAAW,EACtB,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAC7B,UAAU,CAAC,qBAAqB,CACnC,CAAA;YAEL,gBAAgB;YAChB,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,QAAQ,CACX,uBACG,UAAU,CAAC,IACf,SAAS,iBAAiB,GAAG,CAChC,CACJ,CAAA;YACD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,QAAQ,CACX,uBAAuB,iBAAiB,SACrC,UAAU,CAAC,IACf,GAAG,CACN,CACJ,CAAA;YAED,0BAA0B;YAC1B,UAAU,CAAC,IAAI,GAAG,iBAAiB,CAAA;QACvC,CAAC,CAAC,CAAA;QAEF,oBAAoB;QACpB,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CACvC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,CACtE,CAAA;QACD,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;YAC/B,2CAA2C;YAC3C,IAAI,MAAM,CAAC,QAAQ;gBAAE,SAAQ;YAE7B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,sBAAsB,CACjD,QAAQ,EACR,MAAM,CACT,CAAA;YACD,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,eAAe,WAAW,CAAC,MAAM,MAC7B,WAAW,CAAC,IAChB,eAAe,IAAI,CAAC,aAAa,CAC7B,QAAQ,EACR,MAAM,EACN,KAAK,CACR,EAAE,CACN,CACJ,CAAA;YACD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,cAAc,IAAI,CAAC,aAAa,CAC5B,QAAQ,EACR,MAAM,CACT,eAAe,WAAW,CAAC,IAAI,GAAG,CACtC,CACJ,CAAA;QACL,CAAC;QAED,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;IACrD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CACX,WAA2B,EAC3B,MAAmB;QAEnB,MAAM,KAAK,GAAG,iCAAe,CAAC,OAAO,CAAC,WAAW,CAAC;YAC9C,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;QAC5C,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;QACjC,MAAM,SAAS,GAAY,EAAE,CAAA;QAC7B,MAAM,WAAW,GAAY,EAAE,CAAA;QAE/B,IAAI,MAAM,CAAC,kBAAkB,KAAK,WAAW,EAAE,CAAC;YAC5C,MAAM,IAAI,oBAAY,CAClB,0EAA0E,CAC7E,CAAA;QACL,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YAC1D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;YACrD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;gBACrD,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;YACzD,CAAC;QACL,CAAC;QAED,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,QAAQ,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CACtD,CACJ,CAAA;QACD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,iBACjC,MAAM,CAAC,IACX,GAAG,CACN,CACJ,CAAA;QAED,0CAA0C;QAC1C,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,cAAc,GAAG,WAAW,CAAC,cAAc,CAAA;YACjD,wEAAwE;YACxE,gDAAgD;YAChD,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,wBAAwB;oBACrD,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,wBAAwB;oBAC5C,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,cAAc,CACzC,WAAW,EACX,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAC9C,CAAA;gBAEP,MAAM,WAAW,GAAG,cAAc;qBAC7B,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC;qBACnC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACf,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,qBAAqB,MAAM,GAAG,CAClC,CACJ,CAAA;gBACD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,oBAAoB,MAAM,kBAAkB,WAAW,GAAG,CAC9D,CACJ,CAAA;YACL,CAAC;YAED,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAC3B,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,wBAAwB;gBACrD,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,wBAAwB;gBAC5C,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,cAAc,CACzC,WAAW,EACX,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAC9C,CAAA;YAEP,MAAM,WAAW,GAAG,cAAc;iBAC7B,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC;iBACnC,IAAI,CAAC,IAAI,CAAC,CAAA;YACf,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,oBAAoB,MAAM,kBAAkB,WAAW,GAAG,CAC9D,CACJ,CAAA;YACD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,qBAAqB,MAAM,GAAG,CAClC,CACJ,CAAA;QACL,CAAC;QAED,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YAC9C,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAA;YACnD,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;YAClD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,MAAM,GAAG,aAAa,CAAA;YAC1B,CAAC;YACD,MAAM,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC;gBAC9C,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,IAAI,EAAE,qCAAiB,CAAC,gBAAgB;gBACxC,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,KAAK,EAAE,MAAM,CAAC,YAAY;aAC7B,CAAC,CAAA;YAEF,MAAM,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC;gBAC9C,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,IAAI,EAAE,qCAAiB,CAAC,gBAAgB;gBACxC,IAAI,EAAE,MAAM,CAAC,IAAI;aACpB,CAAC,CAAA;YAEF,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YAC3B,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACjC,CAAC;QAED,sBAAsB;QACtB,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CACxC,CAAC,KAAK,EAAE,EAAE,CACN,KAAK,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;YAC9B,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,CAC3C,CAAA;QACD,IAAI,WAAW,EAAE,CAAC;YACd,0DAA0D;YAC1D,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;gBACvB,MAAM,MAAM,GAAG,IAAI,yBAAW,CAAC;oBAC3B,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,oBAAoB,CACrD,KAAK,EACL,WAAW,CAAC,WAAW,CAC1B;oBACD,WAAW,EAAE,WAAW,CAAC,WAAW;iBACvC,CAAC,CAAA;gBACF,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;gBAC7D,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;gBAClD,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACpC,CAAC;iBAAM,CAAC;gBACJ,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAA;gBACvD,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAA;YAC3D,CAAC;QACL,CAAC;QAED,2BAA2B;QAC3B,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,gBAAgB,GAAG,IAAI,yBAAW,CAAC;gBACrC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,oBAAoB,CACrD,KAAK,EACL,CAAC,MAAM,CAAC,IAAI,CAAC,CAChB;gBACD,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;aAC7B,CAAC,CAAA;YACF,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;YAC1C,SAAS,CAAC,IAAI,CACV,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAC1D,CAAA;YACD,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,gBAAgB,CAAC,IAAK,CAAC,CAAC,CAAA,CAAC,qDAAqD;QAC5H,CAAC;QAED,0BAA0B;QAC1B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,qBAAqB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KACvC,MAAM,CAAC,IACX,QAAQ,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAC/C,CACJ,CAAA;YACD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,qBAAqB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KACvC,MAAM,CAAC,IACX,QAAQ,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAC/C,CACJ,CAAA;QACL,CAAC;QAED,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;QAEjD,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QAC7B,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;IAC/C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CACZ,WAA2B,EAC3B,OAAsB;QAEtB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;QAC7C,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CACd,WAA2B,EAC3B,oBAA0C,EAC1C,oBAA0C;QAE1C,MAAM,KAAK,GAAG,iCAAe,CAAC,OAAO,CAAC,WAAW,CAAC;YAC9C,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;QAC5C,MAAM,SAAS,GAAG,iCAAe,CAAC,aAAa,CAAC,oBAAoB,CAAC;YACjE,CAAC,CAAC,oBAAoB;YACtB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,oBAAoB,CAAC,CAAA;QAChE,IAAI,CAAC,SAAS;YACV,MAAM,IAAI,oBAAY,CAClB,WAAW,oBAAoB,2BAA2B,KAAK,CAAC,IAAI,UAAU,CACjF,CAAA;QAEL,IAAI,SAAS,CAAA;QACb,IAAI,iCAAe,CAAC,aAAa,CAAC,oBAAoB,CAAC,EAAE,CAAC;YACtD,SAAS,GAAG,oBAAoB,CAAA;QACpC,CAAC;aAAM,CAAC;YACJ,SAAS,GAAG,SAAS,CAAC,KAAK,EAAE,CAAA;YAC7B,SAAS,CAAC,IAAI,GAAG,oBAAoB,CAAA;QACzC,CAAC;QAED,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;IACzD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CACd,WAA2B,EAC3B,oBAA0C,EAC1C,SAAsB;QAEtB,MAAM,KAAK,GAAG,iCAAe,CAAC,OAAO,CAAC,WAAW,CAAC;YAC9C,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;QAC5C,IAAI,WAAW,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;QAC/B,MAAM,SAAS,GAAY,EAAE,CAAA;QAC7B,MAAM,WAAW,GAAY,EAAE,CAAA;QAC/B,IAAI,mBAAmB,GAAG,KAAK,CAAA;QAE/B,MAAM,SAAS,GAAG,iCAAe,CAAC,aAAa,CAAC,oBAAoB,CAAC;YACjE,CAAC,CAAC,oBAAoB;YACtB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CACd,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,oBAAoB,CACnD,CAAA;QACP,IAAI,CAAC,SAAS;YACV,MAAM,IAAI,oBAAY,CAClB,WAAW,oBAAoB,2BAA2B,KAAK,CAAC,IAAI,UAAU,CACjF,CAAA;QAEL,IACI,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI;YACjC,SAAS,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM;YACrC,SAAS,CAAC,OAAO,KAAK,SAAS,CAAC,OAAO;YACvC,SAAS,CAAC,aAAa,KAAK,SAAS,CAAC,aAAa;YACnD,SAAS,CAAC,YAAY,KAAK,SAAS,CAAC,YAAY,EACnD,CAAC;YACC,oDAAoD;YACpD,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;YACvC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;YAEtC,sBAAsB;YACtB,WAAW,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;QAC/B,CAAC;aAAM,CAAC;YACJ,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;gBACpC,gBAAgB;gBAChB,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,mBACjC,SAAS,CAAC,IACd,SAAS,SAAS,CAAC,IAAI,GAAG,CAC7B,CACJ,CAAA;gBACD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,mBACjC,SAAS,CAAC,IACd,SAAS,SAAS,CAAC,IAAI,GAAG,CAC7B,CACJ,CAAA;gBAED,mBAAmB;gBACnB,IACI,SAAS,CAAC,IAAI,KAAK,MAAM;oBACzB,SAAS,CAAC,IAAI,KAAK,aAAa,EAClC,CAAC;oBACC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,sBAAsB,CACjD,KAAK,EACL,SAAS,CACZ,CAAA;oBACD,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,eAAe,WAAW,CAAC,MAAM,MAC7B,WAAW,CAAC,IAChB,eAAe,IAAI,CAAC,aAAa,CAC7B,KAAK,EACL,SAAS,EACT,KAAK,CACR,EAAE,CACN,CACJ,CAAA;oBACD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,cAAc,IAAI,CAAC,aAAa,CAC5B,KAAK,EACL,SAAS,CACZ,eAAe,WAAW,CAAC,IAAI,GAAG,CACtC,CACJ,CAAA;gBACL,CAAC;gBAED,uCAAuC;gBACvC,IACI,SAAS,CAAC,SAAS,KAAK,IAAI;oBAC5B,CAAC,SAAS,CAAC,wBAAwB,EACrC,CAAC;oBACC,MAAM,cAAc,GAAG,WAAW,CAAC,cAAc,CAAA;oBAEjD,oCAAoC;oBACpC,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAClC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAC1B,CAAA;oBACD,MAAM,SAAS,GACX,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,cAAc,CACzC,WAAW,EACX,WAAW,CACd,CAAA;oBAEL,+CAA+C;oBAC/C,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;oBAC1D,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;oBAEhC,oCAAoC;oBACpC,MAAM,SAAS,GACX,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,cAAc,CACzC,WAAW,EACX,WAAW,CACd,CAAA;oBAEL,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,uBAAuB,SAAS,SAAS,SAAS,GAAG,CACzD,CACJ,CAAA;oBACD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,uBAAuB,SAAS,SAAS,SAAS,GAAG,CACzD,CACJ,CAAA;gBACL,CAAC;gBAED,4BAA4B;gBAC5B,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;oBACxD,MAAM,aAAa,GACf,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,oBAAoB,CAC/C,WAAW,EACX,MAAM,CAAC,WAAW,CACrB,CAAA;oBAEL,2DAA2D;oBAC3D,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa;wBAAE,OAAM;oBAEzC,4BAA4B;oBAC5B,MAAM,CAAC,WAAW,CAAC,MAAM,CACrB,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAC1C,CAAC,CACJ,CAAA;oBACD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;oBACvC,MAAM,aAAa,GACf,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,oBAAoB,CAC/C,WAAW,EACX,MAAM,CAAC,WAAW,CACrB,CAAA;oBAEL,gBAAgB;oBAChB,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,uBACG,MAAM,CAAC,IACX,SAAS,aAAa,GAAG,CAC5B,CACJ,CAAA;oBACD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,uBAAuB,aAAa,SACjC,MAAM,CAAC,IACX,GAAG,CACN,CACJ,CAAA;oBAED,0BAA0B;oBAC1B,MAAM,CAAC,IAAI,GAAG,aAAa,CAAA;gBAC/B,CAAC,CAAC,CAAA;gBAEF,2BAA2B;gBAC3B,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;oBACvD,MAAM,YAAY,GACd,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CACpC,WAAW,EACX,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,KAAK,CACd,CAAA;oBAEL,0DAA0D;oBAC1D,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY;wBAAE,OAAM;oBAEvC,4BAA4B;oBAC5B,KAAK,CAAC,WAAW,CAAC,MAAM,CACpB,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EACzC,CAAC,CACJ,CAAA;oBACD,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;oBACtC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;oBACpD,MAAM,YAAY,GACd,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CACpC,WAAW,EACX,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,KAAK,CACd,CAAA;oBAEL,gBAAgB;oBAChB,MAAM,EAAE,GAAG,MAAM;wBACb,CAAC,CAAC,gBAAgB,MAAM,MAAM,KAAK,CAAC,IAAI,gBAAgB,YAAY,GAAG;wBACvE,CAAC,CAAC,gBAAgB,KAAK,CAAC,IAAI,gBAAgB,YAAY,GAAG,CAAA;oBAC/D,MAAM,IAAI,GAAG,MAAM;wBACf,CAAC,CAAC,gBAAgB,MAAM,MAAM,YAAY,gBAAgB,KAAK,CAAC,IAAI,GAAG;wBACvE,CAAC,CAAC,gBAAgB,YAAY,gBAAgB,KAAK,CAAC,IAAI,GAAG,CAAA;oBAC/D,SAAS,CAAC,IAAI,CAAC,IAAI,aAAK,CAAC,EAAE,CAAC,CAAC,CAAA;oBAC7B,WAAW,CAAC,IAAI,CAAC,IAAI,aAAK,CAAC,IAAI,CAAC,CAAC,CAAA;oBAEjC,0BAA0B;oBAC1B,KAAK,CAAC,IAAI,GAAG,YAAY,CAAA;gBAC7B,CAAC,CAAC,CAAA;gBAEF,iCAAiC;gBACjC,WAAW;qBACN,qBAAqB,CAAC,SAAS,CAAC;qBAChC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;oBACpB,MAAM,cAAc,GAChB,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,cAAc,CACzC,WAAW,EACX,UAAU,CAAC,WAAW,EACtB,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAC7B,UAAU,CAAC,qBAAqB,CACnC,CAAA;oBAEL,gEAAgE;oBAChE,IAAI,UAAU,CAAC,IAAI,KAAK,cAAc;wBAAE,OAAM;oBAE9C,4BAA4B;oBAC5B,UAAU,CAAC,WAAW,CAAC,MAAM,CACzB,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAC9C,CAAC,CACJ,CAAA;oBACD,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;oBAC3C,MAAM,iBAAiB,GACnB,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,cAAc,CACzC,WAAW,EACX,UAAU,CAAC,WAAW,EACtB,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAC7B,UAAU,CAAC,qBAAqB,CACnC,CAAA;oBAEL,gBAAgB;oBAChB,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,uBACG,UAAU,CAAC,IACf,SAAS,iBAAiB,GAAG,CAChC,CACJ,CAAA;oBACD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,uBAAuB,iBAAiB,SACrC,UAAU,CAAC,IACf,GAAG,CACN,CACJ,CAAA;oBAED,0BAA0B;oBAC1B,UAAU,CAAC,IAAI,GAAG,iBAAiB,CAAA;gBACvC,CAAC,CAAC,CAAA;gBAEN,wCAAwC;gBACxC,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAC3C,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAC7C,CAAA;gBACD,WAAW,CAAC,OAAO,CACf,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,cAAe,CAAC,CAC/C,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAA;gBACvB,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAA;YACnC,CAAC;YAED,IACI,SAAS,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS;gBAC3C,SAAS,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK,EACrC,CAAC;gBACC,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,kBACjC,SAAS,CAAC,IACd,UAAU,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CACpD,CACJ,CAAA;gBACD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,kBACjC,SAAS,CAAC,IACd,UAAU,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CACpD,CACJ,CAAA;YACL,CAAC;YAED,IAAI,SAAS,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU,EAAE,CAAC;gBAChD,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;oBACvB,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,kBAAkB,SAAS,CAAC,IAAI,iBAAiB,CACrD,CACJ,CAAA;oBACD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,kBAAkB,SAAS,CAAC,IAAI,gBAAgB,CACpD,CACJ,CAAA;gBACL,CAAC;qBAAM,CAAC;oBACJ,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,kBAAkB,SAAS,CAAC,IAAI,gBAAgB,CACpD,CACJ,CAAA;oBACD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,kBAAkB,SAAS,CAAC,IAAI,iBAAiB,CACrD,CACJ,CAAA;gBACL,CAAC;YACL,CAAC;YAED,IAAI,SAAS,CAAC,OAAO,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC;gBAC1C,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,qBAAqB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KACvC,SAAS,CAAC,IACd,QAAQ,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAClD,CACJ,CAAA;gBACD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,qBAAqB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KACvC,SAAS,CAAC,IACd,QAAQ,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAClD,CACJ,CAAA;YACL,CAAC;YAED,IAAI,SAAS,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS,EAAE,CAAC;gBAC9C,MAAM,cAAc,GAAG,WAAW,CAAC,cAAc,CAAA;gBAEjD,2EAA2E;gBAC3E,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5B,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,wBAAwB;wBACrD,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,wBAAwB;wBAC5C,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,cAAc,CACzC,WAAW,EACX,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAC9C,CAAA;oBAEP,MAAM,WAAW,GAAG,cAAc;yBAC7B,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC;yBACnC,IAAI,CAAC,IAAI,CAAC,CAAA;oBAEf,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,qBAAqB,MAAM,GAAG,CAClC,CACJ,CAAA;oBACD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,oBAAoB,MAAM,kBAAkB,WAAW,GAAG,CAC9D,CACJ,CAAA;gBACL,CAAC;gBAED,IAAI,SAAS,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;oBAC/B,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;oBAC9B,yBAAyB;oBACzB,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CACnC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAC7C,CAAA;oBACD,MAAO,CAAC,SAAS,GAAG,IAAI,CAAA;oBACxB,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,wBAAwB;wBACrD,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,wBAAwB;wBAC5C,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,cAAc,CACzC,WAAW,EACX,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAC9C,CAAA;oBAEP,MAAM,WAAW,GAAG,cAAc;yBAC7B,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC;yBACnC,IAAI,CAAC,IAAI,CAAC,CAAA;oBAEf,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,oBAAoB,MAAM,kBAAkB,WAAW,GAAG,CAC9D,CACJ,CAAA;oBACD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,qBAAqB,MAAM,GAAG,CAClC,CACJ,CAAA;gBACL,CAAC;qBAAM,CAAC;oBACJ,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,CACrC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CACnC,CAAA;oBACD,cAAc,CAAC,MAAM,CACjB,cAAc,CAAC,OAAO,CAAC,aAAc,CAAC,EACtC,CAAC,CACJ,CAAA;oBAED,yBAAyB;oBACzB,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CACnC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAC7C,CAAA;oBACD,MAAO,CAAC,SAAS,GAAG,KAAK,CAAA;oBAEzB,gEAAgE;oBAChE,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC5B,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC;6BAC3B,wBAAwB;4BACzB,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,wBAAwB;4BAC5C,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,cAAc,CACzC,WAAW,EACX,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAC9C,CAAA;wBAEP,MAAM,WAAW,GAAG,cAAc;6BAC7B,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC;6BACnC,IAAI,CAAC,IAAI,CAAC,CAAA;wBACf,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,oBAAoB,MAAM,kBAAkB,WAAW,GAAG,CAC9D,CACJ,CAAA;wBACD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,qBAAqB,MAAM,GAAG,CAClC,CACJ,CAAA;oBACL,CAAC;gBACL,CAAC;YACL,CAAC;YAED,IAAI,SAAS,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ,EAAE,CAAC;gBAC5C,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;oBACrB,MAAM,gBAAgB,GAAG,IAAI,yBAAW,CAAC;wBACrC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,oBAAoB,CACrD,KAAK,EACL,CAAC,SAAS,CAAC,IAAI,CAAC,CACnB;wBACD,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;qBAChC,CAAC,CAAA;oBACF,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;oBAC1C,SAAS,CAAC,IAAI,CACV,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAC1D,CAAA;oBACD,mDAAmD;oBACnD,iEAAiE;oBACjE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAA;gBAChE,CAAC;qBAAM,CAAC;oBACJ,MAAM,gBAAgB,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAC7C,CAAC,MAAM,EAAE,EAAE;wBACP,OAAO,CACH,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;4BAC/B,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CACrB,CAAC,UAAU,EAAE,EAAE,CACX,UAAU,KAAK,SAAS,CAAC,IAAI,CACpC,CACJ,CAAA;oBACL,CAAC,CACJ,CAAA;oBACD,WAAW,CAAC,OAAO,CAAC,MAAM,CACtB,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAiB,CAAC,EAC9C,CAAC,CACJ,CAAA;oBACD,mDAAmD;oBACnD,iEAAiE;oBACjE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,gBAAiB,CAAC,CAAC,CAAA;oBAC3D,WAAW,CAAC,IAAI,CACZ,IAAI,CAAC,yBAAyB,CAC1B,KAAK,EACL,gBAAiB,CACpB,CACJ,CAAA;gBACL,CAAC;YACL,CAAC;YAED,IACI,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM;gBACtB,SAAS,CAAC,IAAI,KAAK,aAAa,CAAC;gBACrC,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM;oBACtB,SAAS,CAAC,IAAI,KAAK,aAAa,CAAC;gBACrC,CAAC,CAAC,mBAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,IAAK,EAAE,SAAS,CAAC,IAAK,CAAC;oBACtD,SAAS,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ,CAAC,EAChD,CAAC;gBACC,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;gBAEjD,sBAAsB;gBACtB,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;gBAExD,sBAAsB;gBACtB,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;gBAExD,aAAa;gBACb,MAAM,wBAAwB,GAAG,IAAI,CAAC,aAAa,CAC/C,KAAK,EACL,SAAS,EACT,KAAK,CACR,CAAA;gBAED,yBAAyB;gBACzB,MAAM,yBAAyB,GAAG,IAAI,CAAC,aAAa,CAChD,KAAK,EACL,SAAS,EACT,IAAI,EACJ,KAAK,EACL,IAAI,CACP,CAAA;gBAED,gBAAgB;gBAChB,MAAM,4BAA4B,GAAG,IAAI,CAAC,aAAa,CACnD,KAAK,EACL,SAAS,EACT,KAAK,EACL,KAAK,EACL,IAAI,CACP,CAAA;gBAED,kBAAkB;gBAClB,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,cAAc,WAAW,cAAc,4BAA4B,EAAE,CACxE,CACJ,CAAA;gBACD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,cAAc,yBAAyB,cAAc,wBAAwB,EAAE,CAClF,CACJ,CAAA;gBAED,kBAAkB;gBAClB,SAAS,CAAC,IAAI,CACV,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,CACxD,CAAA;gBACD,WAAW,CAAC,IAAI,CACZ,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,CACtD,CAAA;gBAED,kFAAkF;gBAClF,IACI,SAAS,CAAC,OAAO,KAAK,IAAI;oBAC1B,SAAS,CAAC,OAAO,KAAK,SAAS,EACjC,CAAC;oBACC,mDAAmD;oBACnD,mBAAmB,GAAG,IAAI,CAAA;oBAC1B,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,kBAAkB,SAAS,CAAC,IAAI,gBAAgB,CACpD,CACJ,CAAA;oBACD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,kBAAkB,SAAS,CAAC,IAAI,iBAC7B,SAAS,CAAC,OACd,EAAE,CACL,CACJ,CAAA;gBACL,CAAC;gBAED,qBAAqB;gBACrB,MAAM,MAAM,GAAG,GAAG,WAAW,GAAG,WAAW,WAAW,SAAS,CAAC,IAAI,cAAc,WAAW,GAAG,WAAW,EAAE,CAAA;gBAC7G,MAAM,QAAQ,GAAG,GAAG,yBAAyB,GAAG,WAAW,WAAW,SAAS,CAAC,IAAI,cAAc,yBAAyB,GAAG,WAAW,EAAE,CAAA;gBAE3I,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,kBACjC,SAAS,CAAC,IACd,UAAU,MAAM,EAAE,CACrB,CACJ,CAAA;gBAED,mEAAmE;gBACnE,oEAAoE;gBACpE,2DAA2D;gBAC3D,SAAS,CAAC,IAAI,CAAC,IAAI,aAAK,CAAC,sBAAsB,CAAC,CAAC,CAAA;gBACjD,WAAW,CAAC,IAAI,CAAC,IAAI,aAAK,CAAC,sBAAsB,CAAC,CAAC,CAAA;gBAEnD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,kBACjC,SAAS,CAAC,IACd,UAAU,QAAQ,EAAE,CACvB,CACJ,CAAA;gBAED,2CAA2C;gBAC3C,IACI,SAAS,CAAC,OAAO,KAAK,IAAI;oBAC1B,SAAS,CAAC,OAAO,KAAK,SAAS,EACjC,CAAC;oBACC,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,kBAAkB,SAAS,CAAC,IAAI,iBAC7B,SAAS,CAAC,OACd,EAAE,CACL,CACJ,CAAA;oBACD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,kBAAkB,SAAS,CAAC,IAAI,gBAAgB,CACpD,CACJ,CAAA;gBACL,CAAC;gBAED,kBAAkB;gBAClB,SAAS,CAAC,IAAI,CACV,IAAI,CAAC,eAAe,CAChB,KAAK,EACL,SAAS,EACT,yBAAyB,CAC5B,CACJ,CAAA;gBACD,WAAW,CAAC,IAAI,CACZ,IAAI,CAAC,iBAAiB,CAClB,KAAK,EACL,SAAS,EACT,yBAAyB,CAC5B,CACJ,CAAA;YACL,CAAC;YAED,IACI,SAAS,CAAC,WAAW,KAAK,SAAS,CAAC,WAAW;gBAC/C,SAAS,CAAC,kBAAkB,KAAK,MAAM,EACzC,CAAC;gBACC,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;oBACxB,IAAI,SAAS,CAAC,kBAAkB,KAAK,WAAW,EAAE,CAAC;wBAC/C,MAAM,IAAI,oBAAY,CAClB,0EAA0E,CAC7E,CAAA;oBACL,CAAC;yBAAM,IAAI,SAAS,CAAC,kBAAkB,KAAK,OAAO,EAAE,CAAC;wBAClD,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,kBACG,SAAS,CAAC,IACd,8BAA8B,CACjC,CACJ,CAAA;wBACD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,kBACG,SAAS,CAAC,IACd,gBAAgB,CACnB,CACJ,CAAA;oBACL,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACJ,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,kBAAkB,SAAS,CAAC,IAAI,gBAAgB,CACpD,CACJ,CAAA;oBACD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,kBACG,SAAS,CAAC,IACd,8BAA8B,CACjC,CACJ,CAAA;gBACL,CAAC;YACL,CAAC;YAED,IACI,SAAS,CAAC,OAAO,KAAK,SAAS,CAAC,OAAO;gBACvC,CAAC,mBAAmB,EACtB,CAAC;gBACC,IACI,SAAS,CAAC,OAAO,KAAK,IAAI;oBAC1B,SAAS,CAAC,OAAO,KAAK,SAAS,EACjC,CAAC;oBACC,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,kBAAkB,SAAS,CAAC,IAAI,iBAC7B,SAAS,CAAC,OACd,EAAE,CACL,CACJ,CAAA;oBAED,IACI,SAAS,CAAC,OAAO,KAAK,IAAI;wBAC1B,SAAS,CAAC,OAAO,KAAK,SAAS,EACjC,CAAC;wBACC,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,kBACG,SAAS,CAAC,IACd,iBAAiB,SAAS,CAAC,OAAO,EAAE,CACvC,CACJ,CAAA;oBACL,CAAC;yBAAM,CAAC;wBACJ,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,kBACG,SAAS,CAAC,IACd,gBAAgB,CACnB,CACJ,CAAA;oBACL,CAAC;gBACL,CAAC;qBAAM,IACH,SAAS,CAAC,OAAO,KAAK,IAAI;oBAC1B,SAAS,CAAC,OAAO,KAAK,SAAS,EACjC,CAAC;oBACC,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,kBAAkB,SAAS,CAAC,IAAI,gBAAgB,CACpD,CACJ,CAAA;oBACD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,kBAAkB,SAAS,CAAC,IAAI,iBAC7B,SAAS,CAAC,OACd,EAAE,CACL,CACJ,CAAA;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,IACI,CAAC,SAAS,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE;YAC9C,CAAC,SAAS,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE;YACtD,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EACnC,CAAC;YACC,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,kBACjC,SAAS,CAAC,IACd,UAAU,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CACpD,CACJ,CAAA;YACD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,kBACjC,SAAS,CAAC,IACd,UAAU,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CACpD,CACJ,CAAA;QACL,CAAC;QAED,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;QACjD,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;IAC/C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CACf,WAA2B,EAC3B,cAAoE;QAEpE,KAAK,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,cAAc,EAAE,CAAC;YACpD,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;QAC9D,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CACZ,WAA2B,EAC3B,YAAkC;QAElC,MAAM,KAAK,GAAG,iCAAe,CAAC,OAAO,CAAC,WAAW,CAAC;YAC9C,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;QAC5C,MAAM,MAAM,GAAG,iCAAe,CAAC,aAAa,CAAC,YAAY,CAAC;YACtD,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAA;QAC1C,IAAI,CAAC,MAAM;YACP,MAAM,IAAI,oBAAY,CAClB,WAAW,YAAY,6BAA6B,KAAK,CAAC,IAAI,GAAG,CACpE,CAAA;QAEL,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;QACjC,MAAM,SAAS,GAAY,EAAE,CAAA;QAC7B,MAAM,WAAW,GAAY,EAAE,CAAA;QAE/B,8BAA8B;QAC9B,gDAAgD;QAChD,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,MAAM,CAAC,wBAAwB;gBAC1C,CAAC,CAAC,MAAM,CAAC,wBAAwB;gBACjC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,cAAc,CACzC,WAAW,EACX,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAC1D,CAAA;YAEP,MAAM,WAAW,GAAG,WAAW,CAAC,cAAc;iBACzC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,aAAa,CAAC,IAAI,GAAG,CAAC;iBACjD,IAAI,CAAC,IAAI,CAAC,CAAA;YACf,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,WAAW,CACd,qBAAqB,MAAM,GAAG,CAClC,CACJ,CAAA;YACD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,WAAW,CACd,oBAAoB,MAAM,kBAAkB,WAAW,GAAG,CAC9D,CACJ,CAAA;YAED,yBAAyB;YACzB,MAAM,WAAW,GAAG,WAAW,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAC7D,WAAY,CAAC,SAAS,GAAG,KAAK,CAAA;YAE9B,mFAAmF;YACnF,IAAI,WAAW,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxC,MAAM,MAAM,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC;qBACvC,wBAAwB;oBACzB,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,wBAAwB;oBACxD,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,cAAc,CACzC,WAAW,EACX,WAAW,CAAC,cAAc,CAAC,GAAG,CAC1B,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAC1B,CACJ,CAAA;gBAEP,MAAM,WAAW,GAAG,WAAW,CAAC,cAAc;qBACzC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,aAAa,CAAC,IAAI,GAAG,CAAC;qBACjD,IAAI,CAAC,IAAI,CAAC,CAAA;gBAEf,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,WAAW,CACd,oBAAoB,MAAM,kBAAkB,WAAW,GAAG,CAC9D,CACJ,CAAA;gBACD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,WAAW,CACd,qBAAqB,MAAM,GAAG,CAClC,CACJ,CAAA;YACL,CAAC;QACL,CAAC;QAED,oBAAoB;QACpB,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CACxC,CAAC,KAAK,EAAE,EAAE,CACN,KAAK,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;YAC9B,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,CAC3C,CAAA;QACD,IAAI,WAAW,EAAE,CAAC;YACd,WAAW,CAAC,OAAO,CAAC,MAAM,CACtB,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,EACxC,CAAC,CACJ,CAAA;YACD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAA;YACrD,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAA;QAC7D,CAAC;QAED,oBAAoB;QACpB,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CACvC,CAAC,KAAK,EAAE,EAAE,CACN,CAAC,CAAC,KAAK,CAAC,WAAW;YACnB,KAAK,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;YAC9B,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,CAC3C,CAAA;QACD,IAAI,WAAW,EAAE,CAAC;YACd,WAAW,CAAC,MAAM,CAAC,MAAM,CACrB,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EACvC,CAAC,CACJ,CAAA;YACD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAA;YAC/D,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAA;QACvE,CAAC;QAED,qBAAqB;QACrB,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CACzC,CAAC,MAAM,EAAE,EAAE,CACP,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;YAC/B,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,CAC5C,CAAA;QACD,IAAI,YAAY,EAAE,CAAC;YACf,WAAW,CAAC,OAAO,CAAC,MAAM,CACtB,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,EACzC,CAAC,CACJ,CAAA;YACD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,IAAK,CAAC,CAAC,CAAA,CAAC,qDAAqD;YAClH,WAAW,CAAC,IAAI,CACZ,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,YAAY,CAAC,CACtD,CAAA;QACL,CAAC;QAED,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,iBACjC,MAAM,CAAC,IACX,GAAG,CACN,CACJ,CAAA;QACD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,QAAQ,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CACtD,CACJ,CAAA;QAED,IAAI,MAAM,CAAC,kBAAkB,KAAK,WAAW,EAAE,CAAC;YAC5C,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,iBAAiB,IAAI,CAAC,UAAU,CAC5B,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CACxC,EAAE,CACN,CACJ,CAAA;YACD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,mBAAmB,IAAI,CAAC,UAAU,CAC9B,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CACxC,EAAE,CACN,CACJ,CAAA;QACL,CAAC;QAED,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YAC9C,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAA;YACnD,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;YAClD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,MAAM,GAAG,aAAa,CAAA;YAC1B,CAAC;YACD,MAAM,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC;gBAC9C,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,IAAI,EAAE,qCAAiB,CAAC,gBAAgB;gBACxC,IAAI,EAAE,MAAM,CAAC,IAAI;aACpB,CAAC,CAAA;YACF,MAAM,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC;gBAC9C,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,IAAI,EAAE,qCAAiB,CAAC,gBAAgB;gBACxC,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,KAAK,EAAE,MAAM,CAAC,YAAY;aAC7B,CAAC,CAAA;YAEF,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YAC3B,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACjC,CAAC;QAED,iBAAiB;QACjB,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YAC1D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;YACrD,IAAI,OAAO,EAAE,CAAC;gBACV,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAC9C,KAAK,EACL,MAAM,CACT,CAAA;gBACD,MAAM,eAAe,GAAG,IAAI,QAAQ,CAAC,MAAM,MAAM,QAAQ,CAAC,IAAI,GAAG,CAAA;gBACjE,SAAS,CAAC,IAAI,CACV,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,eAAe,CAAC,CACvD,CAAA;gBACD,WAAW,CAAC,IAAI,CACZ,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,eAAe,CAAC,CACzD,CAAA;YACL,CAAC;QACL,CAAC;QAED,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;QAEjD,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;QAChC,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;IAC/C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACb,WAA2B,EAC3B,OAAiC;QAEjC,KAAK,MAAM,MAAM,IAAI,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;QAC9C,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAClB,WAA2B,EAC3B,WAAqB,EACrB,cAAuB;QAEvB,MAAM,KAAK,GAAG,iCAAe,CAAC,OAAO,CAAC,WAAW,CAAC;YAC9C,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;QAC5C,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;QAEjC,MAAM,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,cAAc,CAAC,CAAA;QAEvE,4GAA4G;QAC5G,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACnC,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,KAAK,MAAM,CAAC,IAAI,CAAC;gBAC5D,MAAM,CAAC,SAAS,GAAG,IAAI,CAAA;QAC/B,CAAC,CAAC,CAAA;QACF,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAA;QAEhD,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QACnC,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;IAC/C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CACnB,WAA2B,EAC3B,OAAsB;QAEtB,MAAM,KAAK,GAAG,iCAAe,CAAC,OAAO,CAAC,WAAW,CAAC;YAC9C,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;QAC5C,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;QACjC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACxD,MAAM,SAAS,GAAY,EAAE,CAAA;QAC7B,MAAM,WAAW,GAAY,EAAE,CAAA;QAE/B,4DAA4D;QAC5D,MAAM,cAAc,GAAG,WAAW,CAAC,cAAc,CAAA;QACjD,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,wBAAwB;gBACrD,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,wBAAwB;gBAC5C,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,cAAc,CACzC,WAAW,EACX,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAC9C,CAAA;YAEP,MAAM,iBAAiB,GAAG,cAAc;iBACnC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC;iBACnC,IAAI,CAAC,IAAI,CAAC,CAAA;YAEf,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,qBAAqB,MAAM,GAAG,CAClC,CACJ,CAAA;YACD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,oBAAoB,MAAM,kBAAkB,iBAAiB,GAAG,CACpE,CACJ,CAAA;QACL,CAAC;QAED,2BAA2B;QAC3B,WAAW,CAAC,OAAO;aACd,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;aAC3D,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAA;QAEnD,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,wBAAwB;YACrD,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,wBAAwB;YAC5C,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,cAAc,CACzC,WAAW,EACX,WAAW,CACd,CAAA;QAEP,MAAM,iBAAiB,GAAG,WAAW;aAChC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,UAAU,GAAG,CAAC;aACtC,IAAI,CAAC,IAAI,CAAC,CAAA;QACf,SAAS,CAAC,IAAI,CACV,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,oBAAoB,MAAM,kBAAkB,iBAAiB,GAAG,CACpE,CACJ,CAAA;QACD,WAAW,CAAC,IAAI,CACZ,IAAI,aAAK,CACL,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,qBAAqB,MAAM,GAAG,CAClC,CACJ,CAAA;QAED,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;QACjD,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;IAC/C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAChB,WAA2B,EAC3B,cAAuB;QAEvB,MAAM,KAAK,GAAG,iCAAe,CAAC,OAAO,CAAC,WAAW,CAAC;YAC9C,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;QAC5C,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAA;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CACjC,KAAK,EACL,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EACjD,cAAc,CACjB,CAAA;QACD,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QACnC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACpC,MAAM,CAAC,SAAS,GAAG,KAAK,CAAA;QAC5B,CAAC,CAAC,CAAA;IACN,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,sBAAsB,CACxB,WAA2B,EAC3B,gBAA6B;QAE7B,MAAM,KAAK,GAAG,iCAAe,CAAC,OAAO,CAAC,WAAW,CAAC;YAC9C,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;QAE5C,mGAAmG;QACnG,IAAI,CAAC,gBAAgB,CAAC,IAAI;YACtB,gBAAgB,CAAC,IAAI;gBACjB,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,oBAAoB,CAC/C,KAAK,EACL,gBAAgB,CAAC,WAAW,CAC/B,CAAA;QAET,MAAM,EAAE,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAA;QAClE,mDAAmD;QACnD,iEAAiE;QACjE,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAA;QACvD,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QACnC,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAA;IAC/C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,uBAAuB,CACzB,WAA2B,EAC3B,iBAAgC;QAEhC,KAAK,MAAM,gBAAgB,IAAI,iBAAiB,EAAE,CAAC;YAC/C,MAAM,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAA;QACpE,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB,CACtB,WAA2B,EAC3B,YAAkC;QAElC,MAAM,KAAK,GAAG,iCAAe,CAAC,OAAO,CAAC,WAAW,CAAC;YAC9C,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;QAC5C,MAAM,gBAAgB,GAAG,iCAAe,CAAC,aAAa,CAAC,YAAY,CAAC;YAChE,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAA;QACxD,IAAI,CAAC,gBAAgB;YACjB,MAAM,IAAI,oBAAY,CAClB,qDAAqD,KAAK,CAAC,IAAI,EAAE,CACpE,CAAA;QAEL,mDAAmD;QACnD,iEAAiE;QACjE,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAA;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAA;QACpE,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QACnC,KAAK,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;IAClD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,qBAAqB,CACvB,WAA2B,EAC3B,iBAAgC;QAEhC,KAAK,MAAM,gBAAgB,IAAI,CAAC,GAAG,iBAAiB,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAA;QAClE,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,qBAAqB,CACvB,WAA2B,EAC3B,eAA2B;QAE3B,MAAM,KAAK,GAAG,iCAAe,CAAC,OAAO,CAAC,WAAW,CAAC;YAC9C,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;QAE5C,mGAAmG;QACnG,IAAI,CAAC,eAAe,CAAC,IAAI;YACrB,eAAe,CAAC,IAAI;gBAChB,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,mBAAmB,CAC9C,KAAK,EACL,eAAe,CAAC,UAAW,CAC9B,CAAA;QAET,MAAM,EAAE,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;QAChE,MAAM,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;QAChE,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QACnC,KAAK,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAA;IAC7C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,sBAAsB,CACxB,WAA2B,EAC3B,gBAA8B;QAE9B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,EAAE,CACtD,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,eAAe,CAAC,CAC3D,CAAA;QACD,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC/B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB,CACrB,WAA2B,EAC3B,WAAgC;QAEhC,MAAM,KAAK,GAAG,iCAAe,CAAC,OAAO,CAAC,WAAW,CAAC;YAC9C,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;QAC5C,MAAM,eAAe,GAAG,iCAAe,CAAC,YAAY,CAAC,WAAW,CAAC;YAC7D,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAA;QACtD,IAAI,CAAC,eAAe;YAChB,MAAM,IAAI,oBAAY,CAClB,oDAAoD,KAAK,CAAC,IAAI,EAAE,CACnE,CAAA;QAEL,MAAM,EAAE,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;QAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;QAClE,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QACnC,KAAK,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAA;IAChD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB,CACtB,WAA2B,EAC3B,gBAA8B;QAE9B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,EAAE,CACtD,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,eAAe,CAAC,CACzD,CAAA;QACD,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC/B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,yBAAyB,CAC3B,WAA2B,EAC3B,mBAAmC;QAEnC,MAAM,IAAI,oBAAY,CAClB,qDAAqD,CACxD,CAAA;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,0BAA0B,CAC5B,WAA2B,EAC3B,oBAAsC;QAEtC,MAAM,IAAI,oBAAY,CAClB,qDAAqD,CACxD,CAAA;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,uBAAuB,CACzB,WAA2B,EAC3B,eAAwC;QAExC,MAAM,IAAI,oBAAY,CAClB,qDAAqD,CACxD,CAAA;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,wBAAwB,CAC1B,WAA2B,EAC3B,oBAAsC;QAEtC,MAAM,IAAI,oBAAY,CAClB,qDAAqD,CACxD,CAAA;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAClB,WAA2B,EAC3B,UAA2B;QAE3B,MAAM,KAAK,GAAG,iCAAe,CAAC,OAAO,CAAC,WAAW,CAAC;YAC9C,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;QAE5C,gFAAgF;QAChF,IAAI,CAAC,UAAU,CAAC,IAAI;YAChB,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,cAAc,CAC3D,KAAK,EACL,UAAU,CAAC,WAAW,EACtB,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAC7B,UAAU,CAAC,qBAAqB,CACnC,CAAA;QAEL,MAAM,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;QACtD,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QACnC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;IACnC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CACnB,WAA2B,EAC3B,WAA8B;QAE9B,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACnC,MAAM,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;QACxD,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAChB,WAA2B,EAC3B,gBAA0C;QAE1C,MAAM,KAAK,GAAG,iCAAe,CAAC,OAAO,CAAC,WAAW,CAAC;YAC9C,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;QAC5C,MAAM,UAAU,GAAG,iCAAe,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;YAClE,CAAC,CAAC,gBAAgB;YAClB,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAA;QAClE,IAAI,CAAC,UAAU;YACX,MAAM,IAAI,oBAAY,CAClB,+CAA+C,KAAK,CAAC,IAAI,EAAE,CAC9D,CAAA;QAEL,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;QACxD,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QACnC,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAA;IACtC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CACjB,WAA2B,EAC3B,WAA8B;QAE9B,KAAK,MAAM,UAAU,IAAI,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;QACtD,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACb,WAA2B,EAC3B,KAAiB;QAEjB,MAAM,KAAK,GAAG,iCAAe,CAAC,OAAO,CAAC,WAAW,CAAC;YAC9C,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;QAE5C,sFAAsF;QACtF,IAAI,CAAC,KAAK,CAAC,IAAI;YAAE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAElE,2DAA2D;QAC3D,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,IAAI,yBAAW,CAAC;gBAC3B,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,WAAW,EAAE,KAAK,CAAC,WAAW;aACjC,CAAC,CAAA;YACF,MAAM,EAAE,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;YACxD,yDAAyD;YACzD,oGAAoG;YACpG,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;YAC7C,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;YACnC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAA;QACrC,CAAC;aAAM,CAAC;YACJ,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;YAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;YAC5C,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;YACnC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QACzB,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CACf,WAA2B,EAC3B,OAAqB;QAErB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;QAC9C,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CACX,WAA2B,EAC3B,WAAgC;QAEhC,MAAM,KAAK,GAAG,iCAAe,CAAC,OAAO,CAAC,WAAW,CAAC;YAC9C,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;QAC5C,MAAM,KAAK,GAAG,iCAAe,CAAC,YAAY,CAAC,WAAW,CAAC;YACnD,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAA;QACvD,IAAI,CAAC,KAAK;YACN,MAAM,IAAI,oBAAY,CAClB,kBAAkB,WAAW,2BAA2B,KAAK,CAAC,IAAI,EAAE,CACvE,CAAA;QAEL,sFAAsF;QACtF,IAAI,CAAC,KAAK,CAAC,IAAI;YAAE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAElE,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAC9C,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QACnC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;IAC5B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACb,WAA2B,EAC3B,OAAqB;QAErB,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;QAC5C,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU,CAAC,SAAiB;QAC9B,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;IACpE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa;QACf,MAAM,OAAO,GAAa,EAAE,CAAA;QAC5B,IAAI,CAAC,UAAU,CAAC,eAAe;aAC1B,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;aACrC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YAClB,MAAM,aAAa,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAChC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,CACzC,CAAA;YACD,IAAI,CAAC,aAAa;gBAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAO,CAAC,CAAA;QACtD,CAAC,CAAC,CAAA;QACN,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,kBAAkB,CAAC,CAAA;QAC9D,MAAM,iBAAiB,GAAG,OAAO;aAC5B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACV,OAAO,IAAI,KAAK,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,CAAA;QAChE,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAA;QAEf,MAAM,0BAA0B,GAAG,IAAI,CAAC,mBAAmB,CAAA;QAC3D,IAAI,CAAC,0BAA0B;YAAE,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAC9D,IAAI,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;YACvC,MAAM,oBAAoB,GACtB,+FAA+F;gBAC/F,0CAA0C,iBAAiB,GAAG,CAAA;YAClE,MAAM,eAAe,GAAoB,MAAM,IAAI,CAAC,KAAK,CACrD,oBAAoB,CACvB,CAAA;YACD,MAAM,OAAO,CAAC,GAAG,CACb,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CACrD,CAAA;YAED,MAAM,gBAAgB,GAAG,iKAAiK,iBAAiB,GAAG,CAAA;YAC9M,MAAM,WAAW,GAAoB,MAAM,IAAI,CAAC,KAAK,CACjD,gBAAgB,CACnB,CAAA;YACD,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;YAEjE,MAAM,wBAAwB,GAAG,8JAA8J,iBAAiB,GAAG,CAAA;YACnN,MAAM,mBAAmB,GAAoB,MAAM,IAAI,CAAC,KAAK,CACzD,wBAAwB,CAC3B,CAAA;YACD,MAAM,OAAO,CAAC,GAAG,CACb,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CACzD,CAAA;YAED,qDAAqD;YACrD,IAAI,2BAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;gBACpD,MAAM,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAA;YAC/C,CAAC;YAED,IAAI,CAAC,0BAA0B;gBAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAA;QACnE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC;gBACD,2DAA2D;gBAC3D,IAAI,CAAC,0BAA0B;oBAC3B,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAA;YACxC,CAAC;YAAC,MAAM,CAAC;gBACL,QAAQ;YACZ,CAAC;YACD,MAAM,KAAK,CAAA;QACf,CAAC;IACL,CAAC;IAED,4EAA4E;IAC5E,oBAAoB;IACpB,4EAA4E;IAElE,KAAK,CAAC,SAAS,CAAC,SAAoB;QAC1C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,2BAA2B,EAAE,CAAC,CAAA;QACxE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,OAAO,EAAE,CAAA;QACb,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,SAAS,GAAG,EAAE,CAAA;QAClB,CAAC;QAED,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAA;QACvD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAEnD,MAAM,cAAc,GAAG,SAAS;aAC3B,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YACd,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GACvB,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;YAExC,OAAO,oBACH,MAAM,IAAI,aACd,uBAAuB,SAAS,IAAI,CAAA;QACxC,CAAC,CAAC;aACD,IAAI,CAAC,MAAM,CAAC,CAAA;QAEjB,MAAM,KAAK,GACP,yCAAyC,IAAI,CAAC,UAAU,CACpD,IAAI,CAAC,2BAA2B,EAAE,CACrC,OAAO;YACR,0IACI,qCAAiB,CAAC,IACtB,KAAK,cAAc,CAAC,CAAC,CAAC,QAAQ,cAAc,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;QAC1D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACvC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAW,EAAE,EAAE;YAC/B,MAAM,IAAI,GAAG,IAAI,WAAI,EAAE,CAAA;YACvB,MAAM,MAAM,GACR,MAAM,CAAC,QAAQ,CAAC,KAAK,aAAa;gBAClC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM;gBACvB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YAC1B,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAA;YAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;YAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAA;YAC9D,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;YACjC,OAAO,IAAI,CAAA;QACf,CAAC,CAAC,CAAA;IACN,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,UAAU,CAAC,UAAqB;QAC5C,6CAA6C;QAC7C,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxC,OAAO,EAAE,CAAA;QACb,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACnD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAA;QAEvD,MAAM,QAAQ,GAAmD,EAAE,CAAA;QAEnE,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,MAAM,SAAS,GAAG,wEAAwE,CAAA;YAC1F,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QACnD,CAAC;aAAM,CAAC;YACJ,MAAM,eAAe,GAAG,UAAU;iBAC7B,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;iBACzD,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE;gBAC3B,OAAO,sBACH,MAAM,IAAI,aACd,yBAAyB,SAAS,IAAI,CAAA;YAC1C,CAAC,CAAC;iBACD,IAAI,CAAC,MAAM,CAAC,CAAA;YACjB,MAAM,SAAS,GACX,+EAA+E;gBAC/E,eAAe,CAAA;YAEnB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QACnD,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,EAAE,CAAA;QACb,CAAC;QAED,MAAM,gBAAgB,GAAG,QAAQ;aAC5B,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,EAAE;YAClC,OAAO,sBAAsB,YAAY,yBAAyB,UAAU,IAAI,CAAA;QACpF,CAAC,CAAC;aACD,IAAI,CAAC,MAAM,CAAC,CAAA;QACjB,MAAM,UAAU,GACZ,iEAAiE;YACjE,4JAA4J;YAC5J,sCAAsC;YACtC,kEAAkE;YAClE,4GAA4G;YAC5G,sJAAsJ;YACtJ,+BAA+B;YAC/B,gBAAgB,CAAA;QAEpB,MAAM,oBAAoB,GAAG,QAAQ;aAChC,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,EAAE;YAClC,OAAO,sBAAsB,YAAY,0BAA0B,UAAU,IAAI,CAAA;QACrF,CAAC,CAAC;aACD,IAAI,CAAC,MAAM,CAAC,CAAA;QAEjB,MAAM,cAAc,GAChB,iHAAiH;YACjH,sDAAsD;YACtD,8KAA8K;YAC9K,8BAA8B;YAC9B,6DAA6D;YAC7D,uEAAuE;YACvE,8GAA8G;YAC9G,kCAAkC,oBAAoB,GAAG,CAAA;QAE7D,MAAM,UAAU,GACZ,8IAA8I;YAC9I,4IAA4I;YAC5I,mCAAmC;YACnC,sBAAsB;YACtB,4DAA4D;YAC5D,sGAAsG;YACtG,oEAAoE;YACpE,6DAA6D;YAC7D,iEAAiE;YACjE,uEAAuE;YACvE,+DAA+D,oBAAoB,GAAG,CAAA;QAE1F,MAAM,oBAAoB,GAAG,QAAQ;aAChC,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,EAAE;YAClC,OAAO,sBAAsB,YAAY,2BAA2B,UAAU,IAAI,CAAA;QACtF,CAAC,CAAC;aACD,IAAI,CAAC,MAAM,CAAC,CAAA;QACjB,MAAM,cAAc,GAChB,sJAAsJ;YACtJ,8MAA8M;YAC9M,SAAS;YACT,gMAAgM;YAChM,kLAAkL;YAClL,iLAAiL;YACjL,uBAAuB;YACvB,qEAAqE;YACrE,sEAAsE;YACtE,qCAAqC,oBAAoB,IAAI;YAC7D,UAAU;YACV,6GAA6G;YAC7G,+DAA+D;YAC/D,qEAAqE;YACrE,+GAA+G,CAAA;QAEnH,MAAM,YAAY,GAAG,QAAQ;aACxB,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,YAAY,GAAG,CAAC;aAC7C,IAAI,CAAC,IAAI,CAAC,CAAA;QACf,MAAM,QAAQ,GACV,8EAA8E;YAC9E,qBAAqB;YACrB,0DAA0D;YAC1D,kEAAkE;YAClE,2BAA2B,YAAY,IAAI;YAC3C,wBAAwB,CAAA;QAE5B,MAAM,CACF,SAAS,EACT,aAAa,EACb,SAAS,EACT,aAAa,EACb,OAAO,EACV,GAAsB,MAAM,OAAO,CAAC,GAAG,CAAC;YACrC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;YACtB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;YACtB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;SACvB,CAAC,CAAA;QAEF,kCAAkC;QAClC,OAAO,OAAO,CAAC,GAAG,CACd,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YAC3B,MAAM,KAAK,GAAG,IAAI,aAAK,EAAE,CAAA;YAEzB,MAAM,gBAAgB,GAAG,CAAC,QAAa,EAAE,GAAW,EAAE,EAAE;gBACpD,OAAO,QAAQ,CAAC,GAAG,CAAC,KAAK,aAAa;oBAClC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM;wBACxB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,aAAa,CAAC;oBACjD,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;YACvB,CAAC,CAAA;YAED,mEAAmE;YACnE,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAA;YACxD,KAAK,CAAC,QAAQ,GAAG,eAAe,CAAA;YAChC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAA;YACtC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CACnC,OAAO,CAAC,YAAY,CAAC,EACrB,MAAM,CACT,CAAA;YAED,yCAAyC;YACzC,KAAK,CAAC,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,SAAS;iBACJ,MAAM,CACH,CAAC,QAAQ,EAAE,EAAE,CACT,QAAQ,CAAC,YAAY,CAAC;gBAClB,OAAO,CAAC,YAAY,CAAC;gBACzB,QAAQ,CAAC,cAAc,CAAC;oBACpB,OAAO,CAAC,cAAc,CAAC,CAClC;iBACA,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;gBACpB,MAAM,iBAAiB,GAAG,aAAa,CAAC,MAAM,CAC1C,CAAC,YAAY,EAAE,EAAE;oBACb,OAAO,CACH,YAAY,CAAC,YAAY,CAAC;wBACtB,QAAQ,CAAC,YAAY,CAAC;wBAC1B,YAAY,CAAC,cAAc,CAAC;4BACxB,QAAQ,CAAC,cAAc,CAAC;wBAC5B,YAAY,CAAC,aAAa,CAAC;4BACvB,QAAQ,CAAC,aAAa,CAAC,CAC9B,CAAA;gBACL,CAAC,CACJ,CAAA;gBAED,MAAM,WAAW,GAAG,IAAI,yBAAW,EAAE,CAAA;gBACrC,WAAW,CAAC,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAA;gBAE1C,WAAW,CAAC,IAAI;oBACZ,QAAQ,CAAC,eAAe,CAAC,CAAC,WAAW,EAAE,CAAA;gBAC3C,IACI,QAAQ,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;oBAC5C,CAAC,CAAC,EACJ,CAAC;oBACC,WAAW,CAAC,SAAS,GAAG,QAAQ,CAC5B,eAAe,CAClB,CAAC,MAAM,CACJ,QAAQ,CAAC,eAAe,CAAC,CAAC,OAAO,CAC7B,SAAS,CACZ;wBACG,SAAS,CAAC,MAAM;wBAChB,CAAC,EACL,QAAQ,CAAC,eAAe,CAAC,CAAC,MAAM,CACnC,CAAA;oBACD,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CACtC,CAAC,EACD,QAAQ,CAAC,eAAe,CAAC,CAAC,OAAO,CAC7B,SAAS,CACZ,GAAG,CAAC,CACR,CAAA;gBACL,CAAC;gBAED,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBACpC,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CACtC,CAAC,EACD,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAChC,CAAA;gBAEL,IACI,WAAW,CAAC,IAAI,KAAK,SAAS;oBAC9B,WAAW,CAAC,IAAI,KAAK,SAAS,EAChC,CAAC;oBACC,IACI,QAAQ,CAAC,mBAAmB,CAAC,KAAK,IAAI;wBACtC,CAAC,IAAI,CAAC,wBAAwB,CAC1B,KAAK,EACL,WAAW,EACX,QAAQ,CAAC,mBAAmB,CAAC,CAChC,EACH,CAAC;wBACC,WAAW,CAAC,SAAS,GAAG,QAAQ,CAC5B,QAAQ,CAAC,mBAAmB,CAAC,CAChC,CAAA;oBACL,CAAC;yBAAM,IACH,QAAQ,CAAC,eAAe,CAAC,KAAK,IAAI;wBAClC,CAAC,IAAI,CAAC,oBAAoB,CACtB,KAAK,EACL,WAAW,EACX,QAAQ,CAAC,eAAe,CAAC,CAC5B,EACH,CAAC;wBACC,WAAW,CAAC,SAAS,GAAG,SAAS,CAAA;oBACrC,CAAC;oBACD,IACI,QAAQ,CAAC,eAAe,CAAC,KAAK,IAAI;wBAClC,CAAC,IAAI,CAAC,oBAAoB,CACtB,KAAK,EACL,WAAW,EACX,QAAQ,CAAC,eAAe,CAAC,CAC5B,EACH,CAAC;wBACC,WAAW,CAAC,KAAK,GAAG,QAAQ,CACxB,QAAQ,CAAC,eAAe,CAAC,CAC5B,CAAA;oBACL,CAAC;yBAAM,IACH,QAAQ,CAAC,mBAAmB,CAAC,KAAK,IAAI;wBACtC,CAAC,IAAI,CAAC,wBAAwB,CAC1B,KAAK,EACL,WAAW,EACX,QAAQ,CAAC,mBAAmB,CAAC,CAChC,EACH,CAAC;wBACC,WAAW,CAAC,KAAK,GAAG,SAAS,CAAA;oBACjC,CAAC;gBACL,CAAC;gBAED,4DAA4D;gBAC5D,sGAAsG;gBACtG,2GAA2G;gBAC3G,OAAO;gBACP,mEAAmE;gBACnE,IAAI,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAA;gBAClC,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC7B,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;gBAC/C,CAAC;gBAED,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;oBACrC,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,OAAO,CAAA;gBACrC,CAAC,CAAC,CAAA;gBACF,IAAI,QAAQ,EAAE,CAAC;oBACX,2CAA2C;oBAC3C,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CACpC,KAAK,EACL,WAAW,EACX,KAAK,EACL,IAAI,CACP,CAAA;oBACD,MAAM,QAAQ,GACV,aAAa,KAAK,QAAQ,CAAC,MAAM,CAAC;wBAC9B,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;wBAClB,CAAC,CAAC,SAAS,CAAA;oBAEnB,WAAW,CAAC,IAAI,GAAG,MAAM,CAAA;oBACzB,WAAW,CAAC,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;oBAC/C,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAA;gBACnC,CAAC;gBAED,IACI,QAAQ,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,KAAK,OAAO,EACjD,CAAC;oBACC,WAAW,CAAC,OAAO,GAAG,IAAI,CAAA;oBAC1B,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACZ,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC;6BACjC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;6BACjB,WAAW,EAAE,CAAA;wBAClB,WAAW,CAAC,IAAI;4BACZ,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC;gCACjC,IAAI,EAAE,IAAI;6BACb,CAAC,CAAA;oBACV,CAAC;gBACL,CAAC;gBAED,+CAA+C;gBAC/C,IACI,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,OAAO,CACrC,WAAW,CAAC,IAAkB,CACjC,KAAK,CAAC,CAAC;oBACR,QAAQ,CAAC,0BAA0B,CAAC,EACtC,CAAC;oBACC,MAAM,MAAM,GACR,QAAQ,CACJ,0BAA0B,CAC7B,CAAC,QAAQ,EAAE,CAAA;oBAChB,WAAW,CAAC,MAAM;wBACd,CAAC,IAAI,CAAC,qBAAqB,CACvB,KAAK,EACL,WAAW,EACX,MAAM,CACT;4BACG,CAAC,CAAC,MAAM;4BACR,CAAC,CAAC,EAAE,CAAA;gBAChB,CAAC;gBACD,WAAW,CAAC,UAAU;oBAClB,QAAQ,CAAC,aAAa,CAAC,KAAK,KAAK,CAAA;gBAErC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,IAAI,CAC5C,CAAC,UAAU,EAAE,EAAE,CACX,UAAU,CAAC,iBAAiB,CAAC,KAAK,SAAS,CAClD,CAAA;gBACD,IAAI,iBAAiB,EAAE,CAAC;oBACpB,WAAW,CAAC,SAAS,GAAG,IAAI,CAAA;oBAC5B,0DAA0D;oBAC1D,MAAM,yBAAyB,GAC3B,aAAa,CAAC,MAAM,CAChB,CAAC,UAAU,EAAE,EAAE,CACX,UAAU,CAAC,YAAY,CAAC;wBACpB,QAAQ,CAAC,YAAY,CAAC;wBAC1B,UAAU,CAAC,cAAc,CAAC;4BACtB,QAAQ,CAAC,cAAc,CAAC;wBAC5B,UAAU,CAAC,aAAa,CAAC;4BACrB,QAAQ,CAAC,aAAa,CAAC;wBAC3B,UAAU,CAAC,iBAAiB,CAAC;4BACzB,SAAS,CACpB,CAAA;oBAEL,2BAA2B;oBAC3B,MAAM,WAAW,GACb,yBAAyB,CAAC,GAAG,CACzB,CAAC,UAAU,EAAE,EAAE,CACX,UAAU,CAAC,aAAa,CAAC,CAChC,CAAA;oBACL,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAA;oBAEzC,4CAA4C;oBAC5C,MAAM,MAAM,GACR,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,cAAc,CACzC,KAAK,EACL,WAAW,CACd,CAAA;oBAEL,4EAA4E;oBAC5E,IACI,iBAAiB,CAAC,iBAAiB,CAAC;wBACpC,MAAM,EACR,CAAC;wBACC,WAAW,CAAC,wBAAwB;4BAChC,iBAAiB,CAAC,iBAAiB,CAAC,CAAA;oBAC5C,CAAC;gBACL,CAAC;gBAED,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,MAAM,CAC9C,CAAC,UAAU,EAAE,EAAE,CACX,UAAU,CAAC,iBAAiB,CAAC,KAAK,QAAQ,CACjD,CAAA;gBACD,MAAM,qBAAqB,GACvB,iBAAiB,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,EAAE;oBACzC,OAAO,aAAa,CAAC,IAAI,CACrB,CAAC,YAAY,EAAE,EAAE,CACb,YAAY,CAAC,iBAAiB,CAAC;wBAC3B,QAAQ;wBACZ,YAAY,CAAC,iBAAiB,CAAC;4BAC3B,gBAAgB,CACZ,iBAAiB,CACpB;wBACL,YAAY,CAAC,aAAa,CAAC;4BACvB,QAAQ,CAAC,aAAa,CAAC,CAClC,CAAA;gBACL,CAAC,CAAC,CAAA;gBACN,WAAW,CAAC,QAAQ;oBAChB,iBAAiB,CAAC,MAAM,GAAG,CAAC;wBAC5B,CAAC,qBAAqB,CAAA;gBAE1B,IACI,QAAQ,CAAC,gBAAgB,CAAC,KAAK,IAAI;oBACnC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,SAAS,EAC1C,CAAC;oBACC,IACI,QAAQ,CAAC,gBAAgB,CAAC;wBAC1B,gBAAgB,EAClB,CAAC;wBACC,WAAW,CAAC,WAAW,GAAG,IAAI,CAAA;wBAC9B,WAAW,CAAC,kBAAkB,GAAG,OAAO,CAAA;oBAC5C,CAAC;yBAAM,IACH,QAAQ,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAC9B,SAAS,CACZ,KAAK,CAAC,CAAC,EACV,CAAC;wBACC,WAAW,CAAC,WAAW,GAAG,IAAI,CAAA;wBAC9B,WAAW,CAAC,kBAAkB,GAAG,WAAW,CAAA;oBAChD,CAAC;yBAAM,IACH,QAAQ,CAAC,gBAAgB,CAAC;wBAC1B,mBAAmB,EACrB,CAAC;wBACC,WAAW,CAAC,WAAW,GAAG,IAAI,CAAA;wBAC9B,WAAW,CAAC,kBAAkB,GAAG,MAAM,CAAA;oBAC3C,CAAC;yBAAM,CAAC;wBACJ,WAAW,CAAC,OAAO,GAAG,QAAQ,CAC1B,gBAAgB,CACnB,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAA;wBAChC,WAAW,CAAC,OAAO;4BACf,WAAW,CAAC,OAAO,CAAC,OAAO,CACvB,cAAc,EACd,MAAM,CACT,CAAA;wBAEL,IAAI,QAAQ,EAAE,CAAC;4BACX,WAAW,CAAC,OAAO;gCACf,WAAW,CAAC,OAAO,CAAC,OAAO,CACvB,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,EACtB,EAAE,CACL,CAAA;wBACT,CAAC;oBACL,CAAC;gBACL,CAAC;gBAED,IACI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,KAAK;oBAC/B,QAAQ,CAAC,cAAc,CAAC,KAAK,QAAQ,CAAC;oBAC1C,QAAQ,CAAC,uBAAuB,CAAC,EACnC,CAAC;oBACC,WAAW,CAAC,aAAa;wBACrB,QAAQ,CAAC,gBAAgB,CAAC,KAAK,GAAG;4BAC9B,CAAC,CAAC,QAAQ;4BACV,CAAC,CAAC,SAAS,CAAA;oBACnB,0GAA0G;oBAC1G,MAAM,iBAAiB,GACnB,IAAI,CAAC,wBAAwB,CAAC;wBAC1B,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC;wBAC/B,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC;wBAC5B,IAAI,EAAE,qCAAiB,CAAC,gBAAgB;wBACxC,IAAI,EAAE,WAAW,CAAC,IAAI;qBACzB,CAAC,CAAA;oBAEN,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAC5B,iBAAiB,CAAC,KAAK,EACvB,iBAAiB,CAAC,UAAU,CAC/B,CAAA;oBACD,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;wBACjC,WAAW,CAAC,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;oBAC/C,CAAC;yBAAM,CAAC;wBACJ,WAAW,CAAC,YAAY,GAAG,EAAE,CAAA;oBACjC,CAAC;gBACL,CAAC;gBAED,WAAW,CAAC,OAAO;oBACf,QAAQ,CAAC,aAAa,CAAC,IAAI,IAAI;wBAC3B,CAAC,CAAC,SAAS;wBACX,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;gBACjC,IAAI,QAAQ,CAAC,oBAAoB,CAAC;oBAC9B,WAAW,CAAC,OAAO;wBACf,QAAQ,CAAC,oBAAoB,CAAC,CAAA;gBAEtC,IACI,WAAW,CAAC,IAAI,KAAK,UAAU;oBAC/B,WAAW,CAAC,IAAI,KAAK,WAAW,EAClC,CAAC;oBACC,MAAM,GAAG,GACL,iBAAiB;wBACjB,uEAAuE;wBACvE,MAAM,WAAW,CAAC,IAAI,yCAAyC;wBAC/D,SAAS,WAAW,CAAC,IAAI,WAAW;wBACpC,SAAS;wBACT,0BAA0B,QAAQ,CAAC,aAAa,CAAC,QAAQ;wBACzD,qBAAqB,QAAQ,CAAC,cAAc,CAAC,QAAQ;wBACrD,mBAAmB,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAA;oBAEhD,MAAM,OAAO,GACT,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;oBAEzB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACrB,WAAW,CAAC,kBAAkB;4BAC1B,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;wBACnB,WAAW,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;4BAC9B,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;4BAC3B,CAAC,CAAC,SAAS,CAAA;oBACnB,CAAC;gBACL,CAAC;gBAED,OAAO,WAAW,CAAA;YACtB,CAAC,CAAC,CACT,CAAA;YAED,yFAAyF;YACzF,MAAM,sBAAsB,GAAG,mBAAQ,CAAC,IAAI,CACxC,aAAa,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,EAAE;gBAClC,OAAO,CACH,YAAY,CAAC,YAAY,CAAC;oBACtB,OAAO,CAAC,YAAY,CAAC;oBACzB,YAAY,CAAC,cAAc,CAAC;wBACxB,OAAO,CAAC,cAAc,CAAC;oBAC3B,YAAY,CAAC,iBAAiB,CAAC,KAAK,QAAQ,CAC/C,CAAA;YACL,CAAC,CAAC,EACF,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,iBAAiB,CAAC,CACpD,CAAA;YAED,KAAK,CAAC,OAAO,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;gBACtD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAChC,CAAC,GAAG,EAAE,EAAE,CACJ,GAAG,CAAC,iBAAiB,CAAC;oBACtB,UAAU,CAAC,iBAAiB,CAAC,CACpC,CAAA;gBACD,OAAO,IAAI,yBAAW,CAAC;oBACnB,IAAI,EAAE,UAAU,CAAC,iBAAiB,CAAC;oBACnC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;iBACpD,CAAC,CAAA;YACN,CAAC,CAAC,CAAA;YAEF,uFAAuF;YACvF,MAAM,qBAAqB,GAAG,mBAAQ,CAAC,IAAI,CACvC,aAAa,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,EAAE;gBAClC,OAAO,CACH,YAAY,CAAC,YAAY,CAAC;oBACtB,OAAO,CAAC,YAAY,CAAC;oBACzB,YAAY,CAAC,cAAc,CAAC;wBACxB,OAAO,CAAC,cAAc,CAAC;oBAC3B,YAAY,CAAC,iBAAiB,CAAC,KAAK,OAAO,CAC9C,CAAA;YACL,CAAC,CAAC,EACF,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,iBAAiB,CAAC,CACpD,CAAA;YAED,KAAK,CAAC,MAAM,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;gBACpD,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAC/B,CAAC,GAAG,EAAE,EAAE,CACJ,GAAG,CAAC,iBAAiB,CAAC;oBACtB,UAAU,CAAC,iBAAiB,CAAC,CACpC,CAAA;gBACD,OAAO,IAAI,uBAAU,CAAC;oBAClB,IAAI,EAAE,UAAU,CAAC,iBAAiB,CAAC;oBACnC,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;oBAChD,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,OAAO,CACxC,2BAA2B,EAC3B,IAAI,CACP;iBACJ,CAAC,CAAA;YACN,CAAC,CAAC,CAAA;YAEF,+FAA+F;YAC/F,MAAM,yBAAyB,GAAG,mBAAQ,CAAC,IAAI,CAC3C,aAAa,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,EAAE;gBAClC,OAAO,CACH,YAAY,CAAC,YAAY,CAAC;oBACtB,OAAO,CAAC,YAAY,CAAC;oBACzB,YAAY,CAAC,cAAc,CAAC;wBACxB,OAAO,CAAC,cAAc,CAAC;oBAC3B,YAAY,CAAC,iBAAiB,CAAC,KAAK,SAAS,CAChD,CAAA;YACL,CAAC,CAAC,EACF,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,iBAAiB,CAAC,CACpD,CAAA;YAED,KAAK,CAAC,UAAU,GAAG,yBAAyB,CAAC,GAAG,CAC5C,CAAC,UAAU,EAAE,EAAE;gBACX,OAAO,IAAI,+BAAc,CAAC;oBACtB,IAAI,EAAE,UAAU,CAAC,iBAAiB,CAAC;oBACnC,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,wCAAwC;iBAC9F,CAAC,CAAA;YACN,CAAC,CACJ,CAAA;YAED,kGAAkG;YAClG,MAAM,0BAA0B,GAAG,mBAAQ,CAAC,IAAI,CAC5C,aAAa,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,EAAE;gBAClC,OAAO,CACH,YAAY,CAAC,YAAY,CAAC;oBACtB,OAAO,CAAC,YAAY,CAAC;oBACzB,YAAY,CAAC,cAAc,CAAC;wBACxB,OAAO,CAAC,cAAc,CAAC,CAC9B,CAAA;YACL,CAAC,CAAC,EACF,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,iBAAiB,CAAC,CACpD,CAAA;YAED,KAAK,CAAC,WAAW,GAAG,0BAA0B,CAAC,GAAG,CAC9C,CAAC,YAAY,EAAE,EAAE;gBACb,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CACpC,CAAC,IAAI,EAAE,EAAE,CACL,IAAI,CAAC,iBAAiB,CAAC;oBACvB,YAAY,CAAC,iBAAiB,CAAC,CACtC,CAAA;gBAED,2GAA2G;gBAC3G,MAAM,MAAM,GAAG,gBAAgB,CAC3B,YAAY,EACZ,yBAAyB,CAC5B,CAAA;gBACD,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAClD,YAAY,CAAC,uBAAuB,CAAC,EACrC,MAAM,CACT,CAAA;gBAED,OAAO,IAAI,iCAAe,CAAC;oBACvB,IAAI,EAAE,YAAY,CAAC,iBAAiB,CAAC;oBACrC,WAAW,EAAE,WAAW,CAAC,GAAG,CACxB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAChC;oBACD,gBAAgB,EACZ,YAAY,CAAC,yBAAyB,CAAC;oBAC3C,mBAAmB,EAAE,mBAAmB;oBACxC,qBAAqB,EAAE,WAAW,CAAC,GAAG,CAClC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAC3C;oBACD,QAAQ,EAAE,YAAY,CAAC,WAAW,CAAC;oBACnC,QAAQ,EAAE,YAAY,CAAC,WAAW,CAAC;iBACtC,CAAC,CAAA;YACN,CAAC,CACJ,CAAA;YAED,uFAAuF;YACvF,MAAM,qBAAqB,GAAG,mBAAQ,CAAC,IAAI,CACvC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;gBACzB,OAAO,CACH,OAAO,CAAC,YAAY,CAAC,KAAK,OAAO,CAAC,YAAY,CAAC;oBAC/C,OAAO,CAAC,cAAc,CAAC,KAAK,OAAO,CAAC,cAAc,CAAC,CACtD,CAAA;YACL,CAAC,CAAC,EACF,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAC1C,CAAA;YAED,KAAK,CAAC,OAAO,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;gBACrD,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAC5B,CAAC,KAAK,EAAE,EAAE,CACN,KAAK,CAAC,iBAAiB,CAAC;oBACxB,UAAU,CAAC,iBAAiB,CAAC,CACpC,CAAA;gBACD,OAAO,IAAI,uBAAU,CAAoB;oBACrC,KAAK,EAAE,KAAK;oBACZ,IAAI,EAAE,UAAU,CAAC,iBAAiB,CAAC;oBACnC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;oBACjD,QAAQ,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,MAAM;oBAC5C,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC;oBAC9B,SAAS,EAAE,OAAO,CAAC,KAAK,CACpB,CAAC,CAAC,EAAE,EAAE,CACF,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAC5B,CAAC,CAAC,WAAW,CAAC,CACjB,IAAI,CAAC,CACb;oBACD,UAAU,EAAE,KAAK;iBACpB,CAAC,CAAA;YACN,CAAC,CAAC,CAAA;YAEF,OAAO,KAAK,CAAA;QAChB,CAAC,CAAC,CACL,CAAA;IACL,CAAC;IAED;;OAEG;IACO,cAAc,CAAC,KAAY,EAAE,iBAA2B;QAC9D,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO;aAClC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;aACzD,IAAI,CAAC,IAAI,CAAC,CAAA;QACf,IAAI,GAAG,GAAG,gBAAgB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,iBAAiB,EAAE,CAAA;QAExE,KAAK,CAAC,OAAO;aACR,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;aACnC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAChB,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CACpC,CAAC,MAAM,EAAE,EAAE,CACP,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;gBAC/B,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,CAC5C,CAAA;YACD,IAAI,CAAC,aAAa;gBACd,KAAK,CAAC,OAAO,CAAC,IAAI,CACd,IAAI,yBAAW,CAAC;oBACZ,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,oBAAoB,CACrD,KAAK,EACL,CAAC,MAAM,CAAC,IAAI,CAAC,CAChB;oBACD,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;iBAC7B,CAAC,CACL,CAAA;QACT,CAAC,CAAC,CAAA;QAEN,KAAK,CAAC,OAAO;aACR,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;aACjC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACf,KAAK,CAAC,OAAO,CAAC,IAAI,CACd,IAAI,yBAAW,CAAC;gBACZ,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,oBAAoB,CACrD,KAAK,EACL,KAAK,CAAC,WAAW,CACpB;gBACD,WAAW,EAAE,KAAK,CAAC,WAAW;aACjC,CAAC,CACL,CAAA;QACL,CAAC,CAAC,CAAA;QAEN,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO;iBAC3B,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBACZ,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI;oBAC1B,CAAC,CAAC,MAAM,CAAC,IAAI;oBACb,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,oBAAoB,CAC/C,KAAK,EACL,MAAM,CAAC,WAAW,CACrB,CAAA;gBACP,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW;qBACjC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,UAAU,GAAG,CAAC;qBACtC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACf,OAAO,eAAe,UAAU,aAAa,WAAW,GAAG,CAAA;YAC/D,CAAC,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC,CAAA;YAEf,GAAG,IAAI,KAAK,UAAU,EAAE,CAAA;QAC5B,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM;iBACzB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBACX,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI;oBACxB,CAAC,CAAC,KAAK,CAAC,IAAI;oBACZ,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,mBAAmB,CAC9C,KAAK,EACL,KAAK,CAAC,UAAW,CACpB,CAAA;gBACP,OAAO,eAAe,SAAS,YAAY,KAAK,CAAC,UAAU,GAAG,CAAA;YAClE,CAAC,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC,CAAA;YAEf,GAAG,IAAI,KAAK,SAAS,EAAE,CAAA;QAC3B,CAAC;QAED,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,iBAAiB,EAAE,CAAC;YACpD,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW;iBACnC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;gBACR,MAAM,WAAW,GAAG,EAAE,CAAC,WAAW;qBAC7B,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,UAAU,GAAG,CAAC;qBACtC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACf,IAAI,CAAC,EAAE,CAAC,IAAI;oBACR,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,cAAc,CACnD,KAAK,EACL,EAAE,CAAC,WAAW,EACd,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EACrB,EAAE,CAAC,qBAAqB,CAC3B,CAAA;gBACL,MAAM,qBAAqB,GAAG,EAAE,CAAC,qBAAqB;qBACjD,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,UAAU,GAAG,CAAC;qBACtC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAEf,IAAI,UAAU,GAAG,eACb,EAAE,CAAC,IACP,kBAAkB,WAAW,gBAAgB,IAAI,CAAC,UAAU,CACxD,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CACxB,KAAK,qBAAqB,GAAG,CAAA;gBAC9B,IAAI,EAAE,CAAC,QAAQ;oBAAE,UAAU,IAAI,cAAc,EAAE,CAAC,QAAQ,EAAE,CAAA;gBAC1D,IAAI,EAAE,CAAC,QAAQ;oBAAE,UAAU,IAAI,cAAc,EAAE,CAAC,QAAQ,EAAE,CAAA;gBAE1D,OAAO,UAAU,CAAA;YACrB,CAAC,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC,CAAA;YAEf,GAAG,IAAI,KAAK,cAAc,EAAE,CAAA;QAChC,CAAC;QAED,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CACvC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAC/B,CAAA;QACD,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,wBAAwB;gBAC7D,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,wBAAwB;gBAC5C,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,cAAc,CACzC,KAAK,EACL,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAC9C,CAAA;YAEP,MAAM,WAAW,GAAG,cAAc;iBAC7B,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC;iBACnC,IAAI,CAAC,IAAI,CAAC,CAAA;YACf,GAAG,IAAI,iBAAiB,cAAc,kBAAkB,WAAW,GAAG,CAAA;QAC1E,CAAC;QAED,GAAG,IAAI,GAAG,CAAA;QAEV,KAAK,CAAC,OAAO;aACR,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC;aAC1B,OAAO,CACJ,CAAC,EAAE,EAAE,EAAE,CACH,CAAC,GAAG,IAAI,uBAAuB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KACjD,EAAE,CAAC,IACP,QAAQ,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAChD,CAAA;QAEL,OAAO,IAAI,aAAK,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACZ,MAAM,MAAM,GAA0B,MAAM,IAAI,CAAC,KAAK,CAClD,+BAA+B,CAClC,CAAA;QACD,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;QAEvC,OAAO,aAAa,CAAC,OAAO,CAAC,gCAAgC,EAAE,IAAI,CAAC,CAAA;IACxE,CAAC;IAED;;OAEG;IACO,YAAY,CAAC,WAA2B;QAC9C,OAAO,IAAI,aAAK,CAAC,cAAc,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;IAClE,CAAC;IAES,aAAa,CAAC,IAAU;QAC9B,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YACtC,OAAO,IAAI,aAAK,CACZ,eAAe,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,UAAU,EAAE,CAC/D,CAAA;QACL,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,aAAK,CACZ,eAAe,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,IAAI;iBAC1C,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;iBAC3B,QAAQ,EAAE,EAAE,CACpB,CAAA;QACL,CAAC;IACL,CAAC;IAES,KAAK,CAAC,uBAAuB,CAAC,IAAU;QAC9C,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACnD,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QAClE,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,GAAG,aAAa,CAAA;QAC1B,CAAC;QAED,MAAM,UAAU,GACZ,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;YAC/B,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;YACxB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAA;QACrD,OAAO,IAAI,CAAC,wBAAwB,CAAC;YACjC,IAAI,EAAE,qCAAiB,CAAC,IAAI;YAC5B,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,UAAU;SACpB,CAAC,CAAA;IACN,CAAC;IAED;;OAEG;IACO,WAAW,CAAC,UAAyB;QAC3C,OAAO,IAAI,aAAK,CAAC,aAAa,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;IAChE,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,uBAAuB,CACnC,UAAyB;QAEzB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAEnD,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAA;QAExE,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,GAAG,aAAa,CAAA;QAC1B,CAAC;QAED,OAAO,IAAI,CAAC,wBAAwB,CAAC;YACjC,IAAI,EAAE,qCAAiB,CAAC,IAAI;YAC5B,MAAM;YACN,IAAI;SACP,CAAC,CAAA;IACN,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,aAAa,CAAC,WAAmB;QAC7C,MAAM,gBAAgB,GAClB,0GAA0G;YAC1G,0DAA0D;YAC1D,kEAAkE;YAClE,2BAA2B,WAAW,yCAAyC,CAAA;QACnF,MAAM,WAAW,GAAoB,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;QACvE,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;IACrE,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,WAAW,CACvB,KAAY,EACZ,MAAmB;QAEnB,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;QAElD,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAC1C,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;QAC/D,MAAM,GAAG,GACL,yDAAyD;YACzD,kEAAkE;YAClE,0BAA0B,MAAM,0BAA0B,QAAQ,GAAG,CAAA;QACzE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACpC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAA;IACvC,CAAC;IAED;;OAEG;IACO,iBAAiB,CACvB,KAAY,EACZ,MAAmB,EACnB,QAAiB;QAEjB,IAAI,CAAC,QAAQ;YAAE,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAC3D,MAAM,UAAU,GAAG,MAAM;aACpB,IAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;aACxD,IAAI,CAAC,IAAI,CAAC,CAAA;QACf,OAAO,IAAI,aAAK,CAAC,eAAe,QAAQ,YAAY,UAAU,GAAG,CAAC,CAAA;IACtE,CAAC;IAED;;OAEG;IACO,eAAe,CACrB,KAAY,EACZ,MAAmB,EACnB,QAAiB;QAEjB,IAAI,CAAC,QAAQ;YAAE,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAC3D,OAAO,IAAI,aAAK,CAAC,aAAa,QAAQ,EAAE,CAAC,CAAA;IAC7C,CAAC;IAED;;;OAGG;IACO,cAAc,CAAC,KAAY,EAAE,KAAiB;QACpD,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW;aAC5B,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,UAAU,GAAG,CAAC;aACtC,IAAI,CAAC,IAAI,CAAC,CAAA;QACf,OAAO,IAAI,aAAK,CACZ,UAAU,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,UACrC,KAAK,CAAC,IACV,QAAQ,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAC1B,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EACtC,IAAI,OAAO,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAC9D,CAAA;IACL,CAAC;IAED;;OAEG;IACO,YAAY,CAClB,KAAY,EACZ,WAA8C;QAE9C,MAAM,SAAS,GACX,iCAAe,CAAC,YAAY,CAAC,WAAW,CAAC;YACzC,iCAAe,CAAC,aAAa,CAAC,WAAW,CAAC;YACtC,CAAC,CAAC,WAAW,CAAC,IAAI;YAClB,CAAC,CAAC,WAAW,CAAA;QACrB,OAAO,IAAI,aAAK,CACZ,cAAc,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,SAAS,WAAW,CAChE,CAAA;IACL,CAAC;IAED;;OAEG;IACO,mBAAmB,CACzB,KAAY,EACZ,WAAqB,EACrB,cAAuB;QAEvB,MAAM,cAAc,GAAG,cAAc;YACjC,CAAC,CAAC,cAAc;YAChB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;QACvE,MAAM,iBAAiB,GAAG,WAAW;aAChC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,UAAU,GAAG,CAAC;aACtC,IAAI,CAAC,IAAI,CAAC,CAAA;QACf,OAAO,IAAI,aAAK,CACZ,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,oBAAoB,cAAc,kBAAkB,iBAAiB,GAAG,CAC5E,CAAA;IACL,CAAC;IAED;;OAEG;IACO,iBAAiB,CAAC,KAAY;QACpC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM;YAC5B,MAAM,IAAI,oBAAY,CAAC,SAAS,KAAK,uBAAuB,CAAC,CAAA;QAEjE,MAAM,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACrE,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAA;QACvE,MAAM,cAAc,GAAG,cAAc;YACjC,CAAC,CAAC,cAAc;YAChB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;QACvE,OAAO,IAAI,aAAK,CACZ,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,qBAAqB,cAAc,GAAG,CAC1C,CAAA;IACL,CAAC;IAED;;OAEG;IACO,yBAAyB,CAC/B,KAAY,EACZ,gBAA0C;QAE1C,MAAM,WAAW,GAAG,gBAAgB,CAAC,WAAW;aAC3C,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,GAAG,GAAG,CAAC;aACnC,IAAI,CAAC,IAAI,CAAC,CAAA;QACf,OAAO,IAAI,aAAK,CACZ,eAAe,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,oBACjC,gBAAgB,CAAC,IACrB,aAAa,WAAW,GAAG,CAC9B,CAAA;IACL,CAAC;IAED;;OAEG;IACO,uBAAuB,CAC7B,KAAY,EACZ,YAAkC;QAElC,MAAM,UAAU,GAAG,iCAAe,CAAC,aAAa,CAAC,YAAY,CAAC;YAC1D,CAAC,CAAC,YAAY,CAAC,IAAI;YACnB,CAAC,CAAC,YAAY,CAAA;QAClB,OAAO,IAAI,aAAK,CACZ,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,qBAAqB,UAAU,GAAG,CACtC,CAAA;IACL,CAAC;IAED;;OAEG;IACO,wBAAwB,CAC9B,KAAY,EACZ,eAA2B;QAE3B,OAAO,IAAI,aAAK,CACZ,eAAe,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,oBACjC,eAAe,CAAC,IACpB,YAAY,eAAe,CAAC,UAAU,GAAG,CAC5C,CAAA;IACL,CAAC;IAED;;OAEG;IACO,sBAAsB,CAC5B,KAAY,EACZ,WAAgC;QAEhC,MAAM,SAAS,GAAG,iCAAe,CAAC,YAAY,CAAC,WAAW,CAAC;YACvD,CAAC,CAAC,WAAW,CAAC,IAAI;YAClB,CAAC,CAAC,WAAW,CAAA;QACjB,OAAO,IAAI,aAAK,CACZ,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,qBAAqB,SAAS,GAAG,CACrC,CAAA;IACL,CAAC;IAED;;OAEG;IACO,mBAAmB,CACzB,KAAY,EACZ,UAA2B;QAE3B,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW;aACrC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,GAAG,GAAG,CAAC;aACnC,IAAI,CAAC,IAAI,CAAC,CAAA;QACf,MAAM,qBAAqB,GAAG,UAAU,CAAC,qBAAqB;aACzD,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,GAAG,GAAG,CAAC;aACnC,IAAI,CAAC,GAAG,CAAC,CAAA;QACd,IAAI,GAAG,GACH,eAAe,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,oBACjC,UAAU,CAAC,IACf,kBAAkB,WAAW,IAAI;YACjC,cAAc,IAAI,CAAC,UAAU,CACzB,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAChC,IAAI,qBAAqB,GAAG,CAAA;QACjC,IAAI,UAAU,CAAC,QAAQ;YAAE,GAAG,IAAI,cAAc,UAAU,CAAC,QAAQ,EAAE,CAAA;QACnE,IAAI,UAAU,CAAC,QAAQ;YAAE,GAAG,IAAI,cAAc,UAAU,CAAC,QAAQ,EAAE,CAAA;QAEnE,OAAO,IAAI,aAAK,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC;IAED;;OAEG;IACO,iBAAiB,CACvB,KAAY,EACZ,gBAA0C;QAE1C,MAAM,cAAc,GAAG,iCAAe,CAAC,iBAAiB,CACpD,gBAAgB,CACnB;YACG,CAAC,CAAC,gBAAgB,CAAC,IAAI;YACvB,CAAC,CAAC,gBAAgB,CAAA;QACtB,OAAO,IAAI,aAAK,CACZ,eAAe,IAAI,CAAC,UAAU,CAC1B,KAAK,CACR,qBAAqB,cAAc,GAAG,CAC1C,CAAA;IACL,CAAC;IAED;;OAEG;IACO,iBAAiB,CACvB,KAAY,EACZ,YAAkC;QAElC,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;QAEvD,MAAM,UAAU,GAAG,iCAAe,CAAC,aAAa,CAAC,YAAY,CAAC;YAC1D,CAAC,CAAC,YAAY,CAAC,IAAI;YACnB,CAAC,CAAC,YAAY,CAAA;QAElB,OAAO,GAAG,SAAS,IAAI,UAAU,MAAM,CAAA;IAC3C,CAAC;IAES,iBAAiB,CACvB,KAAY,EACZ,YAAkC;QAElC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;QAEpD,OAAO,MAAM;YACT,CAAC,CAAC,GAAG,MAAM,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE;YAC5D,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;IACrD,CAAC;IAED;;OAEG;IACO,aAAa,CACnB,KAAY,EACZ,MAAmB,EACnB,aAAsB,IAAI,EAC1B,aAAuB,EACvB,KAAe;QAEf,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;QAC/D,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ;YAC1B,CAAC,CAAC,MAAM,CAAC,QAAQ;YACjB,CAAC,CAAC,GAAG,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAA;QACtD,IAAI,MAAM,IAAI,UAAU;YAAE,QAAQ,GAAG,GAAG,MAAM,IAAI,QAAQ,EAAE,CAAA;QAC5D,IAAI,KAAK;YAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAA;QACvC,OAAO,QAAQ;aACV,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACP,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAA;QACvC,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC,CAAA;IAClB,CAAC;IAES,KAAK,CAAC,sBAAsB,CAAC,KAAY,EAAE,MAAmB;QACpE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;QAEnE,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAC1C,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAC3B,kCAAkC;YAC9B,+DAA+D,MAAM,yBAAyB,IAAI,wBAAwB,MAAM,CAAC,IAAI,GAAG,CAC/I,CAAA;QAED,4DAA4D;QAC5D,sGAAsG;QACtG,2GAA2G;QAC3G,OAAO;QACP,mEAAmE;QACnE,IAAI,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;QACnC,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;QAC/C,CAAC;QACD,OAAO;YACH,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;YAC/B,IAAI,EAAE,OAAO;SAChB,CAAA;IACL,CAAC;IAED;;OAEG;IACO,aAAa,CAAC,OAAgB;QACpC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChD,OAAO,MAAM,CAAA;QACjB,CAAC;QAED,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA,CAAC,wCAAwC;QAErG,OAAO,IAAI,OAAO,GAAG,CAAA;IACzB,CAAC;IAED;;OAEG;IACO,UAAU,CAAC,MAA6B;QAC9C,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;QAEhE,IAAI,MAAM,IAAI,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAChD,OAAO,IAAI,MAAM,MAAM,SAAS,GAAG,CAAA;QACvC,CAAC;QAED,OAAO,IAAI,SAAS,GAAG,CAAA;IAC3B,CAAC;IAED;;OAEG;IACO,oBAAoB,CAAC,KAAY,EAAE,MAAmB;QAC5D,IAAI,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,GAAG,GAAG,CAAA;QAE/B,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,MAAM,CAAC,kBAAkB,KAAK,WAAW,EAAE,CAAC;gBAC5C,CAAC,IAAI,yBAAyB,IAAI,CAAC,UAAU,CACzC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CACxC,IAAI,CAAA;YACT,CAAC;iBAAM,IAAI,MAAM,CAAC,kBAAkB,KAAK,OAAO,EAAE,CAAC;gBAC/C,CAAC,IAAI,6BAA6B,CAAA;YACtC,CAAC;iBAAM,IAAI,MAAM,CAAC,kBAAkB,KAAK,MAAM,EAAE,CAAC;gBAC9C,CAAC,IAAI,iCAAiC,CAAA;YAC1C,CAAC;QACL,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YAC1D,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;YAC5C,IAAI,MAAM,CAAC,OAAO;gBAAE,CAAC,IAAI,QAAQ,CAAA;QACrC,CAAC;aAAM,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC7B,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;QAC5D,CAAC;QAED,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACtB,CAAC,IAAI,QAAQ,MAAM,CAAC,YAAY,KAC5B,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,SAClD,EAAE,CAAA;QACN,CAAC;aAAM,CAAC;YACJ,IAAI,MAAM,CAAC,OAAO;gBAAE,CAAC,IAAI,kBAAkB,GAAG,MAAM,CAAC,OAAO,GAAG,GAAG,CAAA;YAClE,IAAI,MAAM,CAAC,SAAS;gBAAE,CAAC,IAAI,YAAY,GAAG,MAAM,CAAC,SAAS,GAAG,GAAG,CAAA;QACpE,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,UAAU;YAAE,CAAC,IAAI,WAAW,CAAA;QACxC,IACI,CAAC,MAAM,CAAC,WAAW;YACnB,MAAM,CAAC,OAAO,KAAK,SAAS;YAC5B,MAAM,CAAC,OAAO,KAAK,IAAI;YAEvB,CAAC,IAAI,WAAW,GAAG,MAAM,CAAC,OAAO,CAAA;QAErC,OAAO,CAAC,CAAA;IACZ,CAAC;IACD;;OAEG;IACH,kBAAkB,CACd,WAA2B,EAC3B,OAAgB;QAEhB,MAAM,IAAI,oBAAY,CAClB,2DAA2D,CAC9D,CAAA;IACL,CAAC;CACJ;AA5lID,oDA4lIC","file":"CockroachQueryRunner.js","sourcesContent":["import { ObjectLiteral } from \"../../common/ObjectLiteral\"\nimport { TypeORMError } from \"../../error\"\nimport { QueryFailedError } from \"../../error/QueryFailedError\"\nimport { QueryRunnerAlreadyReleasedError } from \"../../error/QueryRunnerAlreadyReleasedError\"\nimport { TransactionNotStartedError } from \"../../error/TransactionNotStartedError\"\nimport { ReadStream } from \"../../platform/PlatformTools\"\nimport { BaseQueryRunner } from \"../../query-runner/BaseQueryRunner\"\nimport { QueryResult } from \"../../query-runner/QueryResult\"\nimport { QueryRunner } from \"../../query-runner/QueryRunner\"\nimport { TableIndexOptions } from \"../../schema-builder/options/TableIndexOptions\"\nimport { Table } from \"../../schema-builder/table/Table\"\nimport { TableCheck } from \"../../schema-builder/table/TableCheck\"\nimport { TableColumn } from \"../../schema-builder/table/TableColumn\"\nimport { TableExclusion } from \"../../schema-builder/table/TableExclusion\"\nimport { TableForeignKey } from \"../../schema-builder/table/TableForeignKey\"\nimport { TableIndex } from \"../../schema-builder/table/TableIndex\"\nimport { TableUnique } from \"../../schema-builder/table/TableUnique\"\nimport { View } from \"../../schema-builder/view/View\"\nimport { Broadcaster } from \"../../subscriber/Broadcaster\"\nimport { BroadcasterResult } from \"../../subscriber/BroadcasterResult\"\nimport { InstanceChecker } from \"../../util/InstanceChecker\"\nimport { OrmUtils } from \"../../util/OrmUtils\"\nimport { VersionUtils } from \"../../util/VersionUtils\"\nimport { Query } from \"../Query\"\nimport { ColumnType } from \"../types/ColumnTypes\"\nimport { IsolationLevel } from \"../types/IsolationLevel\"\nimport { MetadataTableType } from \"../types/MetadataTableType\"\nimport { ReplicationMode } from \"../types/ReplicationMode\"\nimport { CockroachDriver } from \"./CockroachDriver\"\n\n/**\n * Runs queries on a single postgres database connection.\n */\nexport class CockroachQueryRunner\n extends BaseQueryRunner\n implements QueryRunner\n{\n // -------------------------------------------------------------------------\n // Public Implemented Properties\n // -------------------------------------------------------------------------\n\n /**\n * Database driver used by connection.\n */\n driver: CockroachDriver\n\n // -------------------------------------------------------------------------\n // Protected Properties\n // -------------------------------------------------------------------------\n\n /**\n * Promise used to obtain a database connection for a first time.\n */\n protected databaseConnectionPromise: Promise<any>\n\n /**\n * Special callback provided by a driver used to release a created connection.\n */\n protected releaseCallback?: (err: any) => void\n\n /**\n * Stores all executed queries to be able to run them again if transaction fails.\n */\n protected queries: { query: string; parameters?: any[] }[] = []\n\n /**\n * Indicates if running queries must be stored\n */\n protected storeQueries: boolean = false\n\n /**\n * Current number of transaction retries in case of 40001 error.\n */\n protected transactionRetries: number = 0\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(driver: CockroachDriver, mode: ReplicationMode) {\n super()\n this.driver = driver\n this.connection = driver.connection\n this.mode = mode\n this.broadcaster = new Broadcaster(this)\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates/uses database connection from the connection pool to perform further operations.\n * Returns obtained database connection.\n */\n connect(): Promise<any> {\n if (this.databaseConnection)\n return Promise.resolve(this.databaseConnection)\n\n if (this.databaseConnectionPromise)\n return this.databaseConnectionPromise\n\n if (this.mode === \"slave\" && this.driver.isReplicated) {\n this.databaseConnectionPromise = this.driver\n .obtainSlaveConnection()\n .then(([connection, release]: any[]) => {\n this.driver.connectedQueryRunners.push(this)\n this.databaseConnection = connection\n\n const onErrorCallback = (err: Error) =>\n this.releaseConnection(err)\n this.releaseCallback = (err?: Error) => {\n this.databaseConnection.removeListener(\n \"error\",\n onErrorCallback,\n )\n release(err)\n }\n this.databaseConnection.on(\"error\", onErrorCallback)\n\n return this.databaseConnection\n })\n } else {\n // master\n this.databaseConnectionPromise = this.driver\n .obtainMasterConnection()\n .then(([connection, release]: any[]) => {\n this.driver.connectedQueryRunners.push(this)\n this.databaseConnection = connection\n\n const onErrorCallback = (err: Error) =>\n this.releaseConnection(err)\n this.releaseCallback = (err?: Error) => {\n this.databaseConnection.removeListener(\n \"error\",\n onErrorCallback,\n )\n release(err)\n }\n this.databaseConnection.on(\"error\", onErrorCallback)\n\n return this.databaseConnection\n })\n }\n\n return this.databaseConnectionPromise\n }\n\n /**\n * Release a connection back to the pool, optionally specifying an Error to release with.\n * Per pg-pool documentation this will prevent the pool from re-using the broken connection.\n */\n private async releaseConnection(err?: Error) {\n if (this.isReleased) {\n return\n }\n\n this.isReleased = true\n if (this.releaseCallback) {\n this.releaseCallback(err)\n this.releaseCallback = undefined\n }\n\n const index = this.driver.connectedQueryRunners.indexOf(this)\n\n if (index !== -1) {\n this.driver.connectedQueryRunners.splice(index, 1)\n }\n }\n\n /**\n * Releases used database connection.\n * You cannot use query runner methods once its released.\n */\n release(): Promise<void> {\n return this.releaseConnection()\n }\n\n /**\n * Starts transaction.\n */\n async startTransaction(isolationLevel?: IsolationLevel): Promise<void> {\n this.isTransactionActive = true\n this.transactionRetries = 0\n try {\n await this.broadcaster.broadcast(\"BeforeTransactionStart\")\n } catch (err) {\n this.isTransactionActive = false\n throw err\n }\n\n if (this.transactionDepth === 0) {\n await this.query(\"START TRANSACTION\")\n await this.query(\"SAVEPOINT cockroach_restart\")\n if (isolationLevel) {\n await this.query(\n \"SET TRANSACTION ISOLATION LEVEL \" + isolationLevel,\n )\n }\n } else {\n await this.query(`SAVEPOINT typeorm_${this.transactionDepth}`)\n }\n\n this.transactionDepth += 1\n this.storeQueries = true\n\n await this.broadcaster.broadcast(\"AfterTransactionStart\")\n }\n\n /**\n * Commits transaction.\n * Error will be thrown if transaction was not started.\n */\n async commitTransaction(): Promise<void> {\n if (!this.isTransactionActive) throw new TransactionNotStartedError()\n\n await this.broadcaster.broadcast(\"BeforeTransactionCommit\")\n\n if (this.transactionDepth > 1) {\n await this.query(\n `RELEASE SAVEPOINT typeorm_${this.transactionDepth - 1}`,\n )\n this.transactionDepth -= 1\n } else {\n this.storeQueries = false\n await this.query(\"RELEASE SAVEPOINT cockroach_restart\")\n await this.query(\"COMMIT\")\n this.queries = []\n this.isTransactionActive = false\n this.transactionRetries = 0\n this.transactionDepth -= 1\n }\n\n await this.broadcaster.broadcast(\"AfterTransactionCommit\")\n }\n\n /**\n * Rollbacks transaction.\n * Error will be thrown if transaction was not started.\n */\n async rollbackTransaction(): Promise<void> {\n if (!this.isTransactionActive) throw new TransactionNotStartedError()\n\n await this.broadcaster.broadcast(\"BeforeTransactionRollback\")\n\n if (this.transactionDepth > 1) {\n await this.query(\n `ROLLBACK TO SAVEPOINT typeorm_${this.transactionDepth - 1}`,\n )\n } else {\n this.storeQueries = false\n await this.query(\"ROLLBACK\")\n this.queries = []\n this.isTransactionActive = false\n this.transactionRetries = 0\n }\n this.transactionDepth -= 1\n\n await this.broadcaster.broadcast(\"AfterTransactionRollback\")\n }\n\n /**\n * Executes a given SQL query.\n */\n async query(\n query: string,\n parameters?: any[],\n useStructuredResult = false,\n ): Promise<any> {\n if (this.isReleased) throw new QueryRunnerAlreadyReleasedError()\n\n const databaseConnection = await this.connect()\n\n this.driver.connection.logger.logQuery(query, parameters, this)\n await this.broadcaster.broadcast(\"BeforeQuery\", query, parameters)\n\n const broadcasterResult = new BroadcasterResult()\n const queryStartTime = Date.now()\n\n if (this.isTransactionActive && this.storeQueries) {\n this.queries.push({ query, parameters })\n }\n\n try {\n const raw = await new Promise<any>((ok, fail) => {\n databaseConnection.query(\n query,\n parameters,\n (err: any, raw: any) => (err ? fail(err) : ok(raw)),\n )\n })\n\n // log slow queries if maxQueryExecution time is set\n const maxQueryExecutionTime =\n this.driver.options.maxQueryExecutionTime\n const queryEndTime = Date.now()\n const queryExecutionTime = queryEndTime - queryStartTime\n if (\n maxQueryExecutionTime &&\n queryExecutionTime > maxQueryExecutionTime\n ) {\n this.driver.connection.logger.logQuerySlow(\n queryExecutionTime,\n query,\n parameters,\n this,\n )\n }\n\n const result = new QueryResult()\n\n if (raw.hasOwnProperty(\"rowCount\")) {\n result.affected = raw.rowCount\n }\n\n if (raw.hasOwnProperty(\"rows\")) {\n result.records = raw.rows\n }\n\n switch (raw.command) {\n case \"DELETE\":\n // for DELETE query additionally return number of affected rows\n result.raw = [raw.rows, raw.rowCount]\n break\n default:\n result.raw = raw.rows\n }\n\n this.broadcaster.broadcastAfterQueryEvent(\n broadcasterResult,\n query,\n parameters,\n true,\n queryExecutionTime,\n raw,\n undefined,\n )\n\n if (useStructuredResult) {\n return result\n } else {\n return result.raw\n }\n } catch (err) {\n if (\n err.code === \"40001\" &&\n this.isTransactionActive &&\n this.transactionRetries <\n (this.driver.options.maxTransactionRetries || 5)\n ) {\n this.transactionRetries += 1\n this.storeQueries = false\n await this.query(\"ROLLBACK TO SAVEPOINT cockroach_restart\")\n const sleepTime =\n 2 ** this.transactionRetries *\n 0.1 *\n (Math.random() + 0.5) *\n 1000\n await new Promise((resolve) => setTimeout(resolve, sleepTime))\n\n let result = undefined\n for (const q of this.queries) {\n this.driver.connection.logger.logQuery(\n `Retrying transaction for query \"${q.query}\"`,\n q.parameters,\n this,\n )\n result = await this.query(q.query, q.parameters)\n }\n this.transactionRetries = 0\n this.storeQueries = true\n\n return result\n } else {\n this.driver.connection.logger.logQueryError(\n err,\n query,\n parameters,\n this,\n )\n this.broadcaster.broadcastAfterQueryEvent(\n broadcasterResult,\n query,\n parameters,\n false,\n undefined,\n undefined,\n err,\n )\n throw new QueryFailedError(query, parameters, err)\n }\n } finally {\n await broadcasterResult.wait()\n }\n }\n\n /**\n * Returns raw data stream.\n */\n async stream(\n query: string,\n parameters?: any[],\n onEnd?: Function,\n onError?: Function,\n ): Promise<ReadStream> {\n const QueryStream = this.driver.loadStreamDependency()\n if (this.isReleased) {\n throw new QueryRunnerAlreadyReleasedError()\n }\n\n const databaseConnection = await this.connect()\n this.driver.connection.logger.logQuery(query, parameters, this)\n const stream = databaseConnection.query(\n new QueryStream(query, parameters),\n )\n\n if (onEnd) {\n stream.on(\"end\", onEnd)\n }\n\n if (onError) {\n stream.on(\"error\", onError)\n }\n\n return stream\n }\n\n /**\n * Returns all available database names including system databases.\n */\n async getDatabases(): Promise<string[]> {\n return Promise.resolve([])\n }\n\n /**\n * Returns all available schema names including system schemas.\n * If database parameter specified, returns schemas of that database.\n */\n async getSchemas(database?: string): Promise<string[]> {\n return Promise.resolve([])\n }\n\n /**\n * Checks if database with the given name exist.\n */\n async hasDatabase(database: string): Promise<boolean> {\n const result = await this.query(\n `SELECT * FROM \"pg_database\" WHERE \"datname\" = '${database}'`,\n )\n return result.length ? true : false\n }\n\n /**\n * Loads currently using database\n */\n async getCurrentDatabase(): Promise<string> {\n const query = await this.query(`SELECT * FROM current_database()`)\n return query[0][\"current_database\"]\n }\n\n /**\n * Checks if schema with the given name exist.\n */\n async hasSchema(schema: string): Promise<boolean> {\n const result = await this.query(\n `SELECT * FROM \"information_schema\".\"schemata\" WHERE \"schema_name\" = '${schema}'`,\n )\n return result.length ? true : false\n }\n\n /**\n * Loads currently using database schema\n */\n async getCurrentSchema(): Promise<string> {\n const query = await this.query(`SELECT * FROM current_schema()`)\n return query[0][\"current_schema\"]\n }\n\n /**\n * Checks if table with the given name exist in the database.\n */\n async hasTable(tableOrName: Table | string): Promise<boolean> {\n const parsedTableName = this.driver.parseTableName(tableOrName)\n\n if (!parsedTableName.schema) {\n parsedTableName.schema = await this.getCurrentSchema()\n }\n\n const sql = `SELECT * FROM \"information_schema\".\"tables\" WHERE \"table_schema\" = '${parsedTableName.schema}' AND \"table_name\" = '${parsedTableName.tableName}'`\n const result = await this.query(sql)\n return result.length ? true : false\n }\n\n /**\n * Checks if column with the given name exist in the given table.\n */\n async hasColumn(\n tableOrName: Table | string,\n columnName: string,\n ): Promise<boolean> {\n const parsedTableName = this.driver.parseTableName(tableOrName)\n\n if (!parsedTableName.schema) {\n parsedTableName.schema = await this.getCurrentSchema()\n }\n\n const sql = `SELECT * FROM \"information_schema\".\"columns\" WHERE \"table_schema\" = '${parsedTableName.schema}' AND \"table_name\" = '${parsedTableName.tableName}' AND \"column_name\" = '${columnName}'`\n const result = await this.query(sql)\n return result.length ? true : false\n }\n\n /**\n * Creates a new database.\n */\n async createDatabase(\n database: string,\n ifNotExist?: boolean,\n ): Promise<void> {\n const up = `CREATE DATABASE ${\n ifNotExist ? \"IF NOT EXISTS \" : \"\"\n } \"${database}\"`\n const down = `DROP DATABASE \"${database}\"`\n await this.executeQueries(new Query(up), new Query(down))\n }\n\n /**\n * Drops database.\n */\n async dropDatabase(database: string, ifExist?: boolean): Promise<void> {\n const up = `DROP DATABASE ${ifExist ? \"IF EXISTS \" : \"\"} \"${database}\"`\n const down = `CREATE DATABASE \"${database}\"`\n await this.executeQueries(new Query(up), new Query(down))\n }\n\n /**\n * Creates a new table schema.\n */\n async createSchema(\n schemaPath: string,\n ifNotExist?: boolean,\n ): Promise<void> {\n const schema =\n schemaPath.indexOf(\".\") === -1\n ? schemaPath\n : schemaPath.split(\".\")[1]\n\n const up = ifNotExist\n ? `CREATE SCHEMA IF NOT EXISTS \"${schema}\"`\n : `CREATE SCHEMA \"${schema}\"`\n const down = `DROP SCHEMA \"${schema}\" CASCADE`\n await this.executeQueries(new Query(up), new Query(down))\n }\n\n /**\n * Drops table schema.\n */\n async dropSchema(\n schemaPath: string,\n ifExist?: boolean,\n isCascade?: boolean,\n ): Promise<void> {\n const schema =\n schemaPath.indexOf(\".\") === -1\n ? schemaPath\n : schemaPath.split(\".\")[1]\n\n const up = ifExist\n ? `DROP SCHEMA IF EXISTS \"${schema}\" ${isCascade ? \"CASCADE\" : \"\"}`\n : `DROP SCHEMA \"${schema}\" ${isCascade ? \"CASCADE\" : \"\"}`\n const down = `CREATE SCHEMA \"${schema}\"`\n await this.executeQueries(new Query(up), new Query(down))\n }\n\n /**\n * Creates a new table.\n */\n async createTable(\n table: Table,\n ifNotExist: boolean = false,\n createForeignKeys: boolean = true,\n createIndices: boolean = true,\n ): Promise<void> {\n if (ifNotExist) {\n const isTableExist = await this.hasTable(table)\n if (isTableExist) return Promise.resolve()\n }\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n\n // if table have column with ENUM type, we must create this type in postgres.\n const enumColumns = table.columns.filter(\n (column) => column.type === \"enum\" || column.type === \"simple-enum\",\n )\n const createdEnumTypes: string[] = []\n for (const column of enumColumns) {\n // TODO: Should also check if values of existing type matches expected ones\n const hasEnum = await this.hasEnumType(table, column)\n const enumName = this.buildEnumName(table, column)\n\n // if enum with the same \"enumName\" is defined more then once, me must prevent double creation\n if (!hasEnum && createdEnumTypes.indexOf(enumName) === -1) {\n createdEnumTypes.push(enumName)\n upQueries.push(this.createEnumTypeSql(table, column, enumName))\n downQueries.push(this.dropEnumTypeSql(table, column, enumName))\n }\n }\n\n table.columns\n .filter(\n (column) =>\n column.isGenerated &&\n column.generationStrategy === \"increment\",\n )\n .forEach((column) => {\n upQueries.push(\n new Query(\n `CREATE SEQUENCE ${this.escapePath(\n this.buildSequencePath(table, column),\n )}`,\n ),\n )\n downQueries.push(\n new Query(\n `DROP SEQUENCE ${this.escapePath(\n this.buildSequencePath(table, column),\n )}`,\n ),\n )\n })\n\n upQueries.push(this.createTableSql(table, createForeignKeys))\n downQueries.push(this.dropTableSql(table))\n\n // if createForeignKeys is true, we must drop created foreign keys in down query.\n // createTable does not need separate method to create foreign keys, because it create fk's in the same query with table creation.\n if (createForeignKeys)\n table.foreignKeys.forEach((foreignKey) =>\n downQueries.push(this.dropForeignKeySql(table, foreignKey)),\n )\n\n if (createIndices) {\n table.indices\n .filter((index) => !index.isUnique)\n .forEach((index) => {\n // new index may be passed without name. In this case we generate index name manually.\n if (!index.name)\n index.name = this.connection.namingStrategy.indexName(\n table,\n index.columnNames,\n index.where,\n )\n upQueries.push(this.createIndexSql(table, index))\n downQueries.push(this.dropIndexSql(table, index))\n })\n }\n\n // if table have column with generated type, we must add the expression to the metadata table\n const generatedColumns = table.columns.filter(\n (column) => column.generatedType && column.asExpression,\n )\n\n for (const column of generatedColumns) {\n const currentSchema = await this.getCurrentSchema()\n let { schema } = this.driver.parseTableName(table)\n if (!schema) {\n schema = currentSchema\n }\n\n const insertQuery = this.insertTypeormMetadataSql({\n schema: schema,\n table: table.name,\n type: MetadataTableType.GENERATED_COLUMN,\n name: column.name,\n value: column.asExpression,\n })\n\n const deleteQuery = this.deleteTypeormMetadataSql({\n schema: schema,\n table: table.name,\n type: MetadataTableType.GENERATED_COLUMN,\n name: column.name,\n })\n\n upQueries.push(insertQuery)\n downQueries.push(deleteQuery)\n }\n\n await this.executeQueries(upQueries, downQueries)\n }\n\n /**\n * Drops the table.\n */\n async dropTable(\n target: Table | string,\n ifExist?: boolean,\n dropForeignKeys: boolean = true,\n dropIndices: boolean = true,\n ): Promise<void> {\n // It needs because if table does not exist and dropForeignKeys or dropIndices is true, we don't need\n // to perform drop queries for foreign keys and indices.\n if (ifExist) {\n const isTableExist = await this.hasTable(target)\n if (!isTableExist) return Promise.resolve()\n }\n\n // if dropTable called with dropForeignKeys = true, we must create foreign keys in down query.\n const createForeignKeys: boolean = dropForeignKeys\n const tablePath = this.getTablePath(target)\n const table = await this.getCachedTable(tablePath)\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n\n // foreign keys must be dropped before indices, because fk's rely on indices\n if (dropForeignKeys)\n table.foreignKeys.forEach((foreignKey) =>\n upQueries.push(this.dropForeignKeySql(table, foreignKey)),\n )\n\n if (dropIndices) {\n table.indices.forEach((index) => {\n upQueries.push(this.dropIndexSql(table, index))\n downQueries.push(this.createIndexSql(table, index))\n })\n }\n\n upQueries.push(this.dropTableSql(table))\n downQueries.push(this.createTableSql(table, createForeignKeys))\n\n table.columns\n .filter(\n (column) =>\n column.isGenerated &&\n column.generationStrategy === \"increment\",\n )\n .forEach((column) => {\n upQueries.push(\n new Query(\n `DROP SEQUENCE ${this.escapePath(\n this.buildSequencePath(table, column),\n )}`,\n ),\n )\n downQueries.push(\n new Query(\n `CREATE SEQUENCE ${this.escapePath(\n this.buildSequencePath(table, column),\n )}`,\n ),\n )\n })\n\n // if table had columns with generated type, we must remove the expression from the metadata table\n const generatedColumns = table.columns.filter(\n (column) => column.generatedType && column.asExpression,\n )\n\n for (const column of generatedColumns) {\n const currentSchema = await this.getCurrentSchema()\n let { schema } = this.driver.parseTableName(table)\n if (!schema) {\n schema = currentSchema\n }\n\n const deleteQuery = this.deleteTypeormMetadataSql({\n schema: schema,\n table: table.name,\n type: MetadataTableType.GENERATED_COLUMN,\n name: column.name,\n })\n\n const insertQuery = this.insertTypeormMetadataSql({\n schema: schema,\n table: table.name,\n type: MetadataTableType.GENERATED_COLUMN,\n name: column.name,\n value: column.asExpression,\n })\n\n upQueries.push(deleteQuery)\n downQueries.push(insertQuery)\n }\n\n await this.executeQueries(upQueries, downQueries)\n }\n\n /**\n * Creates a new view.\n */\n async createView(\n view: View,\n syncWithMetadata: boolean = false,\n ): Promise<void> {\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n upQueries.push(this.createViewSql(view))\n if (syncWithMetadata)\n upQueries.push(await this.insertViewDefinitionSql(view))\n downQueries.push(this.dropViewSql(view))\n if (syncWithMetadata)\n downQueries.push(await this.deleteViewDefinitionSql(view))\n await this.executeQueries(upQueries, downQueries)\n }\n\n /**\n * Drops the view.\n */\n async dropView(target: View | string): Promise<void> {\n const viewName = InstanceChecker.isView(target) ? target.name : target\n const view = await this.getCachedView(viewName)\n\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n upQueries.push(await this.deleteViewDefinitionSql(view))\n upQueries.push(this.dropViewSql(view))\n downQueries.push(await this.insertViewDefinitionSql(view))\n downQueries.push(this.createViewSql(view))\n await this.executeQueries(upQueries, downQueries)\n }\n\n /**\n * Renames the given table.\n */\n async renameTable(\n oldTableOrName: Table | string,\n newTableName: string,\n ): Promise<void> {\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n const oldTable = InstanceChecker.isTable(oldTableOrName)\n ? oldTableOrName\n : await this.getCachedTable(oldTableOrName)\n const newTable = oldTable.clone()\n\n const { schema: schemaName, tableName: oldTableName } =\n this.driver.parseTableName(oldTable)\n\n newTable.name = schemaName\n ? `${schemaName}.${newTableName}`\n : newTableName\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n oldTable,\n )} RENAME TO \"${newTableName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n newTable,\n )} RENAME TO \"${oldTableName}\"`,\n ),\n )\n\n // rename column primary key constraint\n if (\n newTable.primaryColumns.length > 0 &&\n !newTable.primaryColumns[0].primaryKeyConstraintName\n ) {\n const columnNames = newTable.primaryColumns.map(\n (column) => column.name,\n )\n\n const oldPkName = this.connection.namingStrategy.primaryKeyName(\n oldTable,\n columnNames,\n )\n const newPkName = this.connection.namingStrategy.primaryKeyName(\n newTable,\n columnNames,\n )\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n newTable,\n )} RENAME CONSTRAINT \"${oldPkName}\" TO \"${newPkName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n newTable,\n )} RENAME CONSTRAINT \"${newPkName}\" TO \"${oldPkName}\"`,\n ),\n )\n }\n\n // rename unique constraints\n newTable.uniques.forEach((unique) => {\n const oldUniqueName =\n this.connection.namingStrategy.uniqueConstraintName(\n oldTable,\n unique.columnNames,\n )\n\n // Skip renaming if Unique has user defined constraint name\n if (unique.name !== oldUniqueName) return\n\n // build new constraint name\n const newUniqueName =\n this.connection.namingStrategy.uniqueConstraintName(\n newTable,\n unique.columnNames,\n )\n\n // build queries\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n newTable,\n )} RENAME CONSTRAINT \"${\n unique.name\n }\" TO \"${newUniqueName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n newTable,\n )} RENAME CONSTRAINT \"${newUniqueName}\" TO \"${\n unique.name\n }\"`,\n ),\n )\n\n // replace constraint name\n unique.name = newUniqueName\n })\n\n // rename index constraints\n newTable.indices.forEach((index) => {\n const oldIndexName = this.connection.namingStrategy.indexName(\n oldTable,\n index.columnNames,\n index.where,\n )\n\n // Skip renaming if Index has user defined constraint name\n if (index.name !== oldIndexName) return\n\n // build new constraint name\n const { schema } = this.driver.parseTableName(newTable)\n const newIndexName = this.connection.namingStrategy.indexName(\n newTable,\n index.columnNames,\n index.where,\n )\n\n // build queries\n const up = schema\n ? `ALTER INDEX \"${schema}\".\"${index.name}\" RENAME TO \"${newIndexName}\"`\n : `ALTER INDEX \"${index.name}\" RENAME TO \"${newIndexName}\"`\n const down = schema\n ? `ALTER INDEX \"${schema}\".\"${newIndexName}\" RENAME TO \"${index.name}\"`\n : `ALTER INDEX \"${newIndexName}\" RENAME TO \"${index.name}\"`\n upQueries.push(new Query(up))\n downQueries.push(new Query(down))\n\n // replace constraint name\n index.name = newIndexName\n })\n\n // rename foreign key constraints\n newTable.foreignKeys.forEach((foreignKey) => {\n const oldForeignKeyName =\n this.connection.namingStrategy.foreignKeyName(\n oldTable,\n foreignKey.columnNames,\n this.getTablePath(foreignKey),\n foreignKey.referencedColumnNames,\n )\n\n // Skip renaming if foreign key has user defined constraint name\n if (foreignKey.name !== oldForeignKeyName) return\n\n // build new constraint name\n const newForeignKeyName =\n this.connection.namingStrategy.foreignKeyName(\n newTable,\n foreignKey.columnNames,\n this.getTablePath(foreignKey),\n foreignKey.referencedColumnNames,\n )\n\n // build queries\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n newTable,\n )} RENAME CONSTRAINT \"${\n foreignKey.name\n }\" TO \"${newForeignKeyName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n newTable,\n )} RENAME CONSTRAINT \"${newForeignKeyName}\" TO \"${\n foreignKey.name\n }\"`,\n ),\n )\n\n // replace constraint name\n foreignKey.name = newForeignKeyName\n })\n\n // rename ENUM types\n const enumColumns = newTable.columns.filter(\n (column) => column.type === \"enum\" || column.type === \"simple-enum\",\n )\n for (const column of enumColumns) {\n // skip renaming for user-defined enum name\n if (column.enumName) continue\n\n const oldEnumType = await this.getUserDefinedTypeName(\n oldTable,\n column,\n )\n upQueries.push(\n new Query(\n `ALTER TYPE \"${oldEnumType.schema}\".\"${\n oldEnumType.name\n }\" RENAME TO ${this.buildEnumName(\n newTable,\n column,\n false,\n )}`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TYPE ${this.buildEnumName(\n newTable,\n column,\n )} RENAME TO \"${oldEnumType.name}\"`,\n ),\n )\n }\n\n await this.executeQueries(upQueries, downQueries)\n }\n\n /**\n * Creates a new column from the column in the table.\n */\n async addColumn(\n tableOrName: Table | string,\n column: TableColumn,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const clonedTable = table.clone()\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n\n if (column.generationStrategy === \"increment\") {\n throw new TypeORMError(\n `Adding sequential generated columns into existing table is not supported`,\n )\n }\n\n if (column.type === \"enum\" || column.type === \"simple-enum\") {\n const hasEnum = await this.hasEnumType(table, column)\n if (!hasEnum) {\n upQueries.push(this.createEnumTypeSql(table, column))\n downQueries.push(this.dropEnumTypeSql(table, column))\n }\n }\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD ${this.buildCreateColumnSql(table, column)}`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(table)} DROP COLUMN \"${\n column.name\n }\"`,\n ),\n )\n\n // create or update primary key constraint\n if (column.isPrimary) {\n const primaryColumns = clonedTable.primaryColumns\n // if table already have primary key, me must drop it and recreate again\n // todo: https://go.crdb.dev/issue-v/48026/v21.1\n if (primaryColumns.length > 0) {\n const pkName = primaryColumns[0].primaryKeyConstraintName\n ? primaryColumns[0].primaryKeyConstraintName\n : this.connection.namingStrategy.primaryKeyName(\n clonedTable,\n primaryColumns.map((column) => column.name),\n )\n\n const columnNames = primaryColumns\n .map((column) => `\"${column.name}\"`)\n .join(\", \")\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${pkName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`,\n ),\n )\n }\n\n primaryColumns.push(column)\n const pkName = primaryColumns[0].primaryKeyConstraintName\n ? primaryColumns[0].primaryKeyConstraintName\n : this.connection.namingStrategy.primaryKeyName(\n clonedTable,\n primaryColumns.map((column) => column.name),\n )\n\n const columnNames = primaryColumns\n .map((column) => `\"${column.name}\"`)\n .join(\", \")\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${pkName}\"`,\n ),\n )\n }\n\n if (column.generatedType && column.asExpression) {\n const currentSchema = await this.getCurrentSchema()\n let { schema } = this.driver.parseTableName(table)\n if (!schema) {\n schema = currentSchema\n }\n const insertQuery = this.insertTypeormMetadataSql({\n schema: schema,\n table: table.name,\n type: MetadataTableType.GENERATED_COLUMN,\n name: column.name,\n value: column.asExpression,\n })\n\n const deleteQuery = this.deleteTypeormMetadataSql({\n schema: schema,\n table: table.name,\n type: MetadataTableType.GENERATED_COLUMN,\n name: column.name,\n })\n\n upQueries.push(insertQuery)\n downQueries.push(deleteQuery)\n }\n\n // create column index\n const columnIndex = clonedTable.indices.find(\n (index) =>\n index.columnNames.length === 1 &&\n index.columnNames[0] === column.name,\n )\n if (columnIndex) {\n // CockroachDB stores unique indices as UNIQUE constraints\n if (columnIndex.isUnique) {\n const unique = new TableUnique({\n name: this.connection.namingStrategy.uniqueConstraintName(\n table,\n columnIndex.columnNames,\n ),\n columnNames: columnIndex.columnNames,\n })\n upQueries.push(this.createUniqueConstraintSql(table, unique))\n downQueries.push(this.dropIndexSql(table, unique))\n clonedTable.uniques.push(unique)\n } else {\n upQueries.push(this.createIndexSql(table, columnIndex))\n downQueries.push(this.dropIndexSql(table, columnIndex))\n }\n }\n\n // create unique constraint\n if (column.isUnique) {\n const uniqueConstraint = new TableUnique({\n name: this.connection.namingStrategy.uniqueConstraintName(\n table,\n [column.name],\n ),\n columnNames: [column.name],\n })\n clonedTable.uniques.push(uniqueConstraint)\n upQueries.push(\n this.createUniqueConstraintSql(table, uniqueConstraint),\n )\n downQueries.push(this.dropIndexSql(table, uniqueConstraint.name!)) // CockroachDB creates indices for unique constraints\n }\n\n // create column's comment\n if (column.comment) {\n upQueries.push(\n new Query(\n `COMMENT ON COLUMN ${this.escapePath(table)}.\"${\n column.name\n }\" IS ${this.escapeComment(column.comment)}`,\n ),\n )\n downQueries.push(\n new Query(\n `COMMENT ON COLUMN ${this.escapePath(table)}.\"${\n column.name\n }\" IS ${this.escapeComment(column.comment)}`,\n ),\n )\n }\n\n await this.executeQueries(upQueries, downQueries)\n\n clonedTable.addColumn(column)\n this.replaceCachedTable(table, clonedTable)\n }\n\n /**\n * Creates a new columns from the column in the table.\n */\n async addColumns(\n tableOrName: Table | string,\n columns: TableColumn[],\n ): Promise<void> {\n for (const column of columns) {\n await this.addColumn(tableOrName, column)\n }\n }\n\n /**\n * Renames column in the given table.\n */\n async renameColumn(\n tableOrName: Table | string,\n oldTableColumnOrName: TableColumn | string,\n newTableColumnOrName: TableColumn | string,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const oldColumn = InstanceChecker.isTableColumn(oldTableColumnOrName)\n ? oldTableColumnOrName\n : table.columns.find((c) => c.name === oldTableColumnOrName)\n if (!oldColumn)\n throw new TypeORMError(\n `Column \"${oldTableColumnOrName}\" was not found in the \"${table.name}\" table.`,\n )\n\n let newColumn\n if (InstanceChecker.isTableColumn(newTableColumnOrName)) {\n newColumn = newTableColumnOrName\n } else {\n newColumn = oldColumn.clone()\n newColumn.name = newTableColumnOrName\n }\n\n return this.changeColumn(table, oldColumn, newColumn)\n }\n\n /**\n * Changes a column in the table.\n */\n async changeColumn(\n tableOrName: Table | string,\n oldTableColumnOrName: TableColumn | string,\n newColumn: TableColumn,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n let clonedTable = table.clone()\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n let defaultValueChanged = false\n\n const oldColumn = InstanceChecker.isTableColumn(oldTableColumnOrName)\n ? oldTableColumnOrName\n : table.columns.find(\n (column) => column.name === oldTableColumnOrName,\n )\n if (!oldColumn)\n throw new TypeORMError(\n `Column \"${oldTableColumnOrName}\" was not found in the \"${table.name}\" table.`,\n )\n\n if (\n oldColumn.type !== newColumn.type ||\n oldColumn.length !== newColumn.length ||\n newColumn.isArray !== oldColumn.isArray ||\n oldColumn.generatedType !== newColumn.generatedType ||\n oldColumn.asExpression !== newColumn.asExpression\n ) {\n // To avoid data conversion, we just recreate column\n await this.dropColumn(table, oldColumn)\n await this.addColumn(table, newColumn)\n\n // update cloned table\n clonedTable = table.clone()\n } else {\n if (oldColumn.name !== newColumn.name) {\n // rename column\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(table)} RENAME COLUMN \"${\n oldColumn.name\n }\" TO \"${newColumn.name}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(table)} RENAME COLUMN \"${\n newColumn.name\n }\" TO \"${oldColumn.name}\"`,\n ),\n )\n\n // rename ENUM type\n if (\n oldColumn.type === \"enum\" ||\n oldColumn.type === \"simple-enum\"\n ) {\n const oldEnumType = await this.getUserDefinedTypeName(\n table,\n oldColumn,\n )\n upQueries.push(\n new Query(\n `ALTER TYPE \"${oldEnumType.schema}\".\"${\n oldEnumType.name\n }\" RENAME TO ${this.buildEnumName(\n table,\n newColumn,\n false,\n )}`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TYPE ${this.buildEnumName(\n table,\n newColumn,\n )} RENAME TO \"${oldEnumType.name}\"`,\n ),\n )\n }\n\n // rename column primary key constraint\n if (\n oldColumn.isPrimary === true &&\n !oldColumn.primaryKeyConstraintName\n ) {\n const primaryColumns = clonedTable.primaryColumns\n\n // build old primary constraint name\n const columnNames = primaryColumns.map(\n (column) => column.name,\n )\n const oldPkName =\n this.connection.namingStrategy.primaryKeyName(\n clonedTable,\n columnNames,\n )\n\n // replace old column name with new column name\n columnNames.splice(columnNames.indexOf(oldColumn.name), 1)\n columnNames.push(newColumn.name)\n\n // build new primary constraint name\n const newPkName =\n this.connection.namingStrategy.primaryKeyName(\n clonedTable,\n columnNames,\n )\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} RENAME CONSTRAINT \"${oldPkName}\" TO \"${newPkName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} RENAME CONSTRAINT \"${newPkName}\" TO \"${oldPkName}\"`,\n ),\n )\n }\n\n // rename unique constraints\n clonedTable.findColumnUniques(oldColumn).forEach((unique) => {\n const oldUniqueName =\n this.connection.namingStrategy.uniqueConstraintName(\n clonedTable,\n unique.columnNames,\n )\n\n // Skip renaming if Unique has user defined constraint name\n if (unique.name !== oldUniqueName) return\n\n // build new constraint name\n unique.columnNames.splice(\n unique.columnNames.indexOf(oldColumn.name),\n 1,\n )\n unique.columnNames.push(newColumn.name)\n const newUniqueName =\n this.connection.namingStrategy.uniqueConstraintName(\n clonedTable,\n unique.columnNames,\n )\n\n // build queries\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} RENAME CONSTRAINT \"${\n unique.name\n }\" TO \"${newUniqueName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} RENAME CONSTRAINT \"${newUniqueName}\" TO \"${\n unique.name\n }\"`,\n ),\n )\n\n // replace constraint name\n unique.name = newUniqueName\n })\n\n // rename index constraints\n clonedTable.findColumnIndices(oldColumn).forEach((index) => {\n const oldIndexName =\n this.connection.namingStrategy.indexName(\n clonedTable,\n index.columnNames,\n index.where,\n )\n\n // Skip renaming if Index has user defined constraint name\n if (index.name !== oldIndexName) return\n\n // build new constraint name\n index.columnNames.splice(\n index.columnNames.indexOf(oldColumn.name),\n 1,\n )\n index.columnNames.push(newColumn.name)\n const { schema } = this.driver.parseTableName(table)\n const newIndexName =\n this.connection.namingStrategy.indexName(\n clonedTable,\n index.columnNames,\n index.where,\n )\n\n // build queries\n const up = schema\n ? `ALTER INDEX \"${schema}\".\"${index.name}\" RENAME TO \"${newIndexName}\"`\n : `ALTER INDEX \"${index.name}\" RENAME TO \"${newIndexName}\"`\n const down = schema\n ? `ALTER INDEX \"${schema}\".\"${newIndexName}\" RENAME TO \"${index.name}\"`\n : `ALTER INDEX \"${newIndexName}\" RENAME TO \"${index.name}\"`\n upQueries.push(new Query(up))\n downQueries.push(new Query(down))\n\n // replace constraint name\n index.name = newIndexName\n })\n\n // rename foreign key constraints\n clonedTable\n .findColumnForeignKeys(oldColumn)\n .forEach((foreignKey) => {\n const foreignKeyName =\n this.connection.namingStrategy.foreignKeyName(\n clonedTable,\n foreignKey.columnNames,\n this.getTablePath(foreignKey),\n foreignKey.referencedColumnNames,\n )\n\n // Skip renaming if foreign key has user defined constraint name\n if (foreignKey.name !== foreignKeyName) return\n\n // build new constraint name\n foreignKey.columnNames.splice(\n foreignKey.columnNames.indexOf(oldColumn.name),\n 1,\n )\n foreignKey.columnNames.push(newColumn.name)\n const newForeignKeyName =\n this.connection.namingStrategy.foreignKeyName(\n clonedTable,\n foreignKey.columnNames,\n this.getTablePath(foreignKey),\n foreignKey.referencedColumnNames,\n )\n\n // build queries\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} RENAME CONSTRAINT \"${\n foreignKey.name\n }\" TO \"${newForeignKeyName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} RENAME CONSTRAINT \"${newForeignKeyName}\" TO \"${\n foreignKey.name\n }\"`,\n ),\n )\n\n // replace constraint name\n foreignKey.name = newForeignKeyName\n })\n\n // rename old column in the Table object\n const oldTableColumn = clonedTable.columns.find(\n (column) => column.name === oldColumn.name,\n )\n clonedTable.columns[\n clonedTable.columns.indexOf(oldTableColumn!)\n ].name = newColumn.name\n oldColumn.name = newColumn.name\n }\n\n if (\n newColumn.precision !== oldColumn.precision ||\n newColumn.scale !== oldColumn.scale\n ) {\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(table)} ALTER COLUMN \"${\n newColumn.name\n }\" TYPE ${this.driver.createFullType(newColumn)}`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(table)} ALTER COLUMN \"${\n newColumn.name\n }\" TYPE ${this.driver.createFullType(oldColumn)}`,\n ),\n )\n }\n\n if (oldColumn.isNullable !== newColumn.isNullable) {\n if (newColumn.isNullable) {\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${oldColumn.name}\" DROP NOT NULL`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${oldColumn.name}\" SET NOT NULL`,\n ),\n )\n } else {\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${oldColumn.name}\" SET NOT NULL`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${oldColumn.name}\" DROP NOT NULL`,\n ),\n )\n }\n }\n\n if (oldColumn.comment !== newColumn.comment) {\n upQueries.push(\n new Query(\n `COMMENT ON COLUMN ${this.escapePath(table)}.\"${\n oldColumn.name\n }\" IS ${this.escapeComment(newColumn.comment)}`,\n ),\n )\n downQueries.push(\n new Query(\n `COMMENT ON COLUMN ${this.escapePath(table)}.\"${\n newColumn.name\n }\" IS ${this.escapeComment(oldColumn.comment)}`,\n ),\n )\n }\n\n if (newColumn.isPrimary !== oldColumn.isPrimary) {\n const primaryColumns = clonedTable.primaryColumns\n\n // if primary column state changed, we must always drop existed constraint.\n if (primaryColumns.length > 0) {\n const pkName = primaryColumns[0].primaryKeyConstraintName\n ? primaryColumns[0].primaryKeyConstraintName\n : this.connection.namingStrategy.primaryKeyName(\n clonedTable,\n primaryColumns.map((column) => column.name),\n )\n\n const columnNames = primaryColumns\n .map((column) => `\"${column.name}\"`)\n .join(\", \")\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${pkName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`,\n ),\n )\n }\n\n if (newColumn.isPrimary === true) {\n primaryColumns.push(newColumn)\n // update column in table\n const column = clonedTable.columns.find(\n (column) => column.name === newColumn.name,\n )\n column!.isPrimary = true\n const pkName = primaryColumns[0].primaryKeyConstraintName\n ? primaryColumns[0].primaryKeyConstraintName\n : this.connection.namingStrategy.primaryKeyName(\n clonedTable,\n primaryColumns.map((column) => column.name),\n )\n\n const columnNames = primaryColumns\n .map((column) => `\"${column.name}\"`)\n .join(\", \")\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${pkName}\"`,\n ),\n )\n } else {\n const primaryColumn = primaryColumns.find(\n (c) => c.name === newColumn.name,\n )\n primaryColumns.splice(\n primaryColumns.indexOf(primaryColumn!),\n 1,\n )\n\n // update column in table\n const column = clonedTable.columns.find(\n (column) => column.name === newColumn.name,\n )\n column!.isPrimary = false\n\n // if we have another primary keys, we must recreate constraint.\n if (primaryColumns.length > 0) {\n const pkName = primaryColumns[0]\n .primaryKeyConstraintName\n ? primaryColumns[0].primaryKeyConstraintName\n : this.connection.namingStrategy.primaryKeyName(\n clonedTable,\n primaryColumns.map((column) => column.name),\n )\n\n const columnNames = primaryColumns\n .map((column) => `\"${column.name}\"`)\n .join(\", \")\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${pkName}\"`,\n ),\n )\n }\n }\n }\n\n if (newColumn.isUnique !== oldColumn.isUnique) {\n if (newColumn.isUnique) {\n const uniqueConstraint = new TableUnique({\n name: this.connection.namingStrategy.uniqueConstraintName(\n table,\n [newColumn.name],\n ),\n columnNames: [newColumn.name],\n })\n clonedTable.uniques.push(uniqueConstraint)\n upQueries.push(\n this.createUniqueConstraintSql(table, uniqueConstraint),\n )\n // CockroachDB creates index for UNIQUE constraint.\n // We must use DROP INDEX ... CASCADE instead of DROP CONSTRAINT.\n downQueries.push(this.dropIndexSql(table, uniqueConstraint))\n } else {\n const uniqueConstraint = clonedTable.uniques.find(\n (unique) => {\n return (\n unique.columnNames.length === 1 &&\n !!unique.columnNames.find(\n (columnName) =>\n columnName === newColumn.name,\n )\n )\n },\n )\n clonedTable.uniques.splice(\n clonedTable.uniques.indexOf(uniqueConstraint!),\n 1,\n )\n // CockroachDB creates index for UNIQUE constraint.\n // We must use DROP INDEX ... CASCADE instead of DROP CONSTRAINT.\n upQueries.push(this.dropIndexSql(table, uniqueConstraint!))\n downQueries.push(\n this.createUniqueConstraintSql(\n table,\n uniqueConstraint!,\n ),\n )\n }\n }\n\n if (\n (newColumn.type === \"enum\" ||\n newColumn.type === \"simple-enum\") &&\n (oldColumn.type === \"enum\" ||\n oldColumn.type === \"simple-enum\") &&\n (!OrmUtils.isArraysEqual(newColumn.enum!, oldColumn.enum!) ||\n newColumn.enumName !== oldColumn.enumName)\n ) {\n const arraySuffix = newColumn.isArray ? \"[]\" : \"\"\n\n // \"public\".\"new_enum\"\n const newEnumName = this.buildEnumName(table, newColumn)\n\n // \"public\".\"old_enum\"\n const oldEnumName = this.buildEnumName(table, oldColumn)\n\n // \"old_enum\"\n const oldEnumNameWithoutSchema = this.buildEnumName(\n table,\n oldColumn,\n false,\n )\n\n //\"public\".\"old_enum_old\"\n const oldEnumNameWithSchema_old = this.buildEnumName(\n table,\n oldColumn,\n true,\n false,\n true,\n )\n\n //\"old_enum_old\"\n const oldEnumNameWithoutSchema_old = this.buildEnumName(\n table,\n oldColumn,\n false,\n false,\n true,\n )\n\n // rename old ENUM\n upQueries.push(\n new Query(\n `ALTER TYPE ${oldEnumName} RENAME TO ${oldEnumNameWithoutSchema_old}`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TYPE ${oldEnumNameWithSchema_old} RENAME TO ${oldEnumNameWithoutSchema}`,\n ),\n )\n\n // create new ENUM\n upQueries.push(\n this.createEnumTypeSql(table, newColumn, newEnumName),\n )\n downQueries.push(\n this.dropEnumTypeSql(table, newColumn, newEnumName),\n )\n\n // if column have default value, we must drop it to avoid issues with type casting\n if (\n oldColumn.default !== null &&\n oldColumn.default !== undefined\n ) {\n // mark default as changed to prevent double update\n defaultValueChanged = true\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${oldColumn.name}\" DROP DEFAULT`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${oldColumn.name}\" SET DEFAULT ${\n oldColumn.default\n }`,\n ),\n )\n }\n\n // build column types\n const upType = `${newEnumName}${arraySuffix} USING \"${newColumn.name}\"::\"text\"::${newEnumName}${arraySuffix}`\n const downType = `${oldEnumNameWithSchema_old}${arraySuffix} USING \"${newColumn.name}\"::\"text\"::${oldEnumNameWithSchema_old}${arraySuffix}`\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(table)} ALTER COLUMN \"${\n newColumn.name\n }\" TYPE ${upType}`,\n ),\n )\n\n // we add a delay here since for some reason cockroachdb fails with\n // \"cannot drop type because other objects still depend on it\" error\n // if we are trying to drop type right after we altered it.\n upQueries.push(new Query(`SELECT pg_sleep(0.1)`))\n downQueries.push(new Query(`SELECT pg_sleep(0.1)`))\n\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(table)} ALTER COLUMN \"${\n newColumn.name\n }\" TYPE ${downType}`,\n ),\n )\n\n // restore column default or create new one\n if (\n newColumn.default !== null &&\n newColumn.default !== undefined\n ) {\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${newColumn.name}\" SET DEFAULT ${\n newColumn.default\n }`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${newColumn.name}\" DROP DEFAULT`,\n ),\n )\n }\n\n // remove old ENUM\n upQueries.push(\n this.dropEnumTypeSql(\n table,\n oldColumn,\n oldEnumNameWithSchema_old,\n ),\n )\n downQueries.push(\n this.createEnumTypeSql(\n table,\n oldColumn,\n oldEnumNameWithSchema_old,\n ),\n )\n }\n\n if (\n oldColumn.isGenerated !== newColumn.isGenerated &&\n newColumn.generationStrategy !== \"uuid\"\n ) {\n if (newColumn.isGenerated) {\n if (newColumn.generationStrategy === \"increment\") {\n throw new TypeORMError(\n `Adding sequential generated columns into existing table is not supported`,\n )\n } else if (newColumn.generationStrategy === \"rowid\") {\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${\n newColumn.name\n }\" SET DEFAULT unique_rowid()`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${\n newColumn.name\n }\" DROP DEFAULT`,\n ),\n )\n }\n } else {\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${newColumn.name}\" DROP DEFAULT`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${\n newColumn.name\n }\" SET DEFAULT unique_rowid()`,\n ),\n )\n }\n }\n\n if (\n newColumn.default !== oldColumn.default &&\n !defaultValueChanged\n ) {\n if (\n newColumn.default !== null &&\n newColumn.default !== undefined\n ) {\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${newColumn.name}\" SET DEFAULT ${\n newColumn.default\n }`,\n ),\n )\n\n if (\n oldColumn.default !== null &&\n oldColumn.default !== undefined\n ) {\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${\n newColumn.name\n }\" SET DEFAULT ${oldColumn.default}`,\n ),\n )\n } else {\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${\n newColumn.name\n }\" DROP DEFAULT`,\n ),\n )\n }\n } else if (\n oldColumn.default !== null &&\n oldColumn.default !== undefined\n ) {\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${newColumn.name}\" DROP DEFAULT`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${newColumn.name}\" SET DEFAULT ${\n oldColumn.default\n }`,\n ),\n )\n }\n }\n }\n\n if (\n (newColumn.spatialFeatureType || \"\").toLowerCase() !==\n (oldColumn.spatialFeatureType || \"\").toLowerCase() ||\n newColumn.srid !== oldColumn.srid\n ) {\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(table)} ALTER COLUMN \"${\n newColumn.name\n }\" TYPE ${this.driver.createFullType(newColumn)}`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(table)} ALTER COLUMN \"${\n newColumn.name\n }\" TYPE ${this.driver.createFullType(oldColumn)}`,\n ),\n )\n }\n\n await this.executeQueries(upQueries, downQueries)\n this.replaceCachedTable(table, clonedTable)\n }\n\n /**\n * Changes a column in the table.\n */\n async changeColumns(\n tableOrName: Table | string,\n changedColumns: { newColumn: TableColumn; oldColumn: TableColumn }[],\n ): Promise<void> {\n for (const { oldColumn, newColumn } of changedColumns) {\n await this.changeColumn(tableOrName, oldColumn, newColumn)\n }\n }\n\n /**\n * Drops column in the table.\n */\n async dropColumn(\n tableOrName: Table | string,\n columnOrName: TableColumn | string,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const column = InstanceChecker.isTableColumn(columnOrName)\n ? columnOrName\n : table.findColumnByName(columnOrName)\n if (!column)\n throw new TypeORMError(\n `Column \"${columnOrName}\" was not found in table \"${table.name}\"`,\n )\n\n const clonedTable = table.clone()\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n\n // drop primary key constraint\n // todo: https://go.crdb.dev/issue-v/48026/v21.1\n if (column.isPrimary) {\n const pkName = column.primaryKeyConstraintName\n ? column.primaryKeyConstraintName\n : this.connection.namingStrategy.primaryKeyName(\n clonedTable,\n clonedTable.primaryColumns.map((column) => column.name),\n )\n\n const columnNames = clonedTable.primaryColumns\n .map((primaryColumn) => `\"${primaryColumn.name}\"`)\n .join(\", \")\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n clonedTable,\n )} DROP CONSTRAINT \"${pkName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n clonedTable,\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`,\n ),\n )\n\n // update column in table\n const tableColumn = clonedTable.findColumnByName(column.name)\n tableColumn!.isPrimary = false\n\n // if primary key have multiple columns, we must recreate it without dropped column\n if (clonedTable.primaryColumns.length > 0) {\n const pkName = clonedTable.primaryColumns[0]\n .primaryKeyConstraintName\n ? clonedTable.primaryColumns[0].primaryKeyConstraintName\n : this.connection.namingStrategy.primaryKeyName(\n clonedTable,\n clonedTable.primaryColumns.map(\n (column) => column.name,\n ),\n )\n\n const columnNames = clonedTable.primaryColumns\n .map((primaryColumn) => `\"${primaryColumn.name}\"`)\n .join(\", \")\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n clonedTable,\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n clonedTable,\n )} DROP CONSTRAINT \"${pkName}\"`,\n ),\n )\n }\n }\n\n // drop column index\n const columnIndex = clonedTable.indices.find(\n (index) =>\n index.columnNames.length === 1 &&\n index.columnNames[0] === column.name,\n )\n if (columnIndex) {\n clonedTable.indices.splice(\n clonedTable.indices.indexOf(columnIndex),\n 1,\n )\n upQueries.push(this.dropIndexSql(table, columnIndex))\n downQueries.push(this.createIndexSql(table, columnIndex))\n }\n\n // drop column check\n const columnCheck = clonedTable.checks.find(\n (check) =>\n !!check.columnNames &&\n check.columnNames.length === 1 &&\n check.columnNames[0] === column.name,\n )\n if (columnCheck) {\n clonedTable.checks.splice(\n clonedTable.checks.indexOf(columnCheck),\n 1,\n )\n upQueries.push(this.dropCheckConstraintSql(table, columnCheck))\n downQueries.push(this.createCheckConstraintSql(table, columnCheck))\n }\n\n // drop column unique\n const columnUnique = clonedTable.uniques.find(\n (unique) =>\n unique.columnNames.length === 1 &&\n unique.columnNames[0] === column.name,\n )\n if (columnUnique) {\n clonedTable.uniques.splice(\n clonedTable.uniques.indexOf(columnUnique),\n 1,\n )\n upQueries.push(this.dropIndexSql(table, columnUnique.name!)) // CockroachDB creates indices for unique constraints\n downQueries.push(\n this.createUniqueConstraintSql(table, columnUnique),\n )\n }\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(table)} DROP COLUMN \"${\n column.name\n }\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD ${this.buildCreateColumnSql(table, column)}`,\n ),\n )\n\n if (column.generationStrategy === \"increment\") {\n upQueries.push(\n new Query(\n `DROP SEQUENCE ${this.escapePath(\n this.buildSequencePath(table, column),\n )}`,\n ),\n )\n downQueries.push(\n new Query(\n `CREATE SEQUENCE ${this.escapePath(\n this.buildSequencePath(table, column),\n )}`,\n ),\n )\n }\n\n if (column.generatedType && column.asExpression) {\n const currentSchema = await this.getCurrentSchema()\n let { schema } = this.driver.parseTableName(table)\n if (!schema) {\n schema = currentSchema\n }\n const deleteQuery = this.deleteTypeormMetadataSql({\n schema: schema,\n table: table.name,\n type: MetadataTableType.GENERATED_COLUMN,\n name: column.name,\n })\n const insertQuery = this.insertTypeormMetadataSql({\n schema: schema,\n table: table.name,\n type: MetadataTableType.GENERATED_COLUMN,\n name: column.name,\n value: column.asExpression,\n })\n\n upQueries.push(deleteQuery)\n downQueries.push(insertQuery)\n }\n\n // drop enum type\n if (column.type === \"enum\" || column.type === \"simple-enum\") {\n const hasEnum = await this.hasEnumType(table, column)\n if (hasEnum) {\n const enumType = await this.getUserDefinedTypeName(\n table,\n column,\n )\n const escapedEnumName = `\"${enumType.schema}\".\"${enumType.name}\"`\n upQueries.push(\n this.dropEnumTypeSql(table, column, escapedEnumName),\n )\n downQueries.push(\n this.createEnumTypeSql(table, column, escapedEnumName),\n )\n }\n }\n\n await this.executeQueries(upQueries, downQueries)\n\n clonedTable.removeColumn(column)\n this.replaceCachedTable(table, clonedTable)\n }\n\n /**\n * Drops the columns in the table.\n */\n async dropColumns(\n tableOrName: Table | string,\n columns: TableColumn[] | string[],\n ): Promise<void> {\n for (const column of [...columns]) {\n await this.dropColumn(tableOrName, column)\n }\n }\n\n /**\n * Creates a new primary key.\n */\n async createPrimaryKey(\n tableOrName: Table | string,\n columnNames: string[],\n constraintName?: string,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const clonedTable = table.clone()\n\n const up = this.createPrimaryKeySql(table, columnNames, constraintName)\n\n // mark columns as primary, because dropPrimaryKeySql build constraint name from table primary column names.\n clonedTable.columns.forEach((column) => {\n if (columnNames.find((columnName) => columnName === column.name))\n column.isPrimary = true\n })\n const down = this.dropPrimaryKeySql(clonedTable)\n\n await this.executeQueries(up, down)\n this.replaceCachedTable(table, clonedTable)\n }\n\n /**\n * Updates composite primary keys.\n */\n async updatePrimaryKeys(\n tableOrName: Table | string,\n columns: TableColumn[],\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const clonedTable = table.clone()\n const columnNames = columns.map((column) => column.name)\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n\n // if table already have primary columns, we must drop them.\n const primaryColumns = clonedTable.primaryColumns\n if (primaryColumns.length > 0) {\n const pkName = primaryColumns[0].primaryKeyConstraintName\n ? primaryColumns[0].primaryKeyConstraintName\n : this.connection.namingStrategy.primaryKeyName(\n clonedTable,\n primaryColumns.map((column) => column.name),\n )\n\n const columnNamesString = primaryColumns\n .map((column) => `\"${column.name}\"`)\n .join(\", \")\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${pkName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNamesString})`,\n ),\n )\n }\n\n // update columns in table.\n clonedTable.columns\n .filter((column) => columnNames.indexOf(column.name) !== -1)\n .forEach((column) => (column.isPrimary = true))\n\n const pkName = primaryColumns[0].primaryKeyConstraintName\n ? primaryColumns[0].primaryKeyConstraintName\n : this.connection.namingStrategy.primaryKeyName(\n clonedTable,\n columnNames,\n )\n\n const columnNamesString = columnNames\n .map((columnName) => `\"${columnName}\"`)\n .join(\", \")\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNamesString})`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${pkName}\"`,\n ),\n )\n\n await this.executeQueries(upQueries, downQueries)\n this.replaceCachedTable(table, clonedTable)\n }\n\n /**\n * Drops a primary key.\n */\n async dropPrimaryKey(\n tableOrName: Table | string,\n constraintName?: string,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const up = this.dropPrimaryKeySql(table)\n const down = this.createPrimaryKeySql(\n table,\n table.primaryColumns.map((column) => column.name),\n constraintName,\n )\n await this.executeQueries(up, down)\n table.primaryColumns.forEach((column) => {\n column.isPrimary = false\n })\n }\n\n /**\n * Creates new unique constraint.\n */\n async createUniqueConstraint(\n tableOrName: Table | string,\n uniqueConstraint: TableUnique,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n\n // new unique constraint may be passed without name. In this case we generate unique name manually.\n if (!uniqueConstraint.name)\n uniqueConstraint.name =\n this.connection.namingStrategy.uniqueConstraintName(\n table,\n uniqueConstraint.columnNames,\n )\n\n const up = this.createUniqueConstraintSql(table, uniqueConstraint)\n // CockroachDB creates index for UNIQUE constraint.\n // We must use DROP INDEX ... CASCADE instead of DROP CONSTRAINT.\n const down = this.dropIndexSql(table, uniqueConstraint)\n await this.executeQueries(up, down)\n table.addUniqueConstraint(uniqueConstraint)\n }\n\n /**\n * Creates new unique constraints.\n */\n async createUniqueConstraints(\n tableOrName: Table | string,\n uniqueConstraints: TableUnique[],\n ): Promise<void> {\n for (const uniqueConstraint of uniqueConstraints) {\n await this.createUniqueConstraint(tableOrName, uniqueConstraint)\n }\n }\n\n /**\n * Drops unique constraint.\n */\n async dropUniqueConstraint(\n tableOrName: Table | string,\n uniqueOrName: TableUnique | string,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const uniqueConstraint = InstanceChecker.isTableUnique(uniqueOrName)\n ? uniqueOrName\n : table.uniques.find((u) => u.name === uniqueOrName)\n if (!uniqueConstraint)\n throw new TypeORMError(\n `Supplied unique constraint was not found in table ${table.name}`,\n )\n\n // CockroachDB creates index for UNIQUE constraint.\n // We must use DROP INDEX ... CASCADE instead of DROP CONSTRAINT.\n const up = this.dropIndexSql(table, uniqueConstraint)\n const down = this.createUniqueConstraintSql(table, uniqueConstraint)\n await this.executeQueries(up, down)\n table.removeUniqueConstraint(uniqueConstraint)\n }\n\n /**\n * Drops unique constraints.\n */\n async dropUniqueConstraints(\n tableOrName: Table | string,\n uniqueConstraints: TableUnique[],\n ): Promise<void> {\n for (const uniqueConstraint of [...uniqueConstraints]) {\n await this.dropUniqueConstraint(tableOrName, uniqueConstraint)\n }\n }\n\n /**\n * Creates new check constraint.\n */\n async createCheckConstraint(\n tableOrName: Table | string,\n checkConstraint: TableCheck,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n\n // new unique constraint may be passed without name. In this case we generate unique name manually.\n if (!checkConstraint.name)\n checkConstraint.name =\n this.connection.namingStrategy.checkConstraintName(\n table,\n checkConstraint.expression!,\n )\n\n const up = this.createCheckConstraintSql(table, checkConstraint)\n const down = this.dropCheckConstraintSql(table, checkConstraint)\n await this.executeQueries(up, down)\n table.addCheckConstraint(checkConstraint)\n }\n\n /**\n * Creates new check constraints.\n */\n async createCheckConstraints(\n tableOrName: Table | string,\n checkConstraints: TableCheck[],\n ): Promise<void> {\n const promises = checkConstraints.map((checkConstraint) =>\n this.createCheckConstraint(tableOrName, checkConstraint),\n )\n await Promise.all(promises)\n }\n\n /**\n * Drops check constraint.\n */\n async dropCheckConstraint(\n tableOrName: Table | string,\n checkOrName: TableCheck | string,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const checkConstraint = InstanceChecker.isTableCheck(checkOrName)\n ? checkOrName\n : table.checks.find((c) => c.name === checkOrName)\n if (!checkConstraint)\n throw new TypeORMError(\n `Supplied check constraint was not found in table ${table.name}`,\n )\n\n const up = this.dropCheckConstraintSql(table, checkConstraint)\n const down = this.createCheckConstraintSql(table, checkConstraint)\n await this.executeQueries(up, down)\n table.removeCheckConstraint(checkConstraint)\n }\n\n /**\n * Drops check constraints.\n */\n async dropCheckConstraints(\n tableOrName: Table | string,\n checkConstraints: TableCheck[],\n ): Promise<void> {\n const promises = checkConstraints.map((checkConstraint) =>\n this.dropCheckConstraint(tableOrName, checkConstraint),\n )\n await Promise.all(promises)\n }\n\n /**\n * Creates new exclusion constraint.\n */\n async createExclusionConstraint(\n tableOrName: Table | string,\n exclusionConstraint: TableExclusion,\n ): Promise<void> {\n throw new TypeORMError(\n `CockroachDB does not support exclusion constraints.`,\n )\n }\n\n /**\n * Creates new exclusion constraints.\n */\n async createExclusionConstraints(\n tableOrName: Table | string,\n exclusionConstraints: TableExclusion[],\n ): Promise<void> {\n throw new TypeORMError(\n `CockroachDB does not support exclusion constraints.`,\n )\n }\n\n /**\n * Drops exclusion constraint.\n */\n async dropExclusionConstraint(\n tableOrName: Table | string,\n exclusionOrName: TableExclusion | string,\n ): Promise<void> {\n throw new TypeORMError(\n `CockroachDB does not support exclusion constraints.`,\n )\n }\n\n /**\n * Drops exclusion constraints.\n */\n async dropExclusionConstraints(\n tableOrName: Table | string,\n exclusionConstraints: TableExclusion[],\n ): Promise<void> {\n throw new TypeORMError(\n `CockroachDB does not support exclusion constraints.`,\n )\n }\n\n /**\n * Creates a new foreign key.\n */\n async createForeignKey(\n tableOrName: Table | string,\n foreignKey: TableForeignKey,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n\n // new FK may be passed without name. In this case we generate FK name manually.\n if (!foreignKey.name)\n foreignKey.name = this.connection.namingStrategy.foreignKeyName(\n table,\n foreignKey.columnNames,\n this.getTablePath(foreignKey),\n foreignKey.referencedColumnNames,\n )\n\n const up = this.createForeignKeySql(table, foreignKey)\n const down = this.dropForeignKeySql(table, foreignKey)\n await this.executeQueries(up, down)\n table.addForeignKey(foreignKey)\n }\n\n /**\n * Creates a new foreign keys.\n */\n async createForeignKeys(\n tableOrName: Table | string,\n foreignKeys: TableForeignKey[],\n ): Promise<void> {\n for (const foreignKey of foreignKeys) {\n await this.createForeignKey(tableOrName, foreignKey)\n }\n }\n\n /**\n * Drops a foreign key from the table.\n */\n async dropForeignKey(\n tableOrName: Table | string,\n foreignKeyOrName: TableForeignKey | string,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const foreignKey = InstanceChecker.isTableForeignKey(foreignKeyOrName)\n ? foreignKeyOrName\n : table.foreignKeys.find((fk) => fk.name === foreignKeyOrName)\n if (!foreignKey)\n throw new TypeORMError(\n `Supplied foreign key was not found in table ${table.name}`,\n )\n\n const up = this.dropForeignKeySql(table, foreignKey)\n const down = this.createForeignKeySql(table, foreignKey)\n await this.executeQueries(up, down)\n table.removeForeignKey(foreignKey)\n }\n\n /**\n * Drops a foreign keys from the table.\n */\n async dropForeignKeys(\n tableOrName: Table | string,\n foreignKeys: TableForeignKey[],\n ): Promise<void> {\n for (const foreignKey of [...foreignKeys]) {\n await this.dropForeignKey(tableOrName, foreignKey)\n }\n }\n\n /**\n * Creates a new index.\n */\n async createIndex(\n tableOrName: Table | string,\n index: TableIndex,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n\n // new index may be passed without name. In this case we generate index name manually.\n if (!index.name) index.name = this.generateIndexName(table, index)\n\n // CockroachDB stores unique indices and UNIQUE constraints\n if (index.isUnique) {\n const unique = new TableUnique({\n name: index.name,\n columnNames: index.columnNames,\n })\n const up = this.createUniqueConstraintSql(table, unique)\n // CockroachDB also creates index for UNIQUE constraints.\n // We can't drop UNIQUE constraint with DROP CONSTRAINT. We must use DROP INDEX ... CASCADE instead.\n const down = this.dropIndexSql(table, unique)\n await this.executeQueries(up, down)\n table.addUniqueConstraint(unique)\n } else {\n const up = this.createIndexSql(table, index)\n const down = this.dropIndexSql(table, index)\n await this.executeQueries(up, down)\n table.addIndex(index)\n }\n }\n\n /**\n * Creates a new indices\n */\n async createIndices(\n tableOrName: Table | string,\n indices: TableIndex[],\n ): Promise<void> {\n for (const index of indices) {\n await this.createIndex(tableOrName, index)\n }\n }\n\n /**\n * Drops an index from the table.\n */\n async dropIndex(\n tableOrName: Table | string,\n indexOrName: TableIndex | string,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const index = InstanceChecker.isTableIndex(indexOrName)\n ? indexOrName\n : table.indices.find((i) => i.name === indexOrName)\n if (!index)\n throw new TypeORMError(\n `Supplied index ${indexOrName} was not found in table ${table.name}`,\n )\n\n // old index may be passed without name. In this case we generate index name manually.\n if (!index.name) index.name = this.generateIndexName(table, index)\n\n const up = this.dropIndexSql(table, index)\n const down = this.createIndexSql(table, index)\n await this.executeQueries(up, down)\n table.removeIndex(index)\n }\n\n /**\n * Drops an indices from the table.\n */\n async dropIndices(\n tableOrName: Table | string,\n indices: TableIndex[],\n ): Promise<void> {\n for (const index of [...indices]) {\n await this.dropIndex(tableOrName, index)\n }\n }\n\n /**\n * Clears all table contents.\n * Note: this operation uses SQL's TRUNCATE query which cannot be reverted in transactions.\n */\n async clearTable(tableName: string): Promise<void> {\n await this.query(`TRUNCATE TABLE ${this.escapePath(tableName)}`)\n }\n\n /**\n * Removes all tables from the currently connected database.\n */\n async clearDatabase(): Promise<void> {\n const schemas: string[] = []\n this.connection.entityMetadatas\n .filter((metadata) => metadata.schema)\n .forEach((metadata) => {\n const isSchemaExist = !!schemas.find(\n (schema) => schema === metadata.schema,\n )\n if (!isSchemaExist) schemas.push(metadata.schema!)\n })\n schemas.push(this.driver.options.schema || \"current_schema()\")\n const schemaNamesString = schemas\n .map((name) => {\n return name === \"current_schema()\" ? name : \"'\" + name + \"'\"\n })\n .join(\", \")\n\n const isAnotherTransactionActive = this.isTransactionActive\n if (!isAnotherTransactionActive) await this.startTransaction()\n try {\n const version = await this.getVersion()\n const selectViewDropsQuery =\n `SELECT 'DROP VIEW IF EXISTS \"' || schemaname || '\".\"' || viewname || '\" CASCADE;' as \"query\" ` +\n `FROM \"pg_views\" WHERE \"schemaname\" IN (${schemaNamesString})`\n const dropViewQueries: ObjectLiteral[] = await this.query(\n selectViewDropsQuery,\n )\n await Promise.all(\n dropViewQueries.map((q) => this.query(q[\"query\"])),\n )\n\n const selectDropsQuery = `SELECT 'DROP TABLE IF EXISTS \"' || table_schema || '\".\"' || table_name || '\" CASCADE;' as \"query\" FROM \"information_schema\".\"tables\" WHERE \"table_schema\" IN (${schemaNamesString})`\n const dropQueries: ObjectLiteral[] = await this.query(\n selectDropsQuery,\n )\n await Promise.all(dropQueries.map((q) => this.query(q[\"query\"])))\n\n const selectSequenceDropsQuery = `SELECT 'DROP SEQUENCE \"' || sequence_schema || '\".\"' || sequence_name || '\";' as \"query\" FROM \"information_schema\".\"sequences\" WHERE \"sequence_schema\" IN (${schemaNamesString})`\n const sequenceDropQueries: ObjectLiteral[] = await this.query(\n selectSequenceDropsQuery,\n )\n await Promise.all(\n sequenceDropQueries.map((q) => this.query(q[\"query\"])),\n )\n\n // drop enum types. Supported starting from v20.2.19.\n if (VersionUtils.isGreaterOrEqual(version, \"20.2.19\")) {\n await this.dropEnumTypes(schemaNamesString)\n }\n\n if (!isAnotherTransactionActive) await this.commitTransaction()\n } catch (error) {\n try {\n // we throw original error even if rollback thrown an error\n if (!isAnotherTransactionActive)\n await this.rollbackTransaction()\n } catch {\n // no-op\n }\n throw error\n }\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n protected async loadViews(viewNames?: string[]): Promise<View[]> {\n const hasTable = await this.hasTable(this.getTypeormMetadataTableName())\n if (!hasTable) {\n return []\n }\n\n if (!viewNames) {\n viewNames = []\n }\n\n const currentDatabase = await this.getCurrentDatabase()\n const currentSchema = await this.getCurrentSchema()\n\n const viewsCondition = viewNames\n .map((viewName) => {\n const { schema, tableName } =\n this.driver.parseTableName(viewName)\n\n return `(\"t\".\"schema\" = '${\n schema || currentSchema\n }' AND \"t\".\"name\" = '${tableName}')`\n })\n .join(\" OR \")\n\n const query =\n `SELECT \"t\".*, \"v\".\"check_option\" FROM ${this.escapePath(\n this.getTypeormMetadataTableName(),\n )} \"t\" ` +\n `INNER JOIN \"information_schema\".\"views\" \"v\" ON \"v\".\"table_schema\" = \"t\".\"schema\" AND \"v\".\"table_name\" = \"t\".\"name\" WHERE \"t\".\"type\" = '${\n MetadataTableType.VIEW\n }' ${viewsCondition ? `AND (${viewsCondition})` : \"\"}`\n const dbViews = await this.query(query)\n return dbViews.map((dbView: any) => {\n const view = new View()\n const schema =\n dbView[\"schema\"] === currentSchema &&\n !this.driver.options.schema\n ? undefined\n : dbView[\"schema\"]\n view.database = currentDatabase\n view.schema = dbView[\"schema\"]\n view.name = this.driver.buildTableName(dbView[\"name\"], schema)\n view.expression = dbView[\"value\"]\n return view\n })\n }\n\n /**\n * Loads all tables (with given names) from the database and creates a Table from them.\n */\n protected async loadTables(tableNames?: string[]): Promise<Table[]> {\n // if no tables given then no need to proceed\n if (tableNames && tableNames.length === 0) {\n return []\n }\n\n const currentSchema = await this.getCurrentSchema()\n const currentDatabase = await this.getCurrentDatabase()\n\n const dbTables: { table_schema: string; table_name: string }[] = []\n\n if (!tableNames) {\n const tablesSql = `SELECT \"table_schema\", \"table_name\" FROM \"information_schema\".\"tables\"`\n dbTables.push(...(await this.query(tablesSql)))\n } else {\n const tablesCondition = tableNames\n .map((tableName) => this.driver.parseTableName(tableName))\n .map(({ schema, tableName }) => {\n return `(\"table_schema\" = '${\n schema || currentSchema\n }' AND \"table_name\" = '${tableName}')`\n })\n .join(\" OR \")\n const tablesSql =\n `SELECT \"table_schema\", \"table_name\" FROM \"information_schema\".\"tables\" WHERE ` +\n tablesCondition\n\n dbTables.push(...(await this.query(tablesSql)))\n }\n\n if (dbTables.length === 0) {\n return []\n }\n\n const columnsCondiiton = dbTables\n .map(({ table_name, table_schema }) => {\n return `(\"table_schema\" = '${table_schema}' AND \"table_name\" = '${table_name}')`\n })\n .join(\" OR \")\n const columnsSql =\n `SELECT \"columns\".*, \"attr\".\"attgenerated\" as \"generated_type\", ` +\n `pg_catalog.col_description(('\"' || table_catalog || '\".\"' || table_schema || '\".\"' || table_name || '\"')::regclass::oid, ordinal_position) as description ` +\n `FROM \"information_schema\".\"columns\" ` +\n `LEFT JOIN \"pg_class\" AS \"cls\" ON \"cls\".\"relname\" = \"table_name\" ` +\n `LEFT JOIN \"pg_namespace\" AS \"ns\" ON \"ns\".\"oid\" = \"cls\".\"relnamespace\" AND \"ns\".\"nspname\" = \"table_schema\" ` +\n `LEFT JOIN \"pg_attribute\" AS \"attr\" ON \"attr\".\"attrelid\" = \"cls\".\"oid\" AND \"attr\".\"attname\" = \"column_name\" AND \"attr\".\"attnum\" = \"ordinal_position\" ` +\n `WHERE \"is_hidden\" = 'NO' AND ` +\n columnsCondiiton\n\n const constraintsCondition = dbTables\n .map(({ table_name, table_schema }) => {\n return `(\"ns\".\"nspname\" = '${table_schema}' AND \"t\".\"relname\" = '${table_name}')`\n })\n .join(\" OR \")\n\n const constraintsSql =\n `SELECT \"ns\".\"nspname\" AS \"table_schema\", \"t\".\"relname\" AS \"table_name\", \"cnst\".\"conname\" AS \"constraint_name\", ` +\n `pg_get_constraintdef(\"cnst\".\"oid\") AS \"expression\", ` +\n `CASE \"cnst\".\"contype\" WHEN 'p' THEN 'PRIMARY' WHEN 'u' THEN 'UNIQUE' WHEN 'c' THEN 'CHECK' WHEN 'x' THEN 'EXCLUDE' END AS \"constraint_type\", \"a\".\"attname\" AS \"column_name\" ` +\n `FROM \"pg_constraint\" \"cnst\" ` +\n `INNER JOIN \"pg_class\" \"t\" ON \"t\".\"oid\" = \"cnst\".\"conrelid\" ` +\n `INNER JOIN \"pg_namespace\" \"ns\" ON \"ns\".\"oid\" = \"cnst\".\"connamespace\" ` +\n `LEFT JOIN \"pg_attribute\" \"a\" ON \"a\".\"attrelid\" = \"cnst\".\"conrelid\" AND \"a\".\"attnum\" = ANY (\"cnst\".\"conkey\") ` +\n `WHERE \"t\".\"relkind\" = 'r' AND (${constraintsCondition})`\n\n const indicesSql =\n `SELECT \"ns\".\"nspname\" AS \"table_schema\", \"t\".\"relname\" AS \"table_name\", \"i\".\"relname\" AS \"constraint_name\", \"a\".\"attname\" AS \"column_name\", ` +\n `CASE \"ix\".\"indisunique\" WHEN 't' THEN 'TRUE' ELSE'FALSE' END AS \"is_unique\", pg_get_expr(\"ix\".\"indpred\", \"ix\".\"indrelid\") AS \"condition\", ` +\n `\"types\".\"typname\" AS \"type_name\" ` +\n `FROM \"pg_class\" \"t\" ` +\n `INNER JOIN \"pg_index\" \"ix\" ON \"ix\".\"indrelid\" = \"t\".\"oid\" ` +\n `INNER JOIN \"pg_attribute\" \"a\" ON \"a\".\"attrelid\" = \"t\".\"oid\" AND \"a\".\"attnum\" = ANY (\"ix\".\"indkey\") ` +\n `INNER JOIN \"pg_namespace\" \"ns\" ON \"ns\".\"oid\" = \"t\".\"relnamespace\" ` +\n `INNER JOIN \"pg_class\" \"i\" ON \"i\".\"oid\" = \"ix\".\"indexrelid\" ` +\n `INNER JOIN \"pg_type\" \"types\" ON \"types\".\"oid\" = \"a\".\"atttypid\" ` +\n `LEFT JOIN \"pg_constraint\" \"cnst\" ON \"cnst\".\"conname\" = \"i\".\"relname\" ` +\n `WHERE \"t\".\"relkind\" = 'r' AND \"cnst\".\"contype\" IS NULL AND (${constraintsCondition})`\n\n const foreignKeysCondition = dbTables\n .map(({ table_name, table_schema }) => {\n return `(\"ns\".\"nspname\" = '${table_schema}' AND \"cl\".\"relname\" = '${table_name}')`\n })\n .join(\" OR \")\n const foreignKeysSql =\n `SELECT \"con\".\"conname\" AS \"constraint_name\", \"con\".\"nspname\" AS \"table_schema\", \"con\".\"relname\" AS \"table_name\", \"att2\".\"attname\" AS \"column_name\", ` +\n `\"ns\".\"nspname\" AS \"referenced_table_schema\", \"cl\".\"relname\" AS \"referenced_table_name\", \"att\".\"attname\" AS \"referenced_column_name\", \"con\".\"confdeltype\" AS \"on_delete\", \"con\".\"confupdtype\" AS \"on_update\" ` +\n `FROM ( ` +\n `SELECT UNNEST (\"con1\".\"conkey\") AS \"parent\", UNNEST (\"con1\".\"confkey\") AS \"child\", \"con1\".\"confrelid\", \"con1\".\"conrelid\", \"con1\".\"conname\", \"con1\".\"contype\", \"ns\".\"nspname\", \"cl\".\"relname\", ` +\n `CASE \"con1\".\"confdeltype\" WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END as \"confdeltype\", ` +\n `CASE \"con1\".\"confupdtype\" WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END as \"confupdtype\" ` +\n `FROM \"pg_class\" \"cl\" ` +\n `INNER JOIN \"pg_namespace\" \"ns\" ON \"cl\".\"relnamespace\" = \"ns\".\"oid\" ` +\n `INNER JOIN \"pg_constraint\" \"con1\" ON \"con1\".\"conrelid\" = \"cl\".\"oid\" ` +\n `WHERE \"con1\".\"contype\" = 'f' AND (${foreignKeysCondition}) ` +\n `) \"con\" ` +\n `INNER JOIN \"pg_attribute\" \"att\" ON \"att\".\"attrelid\" = \"con\".\"confrelid\" AND \"att\".\"attnum\" = \"con\".\"child\" ` +\n `INNER JOIN \"pg_class\" \"cl\" ON \"cl\".\"oid\" = \"con\".\"confrelid\" ` +\n `INNER JOIN \"pg_namespace\" \"ns\" ON \"cl\".\"relnamespace\" = \"ns\".\"oid\" ` +\n `INNER JOIN \"pg_attribute\" \"att2\" ON \"att2\".\"attrelid\" = \"con\".\"conrelid\" AND \"att2\".\"attnum\" = \"con\".\"parent\"`\n\n const tableSchemas = dbTables\n .map((dbTable) => `'${dbTable.table_schema}'`)\n .join(\", \")\n const enumsSql =\n `SELECT \"t\".\"typname\" AS \"name\", string_agg(\"e\".\"enumlabel\", '|') AS \"value\" ` +\n `FROM \"pg_enum\" \"e\" ` +\n `INNER JOIN \"pg_type\" \"t\" ON \"t\".\"oid\" = \"e\".\"enumtypid\" ` +\n `INNER JOIN \"pg_namespace\" \"n\" ON \"n\".\"oid\" = \"t\".\"typnamespace\" ` +\n `WHERE \"n\".\"nspname\" IN (${tableSchemas}) ` +\n `GROUP BY \"t\".\"typname\"`\n\n const [\n dbColumns,\n dbConstraints,\n dbIndices,\n dbForeignKeys,\n dbEnums,\n ]: ObjectLiteral[][] = await Promise.all([\n this.query(columnsSql),\n this.query(constraintsSql),\n this.query(indicesSql),\n this.query(foreignKeysSql),\n this.query(enumsSql),\n ])\n\n // create tables for loaded tables\n return Promise.all(\n dbTables.map(async (dbTable) => {\n const table = new Table()\n\n const getSchemaFromKey = (dbObject: any, key: string) => {\n return dbObject[key] === currentSchema &&\n (!this.driver.options.schema ||\n this.driver.options.schema === currentSchema)\n ? undefined\n : dbObject[key]\n }\n\n // We do not need to join schema name, when database is by default.\n const schema = getSchemaFromKey(dbTable, \"table_schema\")\n table.database = currentDatabase\n table.schema = dbTable[\"table_schema\"]\n table.name = this.driver.buildTableName(\n dbTable[\"table_name\"],\n schema,\n )\n\n // create columns from the loaded columns\n table.columns = await Promise.all(\n dbColumns\n .filter(\n (dbColumn) =>\n dbColumn[\"table_name\"] ===\n dbTable[\"table_name\"] &&\n dbColumn[\"table_schema\"] ===\n dbTable[\"table_schema\"],\n )\n .map(async (dbColumn) => {\n const columnConstraints = dbConstraints.filter(\n (dbConstraint) => {\n return (\n dbConstraint[\"table_name\"] ===\n dbColumn[\"table_name\"] &&\n dbConstraint[\"table_schema\"] ===\n dbColumn[\"table_schema\"] &&\n dbConstraint[\"column_name\"] ===\n dbColumn[\"column_name\"]\n )\n },\n )\n\n const tableColumn = new TableColumn()\n tableColumn.name = dbColumn[\"column_name\"]\n\n tableColumn.type =\n dbColumn[\"crdb_sql_type\"].toLowerCase()\n if (\n dbColumn[\"crdb_sql_type\"].indexOf(\"COLLATE\") !==\n -1\n ) {\n tableColumn.collation = dbColumn[\n \"crdb_sql_type\"\n ].substr(\n dbColumn[\"crdb_sql_type\"].indexOf(\n \"COLLATE\",\n ) +\n \"COLLATE\".length +\n 1,\n dbColumn[\"crdb_sql_type\"].length,\n )\n tableColumn.type = tableColumn.type.substr(\n 0,\n dbColumn[\"crdb_sql_type\"].indexOf(\n \"COLLATE\",\n ) - 1,\n )\n }\n\n if (tableColumn.type.indexOf(\"(\") !== -1)\n tableColumn.type = tableColumn.type.substr(\n 0,\n tableColumn.type.indexOf(\"(\"),\n )\n\n if (\n tableColumn.type === \"numeric\" ||\n tableColumn.type === \"decimal\"\n ) {\n if (\n dbColumn[\"numeric_precision\"] !== null &&\n !this.isDefaultColumnPrecision(\n table,\n tableColumn,\n dbColumn[\"numeric_precision\"],\n )\n ) {\n tableColumn.precision = parseInt(\n dbColumn[\"numeric_precision\"],\n )\n } else if (\n dbColumn[\"numeric_scale\"] !== null &&\n !this.isDefaultColumnScale(\n table,\n tableColumn,\n dbColumn[\"numeric_scale\"],\n )\n ) {\n tableColumn.precision = undefined\n }\n if (\n dbColumn[\"numeric_scale\"] !== null &&\n !this.isDefaultColumnScale(\n table,\n tableColumn,\n dbColumn[\"numeric_scale\"],\n )\n ) {\n tableColumn.scale = parseInt(\n dbColumn[\"numeric_scale\"],\n )\n } else if (\n dbColumn[\"numeric_precision\"] !== null &&\n !this.isDefaultColumnPrecision(\n table,\n tableColumn,\n dbColumn[\"numeric_precision\"],\n )\n ) {\n tableColumn.scale = undefined\n }\n }\n\n // docs: https://www.postgresql.org/docs/current/xtypes.html\n // When you define a new base type, PostgreSQL automatically provides support for arrays of that type.\n // The array type typically has the same name as the base type with the underscore character (_) prepended.\n // ----\n // so, we must remove this underscore character from enum type name\n let udtName = dbColumn[\"udt_name\"]\n if (udtName.indexOf(\"_\") === 0) {\n udtName = udtName.substr(1, udtName.length)\n }\n\n const enumType = dbEnums.find((dbEnum) => {\n return dbEnum[\"name\"] === udtName\n })\n if (enumType) {\n // check if `enumName` is specified by user\n const builtEnumName = this.buildEnumName(\n table,\n tableColumn,\n false,\n true,\n )\n const enumName =\n builtEnumName !== enumType[\"name\"]\n ? enumType[\"name\"]\n : undefined\n\n tableColumn.type = \"enum\"\n tableColumn.enum = enumType[\"value\"].split(\"|\")\n tableColumn.enumName = enumName\n }\n\n if (\n dbColumn[\"data_type\"].toLowerCase() === \"array\"\n ) {\n tableColumn.isArray = true\n if (!enumType) {\n const type = dbColumn[\"crdb_sql_type\"]\n .replace(\"[]\", \"\")\n .toLowerCase()\n tableColumn.type =\n this.connection.driver.normalizeType({\n type: type,\n })\n }\n }\n\n // check only columns that have length property\n if (\n this.driver.withLengthColumnTypes.indexOf(\n tableColumn.type as ColumnType,\n ) !== -1 &&\n dbColumn[\"character_maximum_length\"]\n ) {\n const length =\n dbColumn[\n \"character_maximum_length\"\n ].toString()\n tableColumn.length =\n !this.isDefaultColumnLength(\n table,\n tableColumn,\n length,\n )\n ? length\n : \"\"\n }\n tableColumn.isNullable =\n dbColumn[\"is_nullable\"] === \"YES\"\n\n const primaryConstraint = columnConstraints.find(\n (constraint) =>\n constraint[\"constraint_type\"] === \"PRIMARY\",\n )\n if (primaryConstraint) {\n tableColumn.isPrimary = true\n // find another columns involved in primary key constraint\n const anotherPrimaryConstraints =\n dbConstraints.filter(\n (constraint) =>\n constraint[\"table_name\"] ===\n dbColumn[\"table_name\"] &&\n constraint[\"table_schema\"] ===\n dbColumn[\"table_schema\"] &&\n constraint[\"column_name\"] !==\n dbColumn[\"column_name\"] &&\n constraint[\"constraint_type\"] ===\n \"PRIMARY\",\n )\n\n // collect all column names\n const columnNames =\n anotherPrimaryConstraints.map(\n (constraint) =>\n constraint[\"column_name\"],\n )\n columnNames.push(dbColumn[\"column_name\"])\n\n // build default primary key constraint name\n const pkName =\n this.connection.namingStrategy.primaryKeyName(\n table,\n columnNames,\n )\n\n // if primary key has user-defined constraint name, write it in table column\n if (\n primaryConstraint[\"constraint_name\"] !==\n pkName\n ) {\n tableColumn.primaryKeyConstraintName =\n primaryConstraint[\"constraint_name\"]\n }\n }\n\n const uniqueConstraints = columnConstraints.filter(\n (constraint) =>\n constraint[\"constraint_type\"] === \"UNIQUE\",\n )\n const isConstraintComposite =\n uniqueConstraints.every((uniqueConstraint) => {\n return dbConstraints.some(\n (dbConstraint) =>\n dbConstraint[\"constraint_type\"] ===\n \"UNIQUE\" &&\n dbConstraint[\"constraint_name\"] ===\n uniqueConstraint[\n \"constraint_name\"\n ] &&\n dbConstraint[\"column_name\"] !==\n dbColumn[\"column_name\"],\n )\n })\n tableColumn.isUnique =\n uniqueConstraints.length > 0 &&\n !isConstraintComposite\n\n if (\n dbColumn[\"column_default\"] !== null &&\n dbColumn[\"column_default\"] !== undefined\n ) {\n if (\n dbColumn[\"column_default\"] ===\n \"unique_rowid()\"\n ) {\n tableColumn.isGenerated = true\n tableColumn.generationStrategy = \"rowid\"\n } else if (\n dbColumn[\"column_default\"].indexOf(\n \"nextval\",\n ) !== -1\n ) {\n tableColumn.isGenerated = true\n tableColumn.generationStrategy = \"increment\"\n } else if (\n dbColumn[\"column_default\"] ===\n \"gen_random_uuid()\"\n ) {\n tableColumn.isGenerated = true\n tableColumn.generationStrategy = \"uuid\"\n } else {\n tableColumn.default = dbColumn[\n \"column_default\"\n ].replace(/:::[\\w\\s[\\]\"]+/g, \"\")\n tableColumn.default =\n tableColumn.default.replace(\n /^(-?[\\d.]+)$/,\n \"($1)\",\n )\n\n if (enumType) {\n tableColumn.default =\n tableColumn.default.replace(\n `.${enumType[\"name\"]}`,\n \"\",\n )\n }\n }\n }\n\n if (\n (dbColumn[\"is_generated\"] === \"YES\" ||\n dbColumn[\"is_generated\"] === \"ALWAYS\") &&\n dbColumn[\"generation_expression\"]\n ) {\n tableColumn.generatedType =\n dbColumn[\"generated_type\"] === \"s\"\n ? \"STORED\"\n : \"VIRTUAL\"\n // We cannot relay on information_schema.columns.generation_expression, because it is formatted different.\n const asExpressionQuery =\n this.selectTypeormMetadataSql({\n schema: dbTable[\"table_schema\"],\n table: dbTable[\"table_name\"],\n type: MetadataTableType.GENERATED_COLUMN,\n name: tableColumn.name,\n })\n\n const results = await this.query(\n asExpressionQuery.query,\n asExpressionQuery.parameters,\n )\n if (results[0] && results[0].value) {\n tableColumn.asExpression = results[0].value\n } else {\n tableColumn.asExpression = \"\"\n }\n }\n\n tableColumn.comment =\n dbColumn[\"description\"] == null\n ? undefined\n : dbColumn[\"description\"]\n if (dbColumn[\"character_set_name\"])\n tableColumn.charset =\n dbColumn[\"character_set_name\"]\n\n if (\n tableColumn.type === \"geometry\" ||\n tableColumn.type === \"geography\"\n ) {\n const sql =\n `SELECT * FROM (` +\n `SELECT \"f_table_schema\" \"table_schema\", \"f_table_name\" \"table_name\", ` +\n `\"f_${tableColumn.type}_column\" \"column_name\", \"srid\", \"type\" ` +\n `FROM \"${tableColumn.type}_columns\"` +\n `) AS _ ` +\n `WHERE \"column_name\" = '${dbColumn[\"column_name\"]}' AND ` +\n `\"table_schema\" = '${dbColumn[\"table_schema\"]}' AND ` +\n `\"table_name\" = '${dbColumn[\"table_name\"]}'`\n\n const results: ObjectLiteral[] =\n await this.query(sql)\n\n if (results.length > 0) {\n tableColumn.spatialFeatureType =\n results[0].type\n tableColumn.srid = results[0].srid\n ? parseInt(results[0].srid)\n : undefined\n }\n }\n\n return tableColumn\n }),\n )\n\n // find unique constraints of table, group them by constraint name and build TableUnique.\n const tableUniqueConstraints = OrmUtils.uniq(\n dbConstraints.filter((dbConstraint) => {\n return (\n dbConstraint[\"table_name\"] ===\n dbTable[\"table_name\"] &&\n dbConstraint[\"table_schema\"] ===\n dbTable[\"table_schema\"] &&\n dbConstraint[\"constraint_type\"] === \"UNIQUE\"\n )\n }),\n (dbConstraint) => dbConstraint[\"constraint_name\"],\n )\n\n table.uniques = tableUniqueConstraints.map((constraint) => {\n const uniques = dbConstraints.filter(\n (dbC) =>\n dbC[\"constraint_name\"] ===\n constraint[\"constraint_name\"],\n )\n return new TableUnique({\n name: constraint[\"constraint_name\"],\n columnNames: uniques.map((u) => u[\"column_name\"]),\n })\n })\n\n // find check constraints of table, group them by constraint name and build TableCheck.\n const tableCheckConstraints = OrmUtils.uniq(\n dbConstraints.filter((dbConstraint) => {\n return (\n dbConstraint[\"table_name\"] ===\n dbTable[\"table_name\"] &&\n dbConstraint[\"table_schema\"] ===\n dbTable[\"table_schema\"] &&\n dbConstraint[\"constraint_type\"] === \"CHECK\"\n )\n }),\n (dbConstraint) => dbConstraint[\"constraint_name\"],\n )\n\n table.checks = tableCheckConstraints.map((constraint) => {\n const checks = dbConstraints.filter(\n (dbC) =>\n dbC[\"constraint_name\"] ===\n constraint[\"constraint_name\"],\n )\n return new TableCheck({\n name: constraint[\"constraint_name\"],\n columnNames: checks.map((c) => c[\"column_name\"]),\n expression: constraint[\"expression\"].replace(\n /^\\s*CHECK\\s*\\((.*)\\)\\s*$/i,\n \"$1\",\n ),\n })\n })\n\n // find exclusion constraints of table, group them by constraint name and build TableExclusion.\n const tableExclusionConstraints = OrmUtils.uniq(\n dbConstraints.filter((dbConstraint) => {\n return (\n dbConstraint[\"table_name\"] ===\n dbTable[\"table_name\"] &&\n dbConstraint[\"table_schema\"] ===\n dbTable[\"table_schema\"] &&\n dbConstraint[\"constraint_type\"] === \"EXCLUDE\"\n )\n }),\n (dbConstraint) => dbConstraint[\"constraint_name\"],\n )\n\n table.exclusions = tableExclusionConstraints.map(\n (constraint) => {\n return new TableExclusion({\n name: constraint[\"constraint_name\"],\n expression: constraint[\"expression\"].substring(8), // trim EXCLUDE from start of expression\n })\n },\n )\n\n // find foreign key constraints of table, group them by constraint name and build TableForeignKey.\n const tableForeignKeyConstraints = OrmUtils.uniq(\n dbForeignKeys.filter((dbForeignKey) => {\n return (\n dbForeignKey[\"table_name\"] ===\n dbTable[\"table_name\"] &&\n dbForeignKey[\"table_schema\"] ===\n dbTable[\"table_schema\"]\n )\n }),\n (dbForeignKey) => dbForeignKey[\"constraint_name\"],\n )\n\n table.foreignKeys = tableForeignKeyConstraints.map(\n (dbForeignKey) => {\n const foreignKeys = dbForeignKeys.filter(\n (dbFk) =>\n dbFk[\"constraint_name\"] ===\n dbForeignKey[\"constraint_name\"],\n )\n\n // if referenced table located in currently used schema, we don't need to concat schema name to table name.\n const schema = getSchemaFromKey(\n dbForeignKey,\n \"referenced_table_schema\",\n )\n const referencedTableName = this.driver.buildTableName(\n dbForeignKey[\"referenced_table_name\"],\n schema,\n )\n\n return new TableForeignKey({\n name: dbForeignKey[\"constraint_name\"],\n columnNames: foreignKeys.map(\n (dbFk) => dbFk[\"column_name\"],\n ),\n referencedSchema:\n dbForeignKey[\"referenced_table_schema\"],\n referencedTableName: referencedTableName,\n referencedColumnNames: foreignKeys.map(\n (dbFk) => dbFk[\"referenced_column_name\"],\n ),\n onDelete: dbForeignKey[\"on_delete\"],\n onUpdate: dbForeignKey[\"on_update\"],\n })\n },\n )\n\n // find index constraints of table, group them by constraint name and build TableIndex.\n const tableIndexConstraints = OrmUtils.uniq(\n dbIndices.filter((dbIndex) => {\n return (\n dbIndex[\"table_name\"] === dbTable[\"table_name\"] &&\n dbIndex[\"table_schema\"] === dbTable[\"table_schema\"]\n )\n }),\n (dbIndex) => dbIndex[\"constraint_name\"],\n )\n\n table.indices = tableIndexConstraints.map((constraint) => {\n const indices = dbIndices.filter(\n (index) =>\n index[\"constraint_name\"] ===\n constraint[\"constraint_name\"],\n )\n return new TableIndex(<TableIndexOptions>{\n table: table,\n name: constraint[\"constraint_name\"],\n columnNames: indices.map((i) => i[\"column_name\"]),\n isUnique: constraint[\"is_unique\"] === \"TRUE\",\n where: constraint[\"condition\"],\n isSpatial: indices.every(\n (i) =>\n this.driver.spatialTypes.indexOf(\n i[\"type_name\"],\n ) >= 0,\n ),\n isFulltext: false,\n })\n })\n\n return table\n }),\n )\n }\n\n /**\n * Builds create table sql.\n */\n protected createTableSql(table: Table, createForeignKeys?: boolean): Query {\n const columnDefinitions = table.columns\n .map((column) => this.buildCreateColumnSql(table, column))\n .join(\", \")\n let sql = `CREATE TABLE ${this.escapePath(table)} (${columnDefinitions}`\n\n table.columns\n .filter((column) => column.isUnique)\n .forEach((column) => {\n const isUniqueExist = table.uniques.some(\n (unique) =>\n unique.columnNames.length === 1 &&\n unique.columnNames[0] === column.name,\n )\n if (!isUniqueExist)\n table.uniques.push(\n new TableUnique({\n name: this.connection.namingStrategy.uniqueConstraintName(\n table,\n [column.name],\n ),\n columnNames: [column.name],\n }),\n )\n })\n\n table.indices\n .filter((index) => index.isUnique)\n .forEach((index) => {\n table.uniques.push(\n new TableUnique({\n name: this.connection.namingStrategy.uniqueConstraintName(\n table,\n index.columnNames,\n ),\n columnNames: index.columnNames,\n }),\n )\n })\n\n if (table.uniques.length > 0) {\n const uniquesSql = table.uniques\n .map((unique) => {\n const uniqueName = unique.name\n ? unique.name\n : this.connection.namingStrategy.uniqueConstraintName(\n table,\n unique.columnNames,\n )\n const columnNames = unique.columnNames\n .map((columnName) => `\"${columnName}\"`)\n .join(\", \")\n return `CONSTRAINT \"${uniqueName}\" UNIQUE (${columnNames})`\n })\n .join(\", \")\n\n sql += `, ${uniquesSql}`\n }\n\n if (table.checks.length > 0) {\n const checksSql = table.checks\n .map((check) => {\n const checkName = check.name\n ? check.name\n : this.connection.namingStrategy.checkConstraintName(\n table,\n check.expression!,\n )\n return `CONSTRAINT \"${checkName}\" CHECK (${check.expression})`\n })\n .join(\", \")\n\n sql += `, ${checksSql}`\n }\n\n if (table.foreignKeys.length > 0 && createForeignKeys) {\n const foreignKeysSql = table.foreignKeys\n .map((fk) => {\n const columnNames = fk.columnNames\n .map((columnName) => `\"${columnName}\"`)\n .join(\", \")\n if (!fk.name)\n fk.name = this.connection.namingStrategy.foreignKeyName(\n table,\n fk.columnNames,\n this.getTablePath(fk),\n fk.referencedColumnNames,\n )\n const referencedColumnNames = fk.referencedColumnNames\n .map((columnName) => `\"${columnName}\"`)\n .join(\", \")\n\n let constraint = `CONSTRAINT \"${\n fk.name\n }\" FOREIGN KEY (${columnNames}) REFERENCES ${this.escapePath(\n this.getTablePath(fk),\n )} (${referencedColumnNames})`\n if (fk.onDelete) constraint += ` ON DELETE ${fk.onDelete}`\n if (fk.onUpdate) constraint += ` ON UPDATE ${fk.onUpdate}`\n\n return constraint\n })\n .join(\", \")\n\n sql += `, ${foreignKeysSql}`\n }\n\n const primaryColumns = table.columns.filter(\n (column) => column.isPrimary,\n )\n if (primaryColumns.length > 0) {\n const primaryKeyName = primaryColumns[0].primaryKeyConstraintName\n ? primaryColumns[0].primaryKeyConstraintName\n : this.connection.namingStrategy.primaryKeyName(\n table,\n primaryColumns.map((column) => column.name),\n )\n\n const columnNames = primaryColumns\n .map((column) => `\"${column.name}\"`)\n .join(\", \")\n sql += `, CONSTRAINT \"${primaryKeyName}\" PRIMARY KEY (${columnNames})`\n }\n\n sql += `)`\n\n table.columns\n .filter((it) => it.comment)\n .forEach(\n (it) =>\n (sql += `; COMMENT ON COLUMN ${this.escapePath(table)}.\"${\n it.name\n }\" IS ${this.escapeComment(it.comment)}`),\n )\n\n return new Query(sql)\n }\n\n /**\n * Loads Cockroachdb version.\n */\n async getVersion(): Promise<string> {\n const result: [{ version: string }] = await this.query(\n `SELECT version() AS \"version\"`,\n )\n const versionString = result[0].version\n\n return versionString.replace(/^CockroachDB CCL v([\\d.]+) .*$/, \"$1\")\n }\n\n /**\n * Builds drop table sql.\n */\n protected dropTableSql(tableOrPath: Table | string): Query {\n return new Query(`DROP TABLE ${this.escapePath(tableOrPath)}`)\n }\n\n protected createViewSql(view: View): Query {\n if (typeof view.expression === \"string\") {\n return new Query(\n `CREATE VIEW ${this.escapePath(view)} AS ${view.expression}`,\n )\n } else {\n return new Query(\n `CREATE VIEW ${this.escapePath(view)} AS ${view\n .expression(this.connection)\n .getQuery()}`,\n )\n }\n }\n\n protected async insertViewDefinitionSql(view: View): Promise<Query> {\n const currentSchema = await this.getCurrentSchema()\n let { schema, tableName: name } = this.driver.parseTableName(view)\n if (!schema) {\n schema = currentSchema\n }\n\n const expression =\n typeof view.expression === \"string\"\n ? view.expression.trim()\n : view.expression(this.connection).getQuery()\n return this.insertTypeormMetadataSql({\n type: MetadataTableType.VIEW,\n schema: schema,\n name: name,\n value: expression,\n })\n }\n\n /**\n * Builds drop view sql.\n */\n protected dropViewSql(viewOrPath: View | string): Query {\n return new Query(`DROP VIEW ${this.escapePath(viewOrPath)}`)\n }\n\n /**\n * Builds remove view sql.\n */\n protected async deleteViewDefinitionSql(\n viewOrPath: View | string,\n ): Promise<Query> {\n const currentSchema = await this.getCurrentSchema()\n\n let { schema, tableName: name } = this.driver.parseTableName(viewOrPath)\n\n if (!schema) {\n schema = currentSchema\n }\n\n return this.deleteTypeormMetadataSql({\n type: MetadataTableType.VIEW,\n schema,\n name,\n })\n }\n\n /**\n * Drops ENUM type from given schemas.\n */\n protected async dropEnumTypes(schemaNames: string): Promise<void> {\n const selectDropsQuery =\n `SELECT 'DROP TYPE IF EXISTS \"' || n.nspname || '\".\"' || t.typname || '\";' as \"query\" FROM \"pg_type\" \"t\" ` +\n `INNER JOIN \"pg_enum\" \"e\" ON \"e\".\"enumtypid\" = \"t\".\"oid\" ` +\n `INNER JOIN \"pg_namespace\" \"n\" ON \"n\".\"oid\" = \"t\".\"typnamespace\" ` +\n `WHERE \"n\".\"nspname\" IN (${schemaNames}) GROUP BY \"n\".\"nspname\", \"t\".\"typname\"`\n const dropQueries: ObjectLiteral[] = await this.query(selectDropsQuery)\n await Promise.all(dropQueries.map((q) => this.query(q[\"query\"])))\n }\n\n /**\n * Checks if enum with the given name exist in the database.\n */\n protected async hasEnumType(\n table: Table,\n column: TableColumn,\n ): Promise<boolean> {\n let { schema } = this.driver.parseTableName(table)\n\n if (!schema) {\n schema = await this.getCurrentSchema()\n }\n\n const enumName = this.buildEnumName(table, column, false, true)\n const sql =\n `SELECT \"n\".\"nspname\", \"t\".\"typname\" FROM \"pg_type\" \"t\" ` +\n `INNER JOIN \"pg_namespace\" \"n\" ON \"n\".\"oid\" = \"t\".\"typnamespace\" ` +\n `WHERE \"n\".\"nspname\" = '${schema}' AND \"t\".\"typname\" = '${enumName}'`\n const result = await this.query(sql)\n return result.length ? true : false\n }\n\n /**\n * Builds create ENUM type sql.\n */\n protected createEnumTypeSql(\n table: Table,\n column: TableColumn,\n enumName?: string,\n ): Query {\n if (!enumName) enumName = this.buildEnumName(table, column)\n const enumValues = column\n .enum!.map((value) => `'${value.replaceAll(\"'\", \"''\")}'`)\n .join(\", \")\n return new Query(`CREATE TYPE ${enumName} AS ENUM(${enumValues})`)\n }\n\n /**\n * Builds create ENUM type sql.\n */\n protected dropEnumTypeSql(\n table: Table,\n column: TableColumn,\n enumName?: string,\n ): Query {\n if (!enumName) enumName = this.buildEnumName(table, column)\n return new Query(`DROP TYPE ${enumName}`)\n }\n\n /**\n * Builds create index sql.\n * UNIQUE indices creates as UNIQUE constraints.\n */\n protected createIndexSql(table: Table, index: TableIndex): Query {\n const columns = index.columnNames\n .map((columnName) => `\"${columnName}\"`)\n .join(\", \")\n return new Query(\n `CREATE ${index.isUnique ? \"UNIQUE \" : \"\"}INDEX \"${\n index.name\n }\" ON ${this.escapePath(table)} ${\n index.isSpatial ? \"USING GiST \" : \"\"\n }(${columns}) ${index.where ? \"WHERE \" + index.where : \"\"}`,\n )\n }\n\n /**\n * Builds drop index sql.\n */\n protected dropIndexSql(\n table: Table,\n indexOrName: TableIndex | TableUnique | string,\n ): Query {\n const indexName =\n InstanceChecker.isTableIndex(indexOrName) ||\n InstanceChecker.isTableUnique(indexOrName)\n ? indexOrName.name\n : indexOrName\n return new Query(\n `DROP INDEX ${this.escapePath(table)}@\"${indexName}\" CASCADE`,\n )\n }\n\n /**\n * Builds create primary key sql.\n */\n protected createPrimaryKeySql(\n table: Table,\n columnNames: string[],\n constraintName?: string,\n ): Query {\n const primaryKeyName = constraintName\n ? constraintName\n : this.connection.namingStrategy.primaryKeyName(table, columnNames)\n const columnNamesString = columnNames\n .map((columnName) => `\"${columnName}\"`)\n .join(\", \")\n return new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${primaryKeyName}\" PRIMARY KEY (${columnNamesString})`,\n )\n }\n\n /**\n * Builds drop primary key sql.\n */\n protected dropPrimaryKeySql(table: Table): Query {\n if (!table.primaryColumns.length)\n throw new TypeORMError(`Table ${table} has no primary keys.`)\n\n const columnNames = table.primaryColumns.map((column) => column.name)\n const constraintName = table.primaryColumns[0].primaryKeyConstraintName\n const primaryKeyName = constraintName\n ? constraintName\n : this.connection.namingStrategy.primaryKeyName(table, columnNames)\n return new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${primaryKeyName}\"`,\n )\n }\n\n /**\n * Builds create unique constraint sql.\n */\n protected createUniqueConstraintSql(\n table: Table,\n uniqueConstraint: TableUnique | TableIndex,\n ): Query {\n const columnNames = uniqueConstraint.columnNames\n .map((column) => `\"` + column + `\"`)\n .join(\", \")\n return new Query(\n `ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${\n uniqueConstraint.name\n }\" UNIQUE (${columnNames})`,\n )\n }\n\n /**\n * Builds drop unique constraint sql.\n */\n protected dropUniqueConstraintSql(\n table: Table,\n uniqueOrName: TableUnique | string,\n ): Query {\n const uniqueName = InstanceChecker.isTableUnique(uniqueOrName)\n ? uniqueOrName.name\n : uniqueOrName\n return new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${uniqueName}\"`,\n )\n }\n\n /**\n * Builds create check constraint sql.\n */\n protected createCheckConstraintSql(\n table: Table,\n checkConstraint: TableCheck,\n ): Query {\n return new Query(\n `ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${\n checkConstraint.name\n }\" CHECK (${checkConstraint.expression})`,\n )\n }\n\n /**\n * Builds drop check constraint sql.\n */\n protected dropCheckConstraintSql(\n table: Table,\n checkOrName: TableCheck | string,\n ): Query {\n const checkName = InstanceChecker.isTableCheck(checkOrName)\n ? checkOrName.name\n : checkOrName\n return new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${checkName}\"`,\n )\n }\n\n /**\n * Builds create foreign key sql.\n */\n protected createForeignKeySql(\n table: Table,\n foreignKey: TableForeignKey,\n ): Query {\n const columnNames = foreignKey.columnNames\n .map((column) => `\"` + column + `\"`)\n .join(\", \")\n const referencedColumnNames = foreignKey.referencedColumnNames\n .map((column) => `\"` + column + `\"`)\n .join(\",\")\n let sql =\n `ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${\n foreignKey.name\n }\" FOREIGN KEY (${columnNames}) ` +\n `REFERENCES ${this.escapePath(\n this.getTablePath(foreignKey),\n )}(${referencedColumnNames})`\n if (foreignKey.onDelete) sql += ` ON DELETE ${foreignKey.onDelete}`\n if (foreignKey.onUpdate) sql += ` ON UPDATE ${foreignKey.onUpdate}`\n\n return new Query(sql)\n }\n\n /**\n * Builds drop foreign key sql.\n */\n protected dropForeignKeySql(\n table: Table,\n foreignKeyOrName: TableForeignKey | string,\n ): Query {\n const foreignKeyName = InstanceChecker.isTableForeignKey(\n foreignKeyOrName,\n )\n ? foreignKeyOrName.name\n : foreignKeyOrName\n return new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${foreignKeyName}\"`,\n )\n }\n\n /**\n * Builds sequence name from given table and column.\n */\n protected buildSequenceName(\n table: Table,\n columnOrName: TableColumn | string,\n ): string {\n const { tableName } = this.driver.parseTableName(table)\n\n const columnName = InstanceChecker.isTableColumn(columnOrName)\n ? columnOrName.name\n : columnOrName\n\n return `${tableName}_${columnName}_seq`\n }\n\n protected buildSequencePath(\n table: Table,\n columnOrName: TableColumn | string,\n ): string {\n const { schema } = this.driver.parseTableName(table)\n\n return schema\n ? `${schema}.${this.buildSequenceName(table, columnOrName)}`\n : this.buildSequenceName(table, columnOrName)\n }\n\n /**\n * Builds ENUM type name from given table and column.\n */\n protected buildEnumName(\n table: Table,\n column: TableColumn,\n withSchema: boolean = true,\n disableEscape?: boolean,\n toOld?: boolean,\n ): string {\n const { schema, tableName } = this.driver.parseTableName(table)\n let enumName = column.enumName\n ? column.enumName\n : `${tableName}_${column.name.toLowerCase()}_enum`\n if (schema && withSchema) enumName = `${schema}.${enumName}`\n if (toOld) enumName = enumName + \"_old\"\n return enumName\n .split(\".\")\n .map((i) => {\n return disableEscape ? i : `\"${i}\"`\n })\n .join(\".\")\n }\n\n protected async getUserDefinedTypeName(table: Table, column: TableColumn) {\n let { schema, tableName: name } = this.driver.parseTableName(table)\n\n if (!schema) {\n schema = await this.getCurrentSchema()\n }\n\n const result = await this.query(\n `SELECT \"udt_schema\", \"udt_name\" ` +\n `FROM \"information_schema\".\"columns\" WHERE \"table_schema\" = '${schema}' AND \"table_name\" = '${name}' AND \"column_name\"='${column.name}'`,\n )\n\n // docs: https://www.postgresql.org/docs/current/xtypes.html\n // When you define a new base type, PostgreSQL automatically provides support for arrays of that type.\n // The array type typically has the same name as the base type with the underscore character (_) prepended.\n // ----\n // so, we must remove this underscore character from enum type name\n let udtName = result[0][\"udt_name\"]\n if (udtName.indexOf(\"_\") === 0) {\n udtName = udtName.substr(1, udtName.length)\n }\n return {\n schema: result[0][\"udt_schema\"],\n name: udtName,\n }\n }\n\n /**\n * Escapes a given comment so it's safe to include in a query.\n */\n protected escapeComment(comment?: string) {\n if (comment === undefined || comment.length === 0) {\n return \"NULL\"\n }\n\n comment = comment.replace(/'/g, \"''\").replace(/\\u0000/g, \"\") // Null bytes aren't allowed in comments\n\n return `'${comment}'`\n }\n\n /**\n * Escapes given table or view path.\n */\n protected escapePath(target: Table | View | string): string {\n const { schema, tableName } = this.driver.parseTableName(target)\n\n if (schema && schema !== this.driver.searchSchema) {\n return `\"${schema}\".\"${tableName}\"`\n }\n\n return `\"${tableName}\"`\n }\n\n /**\n * Builds a query for create column.\n */\n protected buildCreateColumnSql(table: Table, column: TableColumn) {\n let c = '\"' + column.name + '\"'\n\n if (column.isGenerated) {\n if (column.generationStrategy === \"increment\") {\n c += ` INT DEFAULT nextval('${this.escapePath(\n this.buildSequencePath(table, column),\n )}')`\n } else if (column.generationStrategy === \"rowid\") {\n c += \" INT DEFAULT unique_rowid()\"\n } else if (column.generationStrategy === \"uuid\") {\n c += \" UUID DEFAULT gen_random_uuid()\"\n }\n }\n\n if (column.type === \"enum\" || column.type === \"simple-enum\") {\n c += \" \" + this.buildEnumName(table, column)\n if (column.isArray) c += \" array\"\n } else if (!column.isGenerated) {\n c += \" \" + this.connection.driver.createFullType(column)\n }\n\n if (column.asExpression) {\n c += ` AS (${column.asExpression}) ${\n column.generatedType ? column.generatedType : \"VIRTUAL\"\n }`\n } else {\n if (column.charset) c += ' CHARACTER SET \"' + column.charset + '\"'\n if (column.collation) c += ' COLLATE \"' + column.collation + '\"'\n }\n\n if (!column.isNullable) c += \" NOT NULL\"\n if (\n !column.isGenerated &&\n column.default !== undefined &&\n column.default !== null\n )\n c += \" DEFAULT \" + column.default\n\n return c\n }\n /**\n * Change table comment.\n */\n changeTableComment(\n tableOrName: Table | string,\n comment?: string,\n ): Promise<void> {\n throw new TypeORMError(\n `cockroachdb driver does not support change table comment.`,\n )\n }\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"file":"CockroachQueryRunner.js","sourceRoot":"","sources":["../../../../src/driver/cockroachdb/CockroachQueryRunner.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ObjectLiteral } from \"../../common/ObjectLiteral\"\nimport { TypeORMError } from \"../../error\"\nimport { QueryFailedError } from \"../../error/QueryFailedError\"\nimport { QueryRunnerAlreadyReleasedError } from \"../../error/QueryRunnerAlreadyReleasedError\"\nimport { TransactionNotStartedError } from \"../../error/TransactionNotStartedError\"\nimport type { ReadStream } from \"../../platform/PlatformTools\"\nimport { BaseQueryRunner } from \"../../query-runner/BaseQueryRunner\"\nimport { QueryResult } from \"../../query-runner/QueryResult\"\nimport type { QueryRunner } from \"../../query-runner/QueryRunner\"\nimport type { TableIndexOptions } from \"../../schema-builder/options/TableIndexOptions\"\nimport { Table } from \"../../schema-builder/table/Table\"\nimport { TableCheck } from \"../../schema-builder/table/TableCheck\"\nimport { TableColumn } from \"../../schema-builder/table/TableColumn\"\nimport { TableExclusion } from \"../../schema-builder/table/TableExclusion\"\nimport { TableForeignKey } from \"../../schema-builder/table/TableForeignKey\"\nimport { TableIndex } from \"../../schema-builder/table/TableIndex\"\nimport { TableUnique } from \"../../schema-builder/table/TableUnique\"\nimport { View } from \"../../schema-builder/view/View\"\nimport { Broadcaster } from \"../../subscriber/Broadcaster\"\nimport { BroadcasterResult } from \"../../subscriber/BroadcasterResult\"\nimport { InstanceChecker } from \"../../util/InstanceChecker\"\nimport { OrmUtils } from \"../../util/OrmUtils\"\nimport { VersionUtils } from \"../../util/VersionUtils\"\nimport { Query } from \"../Query\"\nimport type { ColumnType } from \"../types/ColumnTypes\"\nimport type { IsolationLevel } from \"../types/IsolationLevel\"\nimport { MetadataTableType } from \"../types/MetadataTableType\"\nimport type { ReplicationMode } from \"../types/ReplicationMode\"\nimport type { CockroachDriver } from \"./CockroachDriver\"\n\n/**\n * Runs queries on a single postgres database connection.\n */\nexport class CockroachQueryRunner\n extends BaseQueryRunner\n implements QueryRunner\n{\n // -------------------------------------------------------------------------\n // Public Implemented Properties\n // -------------------------------------------------------------------------\n\n /**\n * Database driver used by connection.\n */\n driver: CockroachDriver\n\n // -------------------------------------------------------------------------\n // Protected Properties\n // -------------------------------------------------------------------------\n\n /**\n * Promise used to obtain a database connection for a first time.\n */\n protected databaseConnectionPromise: Promise<any>\n\n /**\n * Special callback provided by a driver used to release a created connection.\n */\n protected releaseCallback?: (err: any) => void\n\n /**\n * Stores all executed queries to be able to run them again if transaction fails.\n */\n protected queries: {\n query: string\n parameters?: any[]\n useStructuredResult: boolean\n }[] = []\n\n /**\n * Indicates if running queries must be stored\n */\n protected storeQueries: boolean = false\n\n /**\n * Current number of transaction retries in case of 40001 error.\n */\n protected transactionRetries: number = 0\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(driver: CockroachDriver, mode: ReplicationMode) {\n super()\n this.driver = driver\n this.dataSource = driver.dataSource\n this.mode = mode\n this.broadcaster = new Broadcaster(this)\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates/uses database connection from the connection pool to perform further operations.\n * Returns obtained database connection.\n */\n connect(): Promise<any> {\n if (this.databaseConnection)\n return Promise.resolve(this.databaseConnection)\n\n if (this.databaseConnectionPromise)\n return this.databaseConnectionPromise\n\n if (this.mode === \"slave\" && this.driver.isReplicated) {\n this.databaseConnectionPromise = this.driver\n .obtainSlaveConnection()\n .then(([connection, release]: any[]) => {\n this.driver.connectedQueryRunners.push(this)\n this.databaseConnection = connection\n\n const onErrorCallback = (err: Error) =>\n this.releaseConnection(err)\n this.releaseCallback = (err?: Error) => {\n this.databaseConnection.removeListener(\n \"error\",\n onErrorCallback,\n )\n release(err)\n }\n this.databaseConnection.on(\"error\", onErrorCallback)\n\n return this.databaseConnection\n })\n } else {\n // master\n this.databaseConnectionPromise = this.driver\n .obtainMasterConnection()\n .then(([connection, release]: any[]) => {\n this.driver.connectedQueryRunners.push(this)\n this.databaseConnection = connection\n\n const onErrorCallback = (err: Error) =>\n this.releaseConnection(err)\n this.releaseCallback = (err?: Error) => {\n this.databaseConnection.removeListener(\n \"error\",\n onErrorCallback,\n )\n release(err)\n }\n this.databaseConnection.on(\"error\", onErrorCallback)\n\n return this.databaseConnection\n })\n }\n\n return this.databaseConnectionPromise\n }\n\n /**\n * Release a connection back to the pool, optionally specifying an Error to release with.\n * Per pg-pool documentation this will prevent the pool from re-using the broken connection.\n * @param err\n */\n private async releaseConnection(err?: Error) {\n if (this.isReleased) {\n return\n }\n\n this.isReleased = true\n if (this.releaseCallback) {\n this.releaseCallback(err)\n this.releaseCallback = undefined\n }\n\n const index = this.driver.connectedQueryRunners.indexOf(this)\n\n if (index !== -1) {\n this.driver.connectedQueryRunners.splice(index, 1)\n }\n }\n\n /**\n * Releases used database connection.\n * You cannot use query runner methods once its released.\n */\n release(): Promise<void> {\n return this.releaseConnection()\n }\n\n /**\n * Starts transaction.\n * @param isolationLevel\n */\n async startTransaction(isolationLevel?: IsolationLevel): Promise<void> {\n this.isTransactionActive = true\n this.transactionRetries = 0\n try {\n await this.broadcaster.broadcast(\"BeforeTransactionStart\")\n } catch (err) {\n this.isTransactionActive = false\n throw err\n }\n\n if (this.transactionDepth === 0) {\n await this.query(\"START TRANSACTION\")\n await this.query(\"SAVEPOINT cockroach_restart\")\n if (isolationLevel) {\n await this.query(\n \"SET TRANSACTION ISOLATION LEVEL \" + isolationLevel,\n )\n }\n } else {\n await this.query(`SAVEPOINT typeorm_${this.transactionDepth}`)\n }\n\n this.transactionDepth += 1\n this.storeQueries = true\n\n await this.broadcaster.broadcast(\"AfterTransactionStart\")\n }\n\n /**\n * Commits transaction.\n * Error will be thrown if transaction was not started.\n */\n async commitTransaction(): Promise<void> {\n if (!this.isTransactionActive) throw new TransactionNotStartedError()\n\n await this.broadcaster.broadcast(\"BeforeTransactionCommit\")\n\n if (this.transactionDepth > 1) {\n await this.query(\n `RELEASE SAVEPOINT typeorm_${this.transactionDepth - 1}`,\n )\n this.transactionDepth -= 1\n } else {\n this.storeQueries = false\n await this.query(\"RELEASE SAVEPOINT cockroach_restart\")\n await this.query(\"COMMIT\")\n this.queries = []\n this.isTransactionActive = false\n this.transactionRetries = 0\n this.transactionDepth -= 1\n }\n\n await this.broadcaster.broadcast(\"AfterTransactionCommit\")\n }\n\n /**\n * Rollbacks transaction.\n * Error will be thrown if transaction was not started.\n */\n async rollbackTransaction(): Promise<void> {\n if (!this.isTransactionActive) throw new TransactionNotStartedError()\n\n await this.broadcaster.broadcast(\"BeforeTransactionRollback\")\n\n if (this.transactionDepth > 1) {\n await this.query(\n `ROLLBACK TO SAVEPOINT typeorm_${this.transactionDepth - 1}`,\n )\n } else {\n this.storeQueries = false\n await this.query(\"ROLLBACK\")\n this.queries = []\n this.isTransactionActive = false\n this.transactionRetries = 0\n }\n this.transactionDepth -= 1\n\n await this.broadcaster.broadcast(\"AfterTransactionRollback\")\n }\n\n /**\n * Executes a given SQL query.\n * @param query\n * @param parameters\n * @param useStructuredResult\n */\n async query(\n query: string,\n parameters?: any[],\n useStructuredResult = false,\n ): Promise<any> {\n if (this.isReleased) throw new QueryRunnerAlreadyReleasedError()\n\n const databaseConnection = await this.connect()\n\n this.driver.dataSource.logger.logQuery(query, parameters, this)\n await this.broadcaster.broadcast(\"BeforeQuery\", query, parameters)\n\n const broadcasterResult = new BroadcasterResult()\n const queryStartTime = Date.now()\n\n if (this.isTransactionActive && this.storeQueries) {\n this.queries.push({ query, parameters, useStructuredResult })\n }\n\n try {\n const raw = await new Promise<any>((ok, fail) => {\n databaseConnection.query(\n query,\n parameters,\n (err: any, raw: any) => (err ? fail(err) : ok(raw)),\n )\n })\n\n // log slow queries if maxQueryExecution time is set\n const maxQueryExecutionTime =\n this.driver.options.maxQueryExecutionTime\n const queryEndTime = Date.now()\n const queryExecutionTime = queryEndTime - queryStartTime\n if (\n maxQueryExecutionTime &&\n queryExecutionTime > maxQueryExecutionTime\n ) {\n this.driver.dataSource.logger.logQuerySlow(\n queryExecutionTime,\n query,\n parameters,\n this,\n )\n }\n\n const result = new QueryResult()\n\n if (raw.hasOwnProperty(\"rowCount\")) {\n result.affected = raw.rowCount\n }\n\n if (raw.hasOwnProperty(\"rows\")) {\n result.records = raw.rows\n }\n\n switch (raw.command) {\n case \"DELETE\":\n // for DELETE query additionally return number of affected rows\n result.raw = [raw.rows, raw.rowCount]\n break\n default:\n result.raw = raw.rows\n }\n\n this.broadcaster.broadcastAfterQueryEvent(\n broadcasterResult,\n query,\n parameters,\n true,\n queryExecutionTime,\n raw,\n undefined,\n )\n\n if (useStructuredResult) {\n return result\n } else {\n return result.raw\n }\n } catch (err) {\n if (\n err.code === \"40001\" &&\n this.isTransactionActive &&\n this.transactionRetries <\n (this.driver.options.maxTransactionRetries || 5)\n ) {\n this.transactionRetries += 1\n this.storeQueries = false\n await this.query(\"ROLLBACK TO SAVEPOINT cockroach_restart\")\n const sleepTime =\n 2 ** this.transactionRetries *\n 0.1 *\n (Math.random() + 0.5) *\n 1000\n await new Promise((resolve) => setTimeout(resolve, sleepTime))\n\n let result = undefined\n for (const q of this.queries) {\n this.driver.dataSource.logger.logQuery(\n `Retrying transaction for query \"${q.query}\"`,\n q.parameters,\n this,\n )\n result = await this.query(\n q.query,\n q.parameters,\n q.useStructuredResult,\n )\n }\n this.transactionRetries = 0\n this.storeQueries = true\n\n return result\n } else {\n this.driver.dataSource.logger.logQueryError(\n err,\n query,\n parameters,\n this,\n )\n this.broadcaster.broadcastAfterQueryEvent(\n broadcasterResult,\n query,\n parameters,\n false,\n undefined,\n undefined,\n err,\n )\n throw new QueryFailedError(query, parameters, err)\n }\n } finally {\n await broadcasterResult.wait()\n }\n }\n\n /**\n * Returns raw data stream.\n * @param query\n * @param parameters\n * @param onEnd\n * @param onError\n */\n async stream(\n query: string,\n parameters?: any[],\n onEnd?: Function,\n onError?: Function,\n ): Promise<ReadStream> {\n const QueryStream = this.driver.loadStreamDependency()\n if (this.isReleased) {\n throw new QueryRunnerAlreadyReleasedError()\n }\n\n const databaseConnection = await this.connect()\n this.driver.dataSource.logger.logQuery(query, parameters, this)\n const stream = databaseConnection.query(\n new QueryStream(query, parameters),\n )\n\n if (onEnd) {\n stream.on(\"end\", onEnd)\n }\n\n if (onError) {\n stream.on(\"error\", onError)\n }\n\n return stream\n }\n\n /**\n * Returns all available database names including system databases.\n */\n async getDatabases(): Promise<string[]> {\n return Promise.resolve([])\n }\n\n /**\n * Returns all available schema names including system schemas.\n * If database parameter specified, returns schemas of that database.\n * @param database\n */\n async getSchemas(database?: string): Promise<string[]> {\n return Promise.resolve([])\n }\n\n /**\n * Checks if database with the given name exist.\n * @param database\n */\n async hasDatabase(database: string): Promise<boolean> {\n const result = await this.query(\n `SELECT * FROM \"pg_database\" WHERE \"datname\" = $1`,\n [database],\n )\n return result.length ? true : false\n }\n\n /**\n * Loads currently using database\n */\n async getCurrentDatabase(): Promise<string> {\n const query = await this.query(`SELECT * FROM current_database()`)\n return query[0][\"current_database\"]\n }\n\n /**\n * Checks if schema with the given name exist.\n * @param schema\n */\n async hasSchema(schema: string): Promise<boolean> {\n const result = await this.query(\n `SELECT * FROM \"information_schema\".\"schemata\" WHERE \"schema_name\" = $1`,\n [schema],\n )\n return result.length ? true : false\n }\n\n /**\n * Loads currently using database schema\n */\n async getCurrentSchema(): Promise<string> {\n const query = await this.query(`SELECT * FROM current_schema()`)\n return query[0][\"current_schema\"]\n }\n\n /**\n * Checks if table with the given name exist in the database.\n * @param tableOrName\n */\n async hasTable(tableOrName: Table | string): Promise<boolean> {\n const parsedTableName = this.driver.parseTableName(tableOrName)\n\n if (!parsedTableName.schema) {\n parsedTableName.schema = await this.getCurrentSchema()\n }\n\n const sql = `SELECT * FROM \"information_schema\".\"tables\" WHERE \"table_schema\" = $1 AND \"table_name\" = $2`\n const result = await this.query(sql, [\n parsedTableName.schema,\n parsedTableName.tableName,\n ])\n return result.length ? true : false\n }\n\n /**\n * Checks if column with the given name exist in the given table.\n * @param tableOrName\n * @param columnName\n */\n async hasColumn(\n tableOrName: Table | string,\n columnName: string,\n ): Promise<boolean> {\n const parsedTableName = this.driver.parseTableName(tableOrName)\n\n if (!parsedTableName.schema) {\n parsedTableName.schema = await this.getCurrentSchema()\n }\n\n const sql = `SELECT * FROM \"information_schema\".\"columns\" WHERE \"table_schema\" = $1 AND \"table_name\" = $2 AND \"column_name\" = $3`\n const result = await this.query(sql, [\n parsedTableName.schema,\n parsedTableName.tableName,\n columnName,\n ])\n return result.length ? true : false\n }\n\n /**\n * Creates a new database.\n * @param database\n * @param ifNotExists\n */\n async createDatabase(\n database: string,\n ifNotExists?: boolean,\n ): Promise<void> {\n const up = `CREATE DATABASE ${\n ifNotExists ? \"IF NOT EXISTS \" : \"\"\n } ${this.driver.escape(database)}`\n const down = `DROP DATABASE ${this.driver.escape(database)}`\n await this.executeQueries(new Query(up), new Query(down))\n }\n\n /**\n * Drops database.\n * @param database\n * @param ifExists\n */\n async dropDatabase(database: string, ifExists?: boolean): Promise<void> {\n const up = `DROP DATABASE ${ifExists ? \"IF EXISTS \" : \"\"} ${this.driver.escape(database)}`\n const down = `CREATE DATABASE ${this.driver.escape(database)}`\n await this.executeQueries(new Query(up), new Query(down))\n }\n\n /**\n * Creates a new table schema.\n * @param schemaPath\n * @param ifNotExists\n */\n async createSchema(\n schemaPath: string,\n ifNotExists?: boolean,\n ): Promise<void> {\n const schema =\n schemaPath.indexOf(\".\") === -1\n ? schemaPath\n : schemaPath.split(\".\")[1]\n const escapedSchema = this.driver.escape(schema)\n\n const up = ifNotExists\n ? `CREATE SCHEMA IF NOT EXISTS ${escapedSchema}`\n : `CREATE SCHEMA ${escapedSchema}`\n const down = `DROP SCHEMA ${escapedSchema} CASCADE`\n await this.executeQueries(new Query(up), new Query(down))\n }\n\n /**\n * Drops table schema.\n * @param schemaPath\n * @param ifExists\n * @param isCascade\n */\n async dropSchema(\n schemaPath: string,\n ifExists?: boolean,\n isCascade?: boolean,\n ): Promise<void> {\n const schema =\n schemaPath.indexOf(\".\") === -1\n ? schemaPath\n : schemaPath.split(\".\")[1]\n const escapedSchema = this.driver.escape(schema)\n\n const up = ifExists\n ? `DROP SCHEMA IF EXISTS ${escapedSchema} ${isCascade ? \"CASCADE\" : \"\"}`\n : `DROP SCHEMA ${escapedSchema} ${isCascade ? \"CASCADE\" : \"\"}`\n const down = `CREATE SCHEMA ${escapedSchema}`\n await this.executeQueries(new Query(up), new Query(down))\n }\n\n /**\n * Creates a new table.\n * @param table\n * @param ifNotExists\n * @param createForeignKeys\n * @param createIndices\n */\n async createTable(\n table: Table,\n ifNotExists: boolean = false,\n createForeignKeys: boolean = true,\n createIndices: boolean = true,\n ): Promise<void> {\n if (ifNotExists) {\n const isTableExist = await this.hasTable(table)\n if (isTableExist) return Promise.resolve()\n }\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n\n // if table have column with ENUM type, we must create this type in postgres.\n const enumColumns = table.columns.filter(\n (column) => column.type === \"enum\" || column.type === \"simple-enum\",\n )\n const createdEnumTypes: string[] = []\n for (const column of enumColumns) {\n // TODO: Should also check if values of existing type matches expected ones\n const hasEnum = await this.hasEnumType(table, column)\n const enumName = this.buildEnumName(table, column)\n\n // if enum with the same \"enumName\" is defined more then once, me must prevent double creation\n if (!hasEnum && createdEnumTypes.indexOf(enumName) === -1) {\n createdEnumTypes.push(enumName)\n upQueries.push(this.createEnumTypeSql(table, column, enumName))\n downQueries.push(this.dropEnumTypeSql(table, column, enumName))\n }\n }\n\n table.columns\n .filter(\n (column) =>\n column.isGenerated &&\n column.generationStrategy === \"increment\",\n )\n .forEach((column) => {\n upQueries.push(\n new Query(\n `CREATE SEQUENCE ${this.escapePath(\n this.buildSequencePath(table, column),\n )}`,\n ),\n )\n downQueries.push(\n new Query(\n `DROP SEQUENCE ${this.escapePath(\n this.buildSequencePath(table, column),\n )}`,\n ),\n )\n })\n\n upQueries.push(this.createTableSql(table, createForeignKeys))\n downQueries.push(this.dropTableSql(table))\n\n // if createForeignKeys is true, we must drop created foreign keys in down query.\n // createTable does not need separate method to create foreign keys, because it create fk's in the same query with table creation.\n if (createForeignKeys)\n table.foreignKeys.forEach((foreignKey) =>\n downQueries.push(this.dropForeignKeySql(table, foreignKey)),\n )\n\n if (createIndices) {\n table.indices\n .filter((index) => !index.isUnique)\n .forEach((index) => {\n // new index may be passed without name. In this case we generate index name manually.\n if (!index.name)\n index.name = this.dataSource.namingStrategy.indexName(\n table,\n index.columnNames,\n index.where,\n )\n upQueries.push(this.createIndexSql(table, index))\n downQueries.push(this.dropIndexSql(table, index))\n })\n }\n\n // if table have column with generated type, we must add the expression to the metadata table\n const generatedColumns = table.columns.filter(\n (column) => column.generatedType && column.asExpression,\n )\n\n for (const column of generatedColumns) {\n const currentSchema = await this.getCurrentSchema()\n let { schema } = this.driver.parseTableName(table)\n if (!schema) {\n schema = currentSchema\n }\n\n const insertQuery = this.insertTypeormMetadataSql({\n schema: schema,\n table: table.name,\n type: MetadataTableType.GENERATED_COLUMN,\n name: column.name,\n value: column.asExpression,\n })\n\n const deleteQuery = this.deleteTypeormMetadataSql({\n schema: schema,\n table: table.name,\n type: MetadataTableType.GENERATED_COLUMN,\n name: column.name,\n })\n\n upQueries.push(insertQuery)\n downQueries.push(deleteQuery)\n }\n\n await this.executeQueries(upQueries, downQueries)\n }\n\n /**\n * Drops the table.\n * @param target\n * @param ifExists\n * @param dropForeignKeys\n * @param dropIndices\n */\n async dropTable(\n target: Table | string,\n ifExists?: boolean,\n dropForeignKeys: boolean = true,\n dropIndices: boolean = true,\n ): Promise<void> {\n // It needs because if table does not exist and dropForeignKeys or dropIndices is true, we don't need\n // to perform drop queries for foreign keys and indices.\n if (ifExists) {\n const isTableExist = await this.hasTable(target)\n if (!isTableExist) return Promise.resolve()\n }\n\n // if dropTable called with dropForeignKeys = true, we must create foreign keys in down query.\n const createForeignKeys: boolean = dropForeignKeys\n const tablePath = this.getTablePath(target)\n const table = await this.getCachedTable(tablePath)\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n\n // foreign keys must be dropped before indices, because fk's rely on indices\n if (dropForeignKeys)\n table.foreignKeys.forEach((foreignKey) =>\n upQueries.push(this.dropForeignKeySql(table, foreignKey)),\n )\n\n if (dropIndices) {\n table.indices.forEach((index) => {\n upQueries.push(this.dropIndexSql(table, index))\n downQueries.push(this.createIndexSql(table, index))\n })\n }\n\n upQueries.push(this.dropTableSql(table))\n downQueries.push(this.createTableSql(table, createForeignKeys))\n\n table.columns\n .filter(\n (column) =>\n column.isGenerated &&\n column.generationStrategy === \"increment\",\n )\n .forEach((column) => {\n upQueries.push(\n new Query(\n `DROP SEQUENCE ${this.escapePath(\n this.buildSequencePath(table, column),\n )}`,\n ),\n )\n downQueries.push(\n new Query(\n `CREATE SEQUENCE ${this.escapePath(\n this.buildSequencePath(table, column),\n )}`,\n ),\n )\n })\n\n // if table had columns with generated type, we must remove the expression from the metadata table\n const generatedColumns = table.columns.filter(\n (column) => column.generatedType && column.asExpression,\n )\n\n for (const column of generatedColumns) {\n const currentSchema = await this.getCurrentSchema()\n let { schema } = this.driver.parseTableName(table)\n if (!schema) {\n schema = currentSchema\n }\n\n const deleteQuery = this.deleteTypeormMetadataSql({\n schema: schema,\n table: table.name,\n type: MetadataTableType.GENERATED_COLUMN,\n name: column.name,\n })\n\n const insertQuery = this.insertTypeormMetadataSql({\n schema: schema,\n table: table.name,\n type: MetadataTableType.GENERATED_COLUMN,\n name: column.name,\n value: column.asExpression,\n })\n\n upQueries.push(deleteQuery)\n downQueries.push(insertQuery)\n }\n\n await this.executeQueries(upQueries, downQueries)\n }\n\n /**\n * Creates a new view.\n * @param view\n * @param syncWithMetadata\n */\n async createView(\n view: View,\n syncWithMetadata: boolean = false,\n ): Promise<void> {\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n upQueries.push(this.createViewSql(view))\n if (syncWithMetadata)\n upQueries.push(await this.insertViewDefinitionSql(view))\n downQueries.push(this.dropViewSql(view))\n if (syncWithMetadata)\n downQueries.push(await this.deleteViewDefinitionSql(view))\n await this.executeQueries(upQueries, downQueries)\n }\n\n /**\n * Drops the view.\n * @param target\n * @param ifExists\n */\n async dropView(target: View | string, ifExists?: boolean): Promise<void> {\n const viewName = InstanceChecker.isView(target) ? target.name : target\n const view = await this.getCachedView(viewName)\n\n await this.executeQueries(\n [\n await this.deleteViewDefinitionSql(view),\n ifExists\n ? new Query(`DROP VIEW IF EXISTS ${this.escapePath(view)}`)\n : this.dropViewSql(view),\n ],\n [\n await this.insertViewDefinitionSql(view),\n this.createViewSql(view),\n ],\n )\n }\n\n /**\n * Renames the given table.\n * @param oldTableOrName\n * @param newTableName\n */\n async renameTable(\n oldTableOrName: Table | string,\n newTableName: string,\n ): Promise<void> {\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n const oldTable = InstanceChecker.isTable(oldTableOrName)\n ? oldTableOrName\n : await this.getCachedTable(oldTableOrName)\n const newTable = oldTable.clone()\n\n const { schema: schemaName, tableName: oldTableName } =\n this.driver.parseTableName(oldTable)\n\n newTable.name = schemaName\n ? `${schemaName}.${newTableName}`\n : newTableName\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n oldTable,\n )} RENAME TO \"${newTableName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n newTable,\n )} RENAME TO \"${oldTableName}\"`,\n ),\n )\n\n // rename column primary key constraint\n if (\n newTable.primaryColumns.length > 0 &&\n !newTable.primaryColumns[0].primaryKeyConstraintName\n ) {\n const columnNames = newTable.primaryColumns.map(\n (column) => column.name,\n )\n\n const oldPkName = this.dataSource.namingStrategy.primaryKeyName(\n oldTable,\n columnNames,\n )\n const newPkName = this.dataSource.namingStrategy.primaryKeyName(\n newTable,\n columnNames,\n )\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n newTable,\n )} RENAME CONSTRAINT \"${oldPkName}\" TO \"${newPkName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n newTable,\n )} RENAME CONSTRAINT \"${newPkName}\" TO \"${oldPkName}\"`,\n ),\n )\n }\n\n // rename unique constraints\n newTable.uniques.forEach((unique) => {\n const oldUniqueName =\n this.dataSource.namingStrategy.uniqueConstraintName(\n oldTable,\n unique.columnNames,\n )\n\n // Skip renaming if Unique has user defined constraint name\n if (unique.name !== oldUniqueName) return\n\n // build new constraint name\n const newUniqueName =\n this.dataSource.namingStrategy.uniqueConstraintName(\n newTable,\n unique.columnNames,\n )\n\n // build queries\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n newTable,\n )} RENAME CONSTRAINT \"${\n unique.name\n }\" TO \"${newUniqueName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n newTable,\n )} RENAME CONSTRAINT \"${newUniqueName}\" TO \"${\n unique.name\n }\"`,\n ),\n )\n\n // replace constraint name\n unique.name = newUniqueName\n })\n\n // rename index constraints\n newTable.indices.forEach((index) => {\n const oldIndexName = this.dataSource.namingStrategy.indexName(\n oldTable,\n index.columnNames,\n index.where,\n )\n\n // Skip renaming if Index has user defined constraint name\n if (index.name !== oldIndexName) return\n\n // build new constraint name\n const { schema } = this.driver.parseTableName(newTable)\n const newIndexName = this.dataSource.namingStrategy.indexName(\n newTable,\n index.columnNames,\n index.where,\n )\n\n // build queries\n const up = schema\n ? `ALTER INDEX \"${schema}\".\"${index.name}\" RENAME TO \"${newIndexName}\"`\n : `ALTER INDEX \"${index.name}\" RENAME TO \"${newIndexName}\"`\n const down = schema\n ? `ALTER INDEX \"${schema}\".\"${newIndexName}\" RENAME TO \"${index.name}\"`\n : `ALTER INDEX \"${newIndexName}\" RENAME TO \"${index.name}\"`\n upQueries.push(new Query(up))\n downQueries.push(new Query(down))\n\n // replace constraint name\n index.name = newIndexName\n })\n\n // rename foreign key constraints\n newTable.foreignKeys.forEach((foreignKey) => {\n const oldForeignKeyName =\n this.dataSource.namingStrategy.foreignKeyName(\n oldTable,\n foreignKey.columnNames,\n this.getTablePath(foreignKey),\n foreignKey.referencedColumnNames,\n )\n\n // Skip renaming if foreign key has user defined constraint name\n if (foreignKey.name !== oldForeignKeyName) return\n\n // build new constraint name\n const newForeignKeyName =\n this.dataSource.namingStrategy.foreignKeyName(\n newTable,\n foreignKey.columnNames,\n this.getTablePath(foreignKey),\n foreignKey.referencedColumnNames,\n )\n\n // build queries\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n newTable,\n )} RENAME CONSTRAINT \"${\n foreignKey.name\n }\" TO \"${newForeignKeyName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n newTable,\n )} RENAME CONSTRAINT \"${newForeignKeyName}\" TO \"${\n foreignKey.name\n }\"`,\n ),\n )\n\n // replace constraint name\n foreignKey.name = newForeignKeyName\n })\n\n // rename ENUM types\n const enumColumns = newTable.columns.filter(\n (column) => column.type === \"enum\" || column.type === \"simple-enum\",\n )\n for (const column of enumColumns) {\n // skip renaming for user-defined enum name\n if (column.enumName) continue\n\n const oldEnumType = await this.getUserDefinedTypeName(\n oldTable,\n column,\n )\n upQueries.push(\n new Query(\n `ALTER TYPE \"${oldEnumType.schema}\".\"${\n oldEnumType.name\n }\" RENAME TO ${this.buildEnumName(\n newTable,\n column,\n false,\n )}`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TYPE ${this.buildEnumName(\n newTable,\n column,\n )} RENAME TO \"${oldEnumType.name}\"`,\n ),\n )\n }\n\n await this.executeQueries(upQueries, downQueries)\n }\n\n /**\n * Creates a new column from the column in the table.\n * @param tableOrName\n * @param column\n */\n async addColumn(\n tableOrName: Table | string,\n column: TableColumn,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const clonedTable = table.clone()\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n\n if (column.generationStrategy === \"increment\") {\n throw new TypeORMError(\n `Adding sequential generated columns into existing table is not supported`,\n )\n }\n\n if (column.type === \"enum\" || column.type === \"simple-enum\") {\n const hasEnum = await this.hasEnumType(table, column)\n if (!hasEnum) {\n upQueries.push(this.createEnumTypeSql(table, column))\n downQueries.push(this.dropEnumTypeSql(table, column))\n }\n }\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD ${this.buildCreateColumnSql(table, column)}`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(table)} DROP COLUMN \"${\n column.name\n }\"`,\n ),\n )\n\n // create or update primary key constraint\n if (column.isPrimary) {\n const primaryColumns = clonedTable.primaryColumns\n // if table already have primary key, me must drop it and recreate again\n // todo: https://go.crdb.dev/issue-v/48026/v21.1\n if (primaryColumns.length > 0) {\n const pkName = primaryColumns[0].primaryKeyConstraintName\n ? primaryColumns[0].primaryKeyConstraintName\n : this.dataSource.namingStrategy.primaryKeyName(\n clonedTable,\n primaryColumns.map((column) => column.name),\n )\n\n const columnNames = primaryColumns\n .map((column) => `\"${column.name}\"`)\n .join(\", \")\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${pkName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`,\n ),\n )\n }\n\n primaryColumns.push(column)\n const pkName = primaryColumns[0].primaryKeyConstraintName\n ? primaryColumns[0].primaryKeyConstraintName\n : this.dataSource.namingStrategy.primaryKeyName(\n clonedTable,\n primaryColumns.map((column) => column.name),\n )\n\n const columnNames = primaryColumns\n .map((column) => `\"${column.name}\"`)\n .join(\", \")\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${pkName}\"`,\n ),\n )\n }\n\n if (column.generatedType && column.asExpression) {\n const currentSchema = await this.getCurrentSchema()\n let { schema } = this.driver.parseTableName(table)\n if (!schema) {\n schema = currentSchema\n }\n const insertQuery = this.insertTypeormMetadataSql({\n schema: schema,\n table: table.name,\n type: MetadataTableType.GENERATED_COLUMN,\n name: column.name,\n value: column.asExpression,\n })\n\n const deleteQuery = this.deleteTypeormMetadataSql({\n schema: schema,\n table: table.name,\n type: MetadataTableType.GENERATED_COLUMN,\n name: column.name,\n })\n\n upQueries.push(insertQuery)\n downQueries.push(deleteQuery)\n }\n\n // create column index\n const columnIndex = clonedTable.indices.find(\n (index) =>\n index.columnNames.length === 1 &&\n index.columnNames[0] === column.name,\n )\n if (columnIndex) {\n // CockroachDB stores unique indices as UNIQUE constraints\n if (columnIndex.isUnique) {\n const unique = new TableUnique({\n name: this.dataSource.namingStrategy.uniqueConstraintName(\n table,\n columnIndex.columnNames,\n ),\n columnNames: columnIndex.columnNames,\n })\n upQueries.push(this.createUniqueConstraintSql(table, unique))\n downQueries.push(this.dropIndexSql(table, unique))\n clonedTable.uniques.push(unique)\n } else {\n upQueries.push(this.createIndexSql(table, columnIndex))\n downQueries.push(this.dropIndexSql(table, columnIndex))\n }\n }\n\n // create unique constraint\n if (column.isUnique) {\n const uniqueConstraint = new TableUnique({\n name: this.dataSource.namingStrategy.uniqueConstraintName(\n table,\n [column.name],\n ),\n columnNames: [column.name],\n })\n clonedTable.uniques.push(uniqueConstraint)\n upQueries.push(\n this.createUniqueConstraintSql(table, uniqueConstraint),\n )\n downQueries.push(this.dropIndexSql(table, uniqueConstraint.name!)) // CockroachDB creates indices for unique constraints\n }\n\n // create column's comment\n if (column.comment) {\n upQueries.push(\n new Query(\n `COMMENT ON COLUMN ${this.escapePath(table)}.\"${\n column.name\n }\" IS ${this.escapeComment(column.comment)}`,\n ),\n )\n downQueries.push(\n new Query(\n `COMMENT ON COLUMN ${this.escapePath(table)}.\"${\n column.name\n }\" IS ${this.escapeComment(column.comment)}`,\n ),\n )\n }\n\n await this.executeQueries(upQueries, downQueries)\n\n clonedTable.addColumn(column)\n this.replaceCachedTable(table, clonedTable)\n }\n\n /**\n * Creates a new columns from the column in the table.\n * @param tableOrName\n * @param columns\n */\n async addColumns(\n tableOrName: Table | string,\n columns: TableColumn[],\n ): Promise<void> {\n for (const column of columns) {\n await this.addColumn(tableOrName, column)\n }\n }\n\n /**\n * Renames column in the given table.\n * @param tableOrName\n * @param oldTableColumnOrName\n * @param newTableColumnOrName\n */\n async renameColumn(\n tableOrName: Table | string,\n oldTableColumnOrName: TableColumn | string,\n newTableColumnOrName: TableColumn | string,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const oldColumn = InstanceChecker.isTableColumn(oldTableColumnOrName)\n ? oldTableColumnOrName\n : table.columns.find((c) => c.name === oldTableColumnOrName)\n if (!oldColumn)\n throw new TypeORMError(\n `Column \"${oldTableColumnOrName}\" was not found in the \"${table.name}\" table.`,\n )\n\n let newColumn\n if (InstanceChecker.isTableColumn(newTableColumnOrName)) {\n newColumn = newTableColumnOrName\n } else {\n newColumn = oldColumn.clone()\n newColumn.name = newTableColumnOrName\n }\n\n return this.changeColumn(table, oldColumn, newColumn)\n }\n\n /**\n * Changes a column in the table.\n * @param tableOrName\n * @param oldTableColumnOrName\n * @param newColumn\n */\n async changeColumn(\n tableOrName: Table | string,\n oldTableColumnOrName: TableColumn | string,\n newColumn: TableColumn,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n let clonedTable = table.clone()\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n let defaultValueChanged = false\n\n const oldColumn = InstanceChecker.isTableColumn(oldTableColumnOrName)\n ? oldTableColumnOrName\n : table.columns.find(\n (column) => column.name === oldTableColumnOrName,\n )\n if (!oldColumn)\n throw new TypeORMError(\n `Column \"${oldTableColumnOrName}\" was not found in the \"${table.name}\" table.`,\n )\n\n if (\n oldColumn.type !== newColumn.type ||\n oldColumn.length !== newColumn.length ||\n newColumn.isArray !== oldColumn.isArray ||\n oldColumn.generatedType !== newColumn.generatedType ||\n oldColumn.asExpression !== newColumn.asExpression\n ) {\n // To avoid data conversion, we just recreate column\n await this.dropColumn(table, oldColumn)\n await this.addColumn(table, newColumn)\n\n // update cloned table\n clonedTable = table.clone()\n } else {\n if (oldColumn.name !== newColumn.name) {\n // rename column\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(table)} RENAME COLUMN \"${\n oldColumn.name\n }\" TO \"${newColumn.name}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(table)} RENAME COLUMN \"${\n newColumn.name\n }\" TO \"${oldColumn.name}\"`,\n ),\n )\n\n // rename ENUM type\n if (\n oldColumn.type === \"enum\" ||\n oldColumn.type === \"simple-enum\"\n ) {\n const oldEnumType = await this.getUserDefinedTypeName(\n table,\n oldColumn,\n )\n upQueries.push(\n new Query(\n `ALTER TYPE \"${oldEnumType.schema}\".\"${\n oldEnumType.name\n }\" RENAME TO ${this.buildEnumName(\n table,\n newColumn,\n false,\n )}`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TYPE ${this.buildEnumName(\n table,\n newColumn,\n )} RENAME TO \"${oldEnumType.name}\"`,\n ),\n )\n }\n\n // rename column primary key constraint\n if (\n oldColumn.isPrimary === true &&\n !oldColumn.primaryKeyConstraintName\n ) {\n const primaryColumns = clonedTable.primaryColumns\n\n // build old primary constraint name\n const columnNames = primaryColumns.map(\n (column) => column.name,\n )\n const oldPkName =\n this.dataSource.namingStrategy.primaryKeyName(\n clonedTable,\n columnNames,\n )\n\n // replace old column name with new column name\n columnNames.splice(columnNames.indexOf(oldColumn.name), 1)\n columnNames.push(newColumn.name)\n\n // build new primary constraint name\n const newPkName =\n this.dataSource.namingStrategy.primaryKeyName(\n clonedTable,\n columnNames,\n )\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} RENAME CONSTRAINT \"${oldPkName}\" TO \"${newPkName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} RENAME CONSTRAINT \"${newPkName}\" TO \"${oldPkName}\"`,\n ),\n )\n }\n\n // rename unique constraints\n clonedTable.findColumnUniques(oldColumn).forEach((unique) => {\n const oldUniqueName =\n this.dataSource.namingStrategy.uniqueConstraintName(\n clonedTable,\n unique.columnNames,\n )\n\n // Skip renaming if Unique has user defined constraint name\n if (unique.name !== oldUniqueName) return\n\n // build new constraint name\n unique.columnNames.splice(\n unique.columnNames.indexOf(oldColumn.name),\n 1,\n )\n unique.columnNames.push(newColumn.name)\n const newUniqueName =\n this.dataSource.namingStrategy.uniqueConstraintName(\n clonedTable,\n unique.columnNames,\n )\n\n // build queries\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} RENAME CONSTRAINT \"${\n unique.name\n }\" TO \"${newUniqueName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} RENAME CONSTRAINT \"${newUniqueName}\" TO \"${\n unique.name\n }\"`,\n ),\n )\n\n // replace constraint name\n unique.name = newUniqueName\n })\n\n // rename index constraints\n clonedTable.findColumnIndices(oldColumn).forEach((index) => {\n const oldIndexName =\n this.dataSource.namingStrategy.indexName(\n clonedTable,\n index.columnNames,\n index.where,\n )\n\n // Skip renaming if Index has user defined constraint name\n if (index.name !== oldIndexName) return\n\n // build new constraint name\n index.columnNames.splice(\n index.columnNames.indexOf(oldColumn.name),\n 1,\n )\n index.columnNames.push(newColumn.name)\n const { schema } = this.driver.parseTableName(table)\n const newIndexName =\n this.dataSource.namingStrategy.indexName(\n clonedTable,\n index.columnNames,\n index.where,\n )\n\n // build queries\n const up = schema\n ? `ALTER INDEX \"${schema}\".\"${index.name}\" RENAME TO \"${newIndexName}\"`\n : `ALTER INDEX \"${index.name}\" RENAME TO \"${newIndexName}\"`\n const down = schema\n ? `ALTER INDEX \"${schema}\".\"${newIndexName}\" RENAME TO \"${index.name}\"`\n : `ALTER INDEX \"${newIndexName}\" RENAME TO \"${index.name}\"`\n upQueries.push(new Query(up))\n downQueries.push(new Query(down))\n\n // replace constraint name\n index.name = newIndexName\n })\n\n // rename foreign key constraints\n clonedTable\n .findColumnForeignKeys(oldColumn)\n .forEach((foreignKey) => {\n const foreignKeyName =\n this.dataSource.namingStrategy.foreignKeyName(\n clonedTable,\n foreignKey.columnNames,\n this.getTablePath(foreignKey),\n foreignKey.referencedColumnNames,\n )\n\n // Skip renaming if foreign key has user defined constraint name\n if (foreignKey.name !== foreignKeyName) return\n\n // build new constraint name\n foreignKey.columnNames.splice(\n foreignKey.columnNames.indexOf(oldColumn.name),\n 1,\n )\n foreignKey.columnNames.push(newColumn.name)\n const newForeignKeyName =\n this.dataSource.namingStrategy.foreignKeyName(\n clonedTable,\n foreignKey.columnNames,\n this.getTablePath(foreignKey),\n foreignKey.referencedColumnNames,\n )\n\n // build queries\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} RENAME CONSTRAINT \"${\n foreignKey.name\n }\" TO \"${newForeignKeyName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} RENAME CONSTRAINT \"${newForeignKeyName}\" TO \"${\n foreignKey.name\n }\"`,\n ),\n )\n\n // replace constraint name\n foreignKey.name = newForeignKeyName\n })\n\n // rename old column in the Table object\n const oldTableColumn = clonedTable.columns.find(\n (column) => column.name === oldColumn.name,\n )\n clonedTable.columns[\n clonedTable.columns.indexOf(oldTableColumn!)\n ].name = newColumn.name\n oldColumn.name = newColumn.name\n }\n\n if (\n newColumn.precision !== oldColumn.precision ||\n newColumn.scale !== oldColumn.scale\n ) {\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(table)} ALTER COLUMN \"${\n newColumn.name\n }\" TYPE ${this.driver.createFullType(newColumn)}`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(table)} ALTER COLUMN \"${\n newColumn.name\n }\" TYPE ${this.driver.createFullType(oldColumn)}`,\n ),\n )\n }\n\n if (oldColumn.isNullable !== newColumn.isNullable) {\n if (newColumn.isNullable) {\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${oldColumn.name}\" DROP NOT NULL`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${oldColumn.name}\" SET NOT NULL`,\n ),\n )\n } else {\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${oldColumn.name}\" SET NOT NULL`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${oldColumn.name}\" DROP NOT NULL`,\n ),\n )\n }\n }\n\n if (oldColumn.comment !== newColumn.comment) {\n upQueries.push(\n new Query(\n `COMMENT ON COLUMN ${this.escapePath(table)}.\"${\n oldColumn.name\n }\" IS ${this.escapeComment(newColumn.comment)}`,\n ),\n )\n downQueries.push(\n new Query(\n `COMMENT ON COLUMN ${this.escapePath(table)}.\"${\n newColumn.name\n }\" IS ${this.escapeComment(oldColumn.comment)}`,\n ),\n )\n }\n\n if (newColumn.isPrimary !== oldColumn.isPrimary) {\n const primaryColumns = clonedTable.primaryColumns\n\n // if primary column state changed, we must always drop existed constraint.\n if (primaryColumns.length > 0) {\n const pkName = primaryColumns[0].primaryKeyConstraintName\n ? primaryColumns[0].primaryKeyConstraintName\n : this.dataSource.namingStrategy.primaryKeyName(\n clonedTable,\n primaryColumns.map((column) => column.name),\n )\n\n const columnNames = primaryColumns\n .map((column) => `\"${column.name}\"`)\n .join(\", \")\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${pkName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`,\n ),\n )\n }\n\n if (newColumn.isPrimary === true) {\n primaryColumns.push(newColumn)\n // update column in table\n const column = clonedTable.columns.find(\n (column) => column.name === newColumn.name,\n )\n column!.isPrimary = true\n const pkName = primaryColumns[0].primaryKeyConstraintName\n ? primaryColumns[0].primaryKeyConstraintName\n : this.dataSource.namingStrategy.primaryKeyName(\n clonedTable,\n primaryColumns.map((column) => column.name),\n )\n\n const columnNames = primaryColumns\n .map((column) => `\"${column.name}\"`)\n .join(\", \")\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${pkName}\"`,\n ),\n )\n } else {\n const primaryColumn = primaryColumns.find(\n (c) => c.name === newColumn.name,\n )\n primaryColumns.splice(\n primaryColumns.indexOf(primaryColumn!),\n 1,\n )\n\n // update column in table\n const column = clonedTable.columns.find(\n (column) => column.name === newColumn.name,\n )\n column!.isPrimary = false\n\n // if we have another primary keys, we must recreate constraint.\n if (primaryColumns.length > 0) {\n const pkName = primaryColumns[0]\n .primaryKeyConstraintName\n ? primaryColumns[0].primaryKeyConstraintName\n : this.dataSource.namingStrategy.primaryKeyName(\n clonedTable,\n primaryColumns.map((column) => column.name),\n )\n\n const columnNames = primaryColumns\n .map((column) => `\"${column.name}\"`)\n .join(\", \")\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${pkName}\"`,\n ),\n )\n }\n }\n }\n\n if (newColumn.isUnique !== oldColumn.isUnique) {\n if (newColumn.isUnique) {\n const uniqueConstraint = new TableUnique({\n name: this.dataSource.namingStrategy.uniqueConstraintName(\n table,\n [newColumn.name],\n ),\n columnNames: [newColumn.name],\n })\n clonedTable.uniques.push(uniqueConstraint)\n upQueries.push(\n this.createUniqueConstraintSql(table, uniqueConstraint),\n )\n // CockroachDB creates index for UNIQUE constraint.\n // We must use DROP INDEX ... CASCADE instead of DROP CONSTRAINT.\n downQueries.push(this.dropIndexSql(table, uniqueConstraint))\n } else {\n const uniqueConstraint = clonedTable.uniques.find(\n (unique) => {\n return (\n unique.columnNames.length === 1 &&\n !!unique.columnNames.find(\n (columnName) =>\n columnName === newColumn.name,\n )\n )\n },\n )\n clonedTable.uniques.splice(\n clonedTable.uniques.indexOf(uniqueConstraint!),\n 1,\n )\n // CockroachDB creates index for UNIQUE constraint.\n // We must use DROP INDEX ... CASCADE instead of DROP CONSTRAINT.\n upQueries.push(this.dropIndexSql(table, uniqueConstraint!))\n downQueries.push(\n this.createUniqueConstraintSql(\n table,\n uniqueConstraint!,\n ),\n )\n }\n }\n\n if (\n (newColumn.type === \"enum\" ||\n newColumn.type === \"simple-enum\") &&\n (oldColumn.type === \"enum\" ||\n oldColumn.type === \"simple-enum\") &&\n (!OrmUtils.isArraysEqual(newColumn.enum!, oldColumn.enum!) ||\n newColumn.enumName !== oldColumn.enumName)\n ) {\n const arraySuffix = newColumn.isArray ? \"[]\" : \"\"\n\n // \"public\".\"new_enum\"\n const newEnumName = this.buildEnumName(table, newColumn)\n\n // \"public\".\"old_enum\"\n const oldEnumName = this.buildEnumName(table, oldColumn)\n\n // \"old_enum\"\n const oldEnumNameWithoutSchema = this.buildEnumName(\n table,\n oldColumn,\n false,\n )\n\n //\"public\".\"old_enum_old\"\n const oldEnumNameWithSchema_old = this.buildEnumName(\n table,\n oldColumn,\n true,\n false,\n true,\n )\n\n //\"old_enum_old\"\n const oldEnumNameWithoutSchema_old = this.buildEnumName(\n table,\n oldColumn,\n false,\n false,\n true,\n )\n\n // rename old ENUM\n upQueries.push(\n new Query(\n `ALTER TYPE ${oldEnumName} RENAME TO ${oldEnumNameWithoutSchema_old}`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TYPE ${oldEnumNameWithSchema_old} RENAME TO ${oldEnumNameWithoutSchema}`,\n ),\n )\n\n // create new ENUM\n upQueries.push(\n this.createEnumTypeSql(table, newColumn, newEnumName),\n )\n downQueries.push(\n this.dropEnumTypeSql(table, newColumn, newEnumName),\n )\n\n // if column have default value, we must drop it to avoid issues with type casting\n if (\n oldColumn.default !== null &&\n oldColumn.default !== undefined\n ) {\n // mark default as changed to prevent double update\n defaultValueChanged = true\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${oldColumn.name}\" DROP DEFAULT`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${oldColumn.name}\" SET DEFAULT ${\n oldColumn.default\n }`,\n ),\n )\n }\n\n // build column types\n const upType = `${newEnumName}${arraySuffix} USING \"${newColumn.name}\"::\"text\"::${newEnumName}${arraySuffix}`\n const downType = `${oldEnumNameWithSchema_old}${arraySuffix} USING \"${newColumn.name}\"::\"text\"::${oldEnumNameWithSchema_old}${arraySuffix}`\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(table)} ALTER COLUMN \"${\n newColumn.name\n }\" TYPE ${upType}`,\n ),\n )\n\n // we add a delay here since for some reason cockroachdb fails with\n // \"cannot drop type because other objects still depend on it\" error\n // if we are trying to drop type right after we altered it.\n upQueries.push(new Query(`SELECT pg_sleep(0.1)`))\n downQueries.push(new Query(`SELECT pg_sleep(0.1)`))\n\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(table)} ALTER COLUMN \"${\n newColumn.name\n }\" TYPE ${downType}`,\n ),\n )\n\n // restore column default or create new one\n if (\n newColumn.default !== null &&\n newColumn.default !== undefined\n ) {\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${newColumn.name}\" SET DEFAULT ${\n newColumn.default\n }`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${newColumn.name}\" DROP DEFAULT`,\n ),\n )\n }\n\n // remove old ENUM\n upQueries.push(\n this.dropEnumTypeSql(\n table,\n oldColumn,\n oldEnumNameWithSchema_old,\n ),\n )\n downQueries.push(\n this.createEnumTypeSql(\n table,\n oldColumn,\n oldEnumNameWithSchema_old,\n ),\n )\n }\n\n if (\n oldColumn.isGenerated !== newColumn.isGenerated &&\n newColumn.generationStrategy !== \"uuid\"\n ) {\n if (newColumn.isGenerated) {\n if (newColumn.generationStrategy === \"increment\") {\n throw new TypeORMError(\n `Adding sequential generated columns into existing table is not supported`,\n )\n } else if (newColumn.generationStrategy === \"rowid\") {\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${\n newColumn.name\n }\" SET DEFAULT unique_rowid()`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${\n newColumn.name\n }\" DROP DEFAULT`,\n ),\n )\n }\n } else {\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${newColumn.name}\" DROP DEFAULT`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${\n newColumn.name\n }\" SET DEFAULT unique_rowid()`,\n ),\n )\n }\n }\n\n if (\n newColumn.default !== oldColumn.default &&\n !defaultValueChanged\n ) {\n if (\n newColumn.default !== null &&\n newColumn.default !== undefined\n ) {\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${newColumn.name}\" SET DEFAULT ${\n newColumn.default\n }`,\n ),\n )\n\n if (\n oldColumn.default !== null &&\n oldColumn.default !== undefined\n ) {\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${\n newColumn.name\n }\" SET DEFAULT ${oldColumn.default}`,\n ),\n )\n } else {\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${\n newColumn.name\n }\" DROP DEFAULT`,\n ),\n )\n }\n } else if (\n oldColumn.default !== null &&\n oldColumn.default !== undefined\n ) {\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${newColumn.name}\" DROP DEFAULT`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${newColumn.name}\" SET DEFAULT ${\n oldColumn.default\n }`,\n ),\n )\n }\n }\n }\n\n if (\n (newColumn.spatialFeatureType || \"\").toLowerCase() !==\n (oldColumn.spatialFeatureType || \"\").toLowerCase() ||\n newColumn.srid !== oldColumn.srid\n ) {\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(table)} ALTER COLUMN \"${\n newColumn.name\n }\" TYPE ${this.driver.createFullType(newColumn)}`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(table)} ALTER COLUMN \"${\n newColumn.name\n }\" TYPE ${this.driver.createFullType(oldColumn)}`,\n ),\n )\n }\n\n await this.executeQueries(upQueries, downQueries)\n this.replaceCachedTable(table, clonedTable)\n }\n\n /**\n * Changes a column in the table.\n * @param tableOrName\n * @param changedColumns\n */\n async changeColumns(\n tableOrName: Table | string,\n changedColumns: { newColumn: TableColumn; oldColumn: TableColumn }[],\n ): Promise<void> {\n for (const { oldColumn, newColumn } of changedColumns) {\n await this.changeColumn(tableOrName, oldColumn, newColumn)\n }\n }\n\n /**\n * Drops column in the table.\n * @param tableOrName\n * @param columnOrName\n * @param ifExists\n */\n async dropColumn(\n tableOrName: Table | string,\n columnOrName: TableColumn | string,\n ifExists?: boolean,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const column = InstanceChecker.isTableColumn(columnOrName)\n ? columnOrName\n : table.findColumnByName(columnOrName)\n if (!column) {\n if (ifExists) return\n throw new TypeORMError(\n `Column \"${columnOrName}\" was not found in table \"${table.name}\"`,\n )\n }\n\n const clonedTable = table.clone()\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n\n // drop primary key constraint\n // todo: https://go.crdb.dev/issue-v/48026/v21.1\n if (column.isPrimary) {\n const pkName = column.primaryKeyConstraintName\n ? column.primaryKeyConstraintName\n : this.dataSource.namingStrategy.primaryKeyName(\n clonedTable,\n clonedTable.primaryColumns.map((column) => column.name),\n )\n\n const columnNames = clonedTable.primaryColumns\n .map((primaryColumn) => `\"${primaryColumn.name}\"`)\n .join(\", \")\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n clonedTable,\n )} DROP CONSTRAINT \"${pkName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n clonedTable,\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`,\n ),\n )\n\n // update column in table\n const tableColumn = clonedTable.findColumnByName(column.name)\n tableColumn!.isPrimary = false\n\n // if primary key have multiple columns, we must recreate it without dropped column\n if (clonedTable.primaryColumns.length > 0) {\n const pkName = clonedTable.primaryColumns[0]\n .primaryKeyConstraintName\n ? clonedTable.primaryColumns[0].primaryKeyConstraintName\n : this.dataSource.namingStrategy.primaryKeyName(\n clonedTable,\n clonedTable.primaryColumns.map(\n (column) => column.name,\n ),\n )\n\n const columnNames = clonedTable.primaryColumns\n .map((primaryColumn) => `\"${primaryColumn.name}\"`)\n .join(\", \")\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n clonedTable,\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n clonedTable,\n )} DROP CONSTRAINT \"${pkName}\"`,\n ),\n )\n }\n }\n\n // drop column index\n const columnIndex = clonedTable.indices.find(\n (index) =>\n index.columnNames.length === 1 &&\n index.columnNames[0] === column.name,\n )\n if (columnIndex) {\n clonedTable.indices.splice(\n clonedTable.indices.indexOf(columnIndex),\n 1,\n )\n upQueries.push(this.dropIndexSql(table, columnIndex))\n downQueries.push(this.createIndexSql(table, columnIndex))\n }\n\n // drop column check\n const columnCheck = clonedTable.checks.find(\n (check) =>\n !!check.columnNames &&\n check.columnNames.length === 1 &&\n check.columnNames[0] === column.name,\n )\n if (columnCheck) {\n clonedTable.checks.splice(\n clonedTable.checks.indexOf(columnCheck),\n 1,\n )\n upQueries.push(this.dropCheckConstraintSql(table, columnCheck))\n downQueries.push(this.createCheckConstraintSql(table, columnCheck))\n }\n\n // drop column unique\n const columnUnique = clonedTable.uniques.find(\n (unique) =>\n unique.columnNames.length === 1 &&\n unique.columnNames[0] === column.name,\n )\n if (columnUnique) {\n clonedTable.uniques.splice(\n clonedTable.uniques.indexOf(columnUnique),\n 1,\n )\n upQueries.push(this.dropIndexSql(table, columnUnique.name!)) // CockroachDB creates indices for unique constraints\n downQueries.push(\n this.createUniqueConstraintSql(table, columnUnique),\n )\n }\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(table)} DROP COLUMN ${\n ifExists ? \"IF EXISTS \" : \"\"\n }\"${column.name}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD ${this.buildCreateColumnSql(table, column)}`,\n ),\n )\n\n if (column.generationStrategy === \"increment\") {\n upQueries.push(\n new Query(\n `DROP SEQUENCE ${this.escapePath(\n this.buildSequencePath(table, column),\n )}`,\n ),\n )\n downQueries.push(\n new Query(\n `CREATE SEQUENCE ${this.escapePath(\n this.buildSequencePath(table, column),\n )}`,\n ),\n )\n }\n\n if (column.generatedType && column.asExpression) {\n const currentSchema = await this.getCurrentSchema()\n let { schema } = this.driver.parseTableName(table)\n if (!schema) {\n schema = currentSchema\n }\n const deleteQuery = this.deleteTypeormMetadataSql({\n schema: schema,\n table: table.name,\n type: MetadataTableType.GENERATED_COLUMN,\n name: column.name,\n })\n const insertQuery = this.insertTypeormMetadataSql({\n schema: schema,\n table: table.name,\n type: MetadataTableType.GENERATED_COLUMN,\n name: column.name,\n value: column.asExpression,\n })\n\n upQueries.push(deleteQuery)\n downQueries.push(insertQuery)\n }\n\n // drop enum type\n if (column.type === \"enum\" || column.type === \"simple-enum\") {\n const hasEnum = await this.hasEnumType(table, column)\n if (hasEnum) {\n const enumType = await this.getUserDefinedTypeName(\n table,\n column,\n )\n const escapedEnumName = `\"${enumType.schema}\".\"${enumType.name}\"`\n upQueries.push(\n this.dropEnumTypeSql(table, column, escapedEnumName),\n )\n downQueries.push(\n this.createEnumTypeSql(table, column, escapedEnumName),\n )\n }\n }\n\n await this.executeQueries(upQueries, downQueries)\n\n clonedTable.removeColumn(column)\n this.replaceCachedTable(table, clonedTable)\n }\n\n /**\n * Drops the columns in the table.\n * @param tableOrName\n * @param columns\n * @param ifExists\n */\n async dropColumns(\n tableOrName: Table | string,\n columns: TableColumn[] | string[],\n ifExists?: boolean,\n ): Promise<void> {\n for (const column of [...columns]) {\n await this.dropColumn(tableOrName, column, ifExists)\n }\n }\n\n /**\n * Creates a new primary key.\n * @param tableOrName\n * @param columnNames\n * @param constraintName\n */\n async createPrimaryKey(\n tableOrName: Table | string,\n columnNames: string[],\n constraintName?: string,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const clonedTable = table.clone()\n\n const up = this.createPrimaryKeySql(table, columnNames, constraintName)\n\n // mark columns as primary, because dropPrimaryKeySql build constraint name from table primary column names.\n clonedTable.columns.forEach((column) => {\n if (columnNames.find((columnName) => columnName === column.name))\n column.isPrimary = true\n })\n const down = this.dropPrimaryKeySql(clonedTable)\n\n await this.executeQueries(up, down)\n this.replaceCachedTable(table, clonedTable)\n }\n\n /**\n * Updates composite primary keys.\n * @param tableOrName\n * @param columns\n */\n async updatePrimaryKeys(\n tableOrName: Table | string,\n columns: TableColumn[],\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const clonedTable = table.clone()\n const columnNames = columns.map((column) => column.name)\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n\n // if table already have primary columns, we must drop them.\n const primaryColumns = clonedTable.primaryColumns\n if (primaryColumns.length > 0) {\n const pkName = primaryColumns[0].primaryKeyConstraintName\n ? primaryColumns[0].primaryKeyConstraintName\n : this.dataSource.namingStrategy.primaryKeyName(\n clonedTable,\n primaryColumns.map((column) => column.name),\n )\n\n const columnNamesString = primaryColumns\n .map((column) => `\"${column.name}\"`)\n .join(\", \")\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${pkName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNamesString})`,\n ),\n )\n }\n\n // update columns in table.\n clonedTable.columns\n .filter((column) => columnNames.indexOf(column.name) !== -1)\n .forEach((column) => {\n column.isPrimary = true\n })\n\n const pkName = primaryColumns[0].primaryKeyConstraintName\n ? primaryColumns[0].primaryKeyConstraintName\n : this.dataSource.namingStrategy.primaryKeyName(\n clonedTable,\n columnNames,\n )\n\n const columnNamesString = columnNames\n .map((columnName) => `\"${columnName}\"`)\n .join(\", \")\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNamesString})`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${pkName}\"`,\n ),\n )\n\n await this.executeQueries(upQueries, downQueries)\n this.replaceCachedTable(table, clonedTable)\n }\n\n /**\n * Drops a primary key.\n * @param tableOrName\n * @param constraintName\n * @param ifExists\n */\n async dropPrimaryKey(\n tableOrName: Table | string,\n constraintName?: string,\n ifExists?: boolean,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const up = this.dropPrimaryKeySql(table, ifExists)\n const down = this.createPrimaryKeySql(\n table,\n table.primaryColumns.map((column) => column.name),\n constraintName,\n )\n await this.executeQueries(up, down)\n table.primaryColumns.forEach((column) => {\n column.isPrimary = false\n })\n }\n\n /**\n * Creates new unique constraint.\n * @param tableOrName\n * @param uniqueConstraint\n */\n async createUniqueConstraint(\n tableOrName: Table | string,\n uniqueConstraint: TableUnique,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n\n // new unique constraint may be passed without name. In this case we generate unique name manually.\n if (!uniqueConstraint.name)\n uniqueConstraint.name =\n this.dataSource.namingStrategy.uniqueConstraintName(\n table,\n uniqueConstraint.columnNames,\n )\n\n const up = this.createUniqueConstraintSql(table, uniqueConstraint)\n // CockroachDB creates index for UNIQUE constraint.\n // We must use DROP INDEX ... CASCADE instead of DROP CONSTRAINT.\n const down = this.dropIndexSql(table, uniqueConstraint)\n await this.executeQueries(up, down)\n table.addUniqueConstraint(uniqueConstraint)\n }\n\n /**\n * Creates new unique constraints.\n * @param tableOrName\n * @param uniqueConstraints\n */\n async createUniqueConstraints(\n tableOrName: Table | string,\n uniqueConstraints: TableUnique[],\n ): Promise<void> {\n for (const uniqueConstraint of uniqueConstraints) {\n await this.createUniqueConstraint(tableOrName, uniqueConstraint)\n }\n }\n\n /**\n * Drops unique constraint.\n * @param tableOrName\n * @param uniqueOrName\n * @param ifExists\n */\n async dropUniqueConstraint(\n tableOrName: Table | string,\n uniqueOrName: TableUnique | string,\n ifExists?: boolean,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const uniqueConstraint = InstanceChecker.isTableUnique(uniqueOrName)\n ? uniqueOrName\n : table.uniques.find((u) => u.name === uniqueOrName)\n if (!uniqueConstraint) {\n if (ifExists) return\n throw new TypeORMError(\n `Supplied unique constraint was not found in table ${table.name}`,\n )\n }\n\n // CockroachDB creates index for UNIQUE constraint.\n // We must use DROP INDEX ... CASCADE instead of DROP CONSTRAINT.\n const up = this.dropIndexSql(table, uniqueConstraint, ifExists)\n const down = this.createUniqueConstraintSql(table, uniqueConstraint)\n await this.executeQueries(up, down)\n table.removeUniqueConstraint(uniqueConstraint)\n }\n\n /**\n * Drops unique constraints.\n * @param tableOrName\n * @param uniqueConstraints\n * @param ifExists\n */\n async dropUniqueConstraints(\n tableOrName: Table | string,\n uniqueConstraints: TableUnique[],\n ifExists?: boolean,\n ): Promise<void> {\n for (const uniqueConstraint of [...uniqueConstraints]) {\n await this.dropUniqueConstraint(\n tableOrName,\n uniqueConstraint,\n ifExists,\n )\n }\n }\n\n /**\n * Creates new check constraint.\n * @param tableOrName\n * @param checkConstraint\n */\n async createCheckConstraint(\n tableOrName: Table | string,\n checkConstraint: TableCheck,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n\n // new unique constraint may be passed without name. In this case we generate unique name manually.\n if (!checkConstraint.name)\n checkConstraint.name =\n this.dataSource.namingStrategy.checkConstraintName(\n table,\n checkConstraint.expression!,\n )\n\n const up = this.createCheckConstraintSql(table, checkConstraint)\n const down = this.dropCheckConstraintSql(table, checkConstraint)\n await this.executeQueries(up, down)\n table.addCheckConstraint(checkConstraint)\n }\n\n /**\n * Creates new check constraints.\n * @param tableOrName\n * @param checkConstraints\n */\n async createCheckConstraints(\n tableOrName: Table | string,\n checkConstraints: TableCheck[],\n ): Promise<void> {\n const promises = checkConstraints.map((checkConstraint) =>\n this.createCheckConstraint(tableOrName, checkConstraint),\n )\n await Promise.all(promises)\n }\n\n /**\n * Drops check constraint.\n * @param tableOrName\n * @param checkOrName\n * @param ifExists\n */\n async dropCheckConstraint(\n tableOrName: Table | string,\n checkOrName: TableCheck | string,\n ifExists?: boolean,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const checkConstraint = InstanceChecker.isTableCheck(checkOrName)\n ? checkOrName\n : table.checks.find((c) => c.name === checkOrName)\n if (!checkConstraint) {\n if (ifExists) return\n throw new TypeORMError(\n `Supplied check constraint was not found in table ${table.name}`,\n )\n }\n\n const up = this.dropCheckConstraintSql(table, checkConstraint, ifExists)\n const down = this.createCheckConstraintSql(table, checkConstraint)\n await this.executeQueries(up, down)\n table.removeCheckConstraint(checkConstraint)\n }\n\n /**\n * Drops check constraints.\n * @param tableOrName\n * @param checkConstraints\n * @param ifExists\n */\n async dropCheckConstraints(\n tableOrName: Table | string,\n checkConstraints: TableCheck[],\n ifExists?: boolean,\n ): Promise<void> {\n const promises = checkConstraints.map((checkConstraint) =>\n this.dropCheckConstraint(tableOrName, checkConstraint, ifExists),\n )\n await Promise.all(promises)\n }\n\n /**\n * Creates new exclusion constraint.\n * @param tableOrName\n * @param exclusionConstraint\n */\n async createExclusionConstraint(\n tableOrName: Table | string,\n exclusionConstraint: TableExclusion,\n ): Promise<void> {\n throw new TypeORMError(\n `CockroachDB does not support exclusion constraints.`,\n )\n }\n\n /**\n * Creates new exclusion constraints.\n * @param tableOrName\n * @param exclusionConstraints\n */\n async createExclusionConstraints(\n tableOrName: Table | string,\n exclusionConstraints: TableExclusion[],\n ): Promise<void> {\n throw new TypeORMError(\n `CockroachDB does not support exclusion constraints.`,\n )\n }\n\n /**\n * Drops exclusion constraint.\n * @param tableOrName\n * @param exclusionOrName\n * @param ifExists\n */\n async dropExclusionConstraint(\n tableOrName: Table | string,\n exclusionOrName: TableExclusion | string,\n ifExists?: boolean,\n ): Promise<void> {\n throw new TypeORMError(\n `CockroachDB does not support exclusion constraints.`,\n )\n }\n\n /**\n * Drops exclusion constraints.\n * @param tableOrName\n * @param exclusionConstraints\n * @param ifExists\n */\n async dropExclusionConstraints(\n tableOrName: Table | string,\n exclusionConstraints: TableExclusion[],\n ifExists?: boolean,\n ): Promise<void> {\n throw new TypeORMError(\n `CockroachDB does not support exclusion constraints.`,\n )\n }\n\n /**\n * Creates a new foreign key.\n * @param tableOrName\n * @param foreignKey\n */\n async createForeignKey(\n tableOrName: Table | string,\n foreignKey: TableForeignKey,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n\n // new FK may be passed without name. In this case we generate FK name manually.\n if (!foreignKey.name)\n foreignKey.name = this.dataSource.namingStrategy.foreignKeyName(\n table,\n foreignKey.columnNames,\n this.getTablePath(foreignKey),\n foreignKey.referencedColumnNames,\n )\n\n const up = this.createForeignKeySql(table, foreignKey)\n const down = this.dropForeignKeySql(table, foreignKey)\n await this.executeQueries(up, down)\n table.addForeignKey(foreignKey)\n }\n\n /**\n * Creates a new foreign keys.\n * @param tableOrName\n * @param foreignKeys\n */\n async createForeignKeys(\n tableOrName: Table | string,\n foreignKeys: TableForeignKey[],\n ): Promise<void> {\n for (const foreignKey of foreignKeys) {\n await this.createForeignKey(tableOrName, foreignKey)\n }\n }\n\n /**\n * Drops a foreign key from the table.\n * @param tableOrName\n * @param foreignKeyOrName\n * @param ifExists\n */\n async dropForeignKey(\n tableOrName: Table | string,\n foreignKeyOrName: TableForeignKey | string,\n ifExists?: boolean,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const foreignKey = InstanceChecker.isTableForeignKey(foreignKeyOrName)\n ? foreignKeyOrName\n : table.foreignKeys.find((fk) => fk.name === foreignKeyOrName)\n if (!foreignKey) {\n if (ifExists) return\n throw new TypeORMError(\n `Supplied foreign key was not found in table ${table.name}`,\n )\n }\n\n if (!foreignKey.name) {\n foreignKey.name = this.dataSource.namingStrategy.foreignKeyName(\n table,\n foreignKey.columnNames,\n this.getTablePath(foreignKey),\n foreignKey.referencedColumnNames,\n )\n }\n\n const up = this.dropForeignKeySql(table, foreignKey, ifExists)\n const down = this.createForeignKeySql(table, foreignKey)\n await this.executeQueries(up, down)\n table.removeForeignKey(foreignKey)\n }\n\n /**\n * Drops a foreign keys from the table.\n * @param tableOrName\n * @param foreignKeys\n * @param ifExists\n */\n async dropForeignKeys(\n tableOrName: Table | string,\n foreignKeys: TableForeignKey[],\n ifExists?: boolean,\n ): Promise<void> {\n for (const foreignKey of [...foreignKeys]) {\n await this.dropForeignKey(tableOrName, foreignKey, ifExists)\n }\n }\n\n /**\n * Creates a new index.\n * @param tableOrName\n * @param index\n */\n async createIndex(\n tableOrName: Table | string,\n index: TableIndex,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n\n // new index may be passed without name. In this case we generate index name manually.\n if (!index.name) index.name = this.generateIndexName(table, index)\n\n // CockroachDB stores unique indices and UNIQUE constraints\n if (index.isUnique) {\n const unique = new TableUnique({\n name: index.name,\n columnNames: index.columnNames,\n })\n const up = this.createUniqueConstraintSql(table, unique)\n // CockroachDB also creates index for UNIQUE constraints.\n // We can't drop UNIQUE constraint with DROP CONSTRAINT. We must use DROP INDEX ... CASCADE instead.\n const down = this.dropIndexSql(table, unique)\n await this.executeQueries(up, down)\n table.addUniqueConstraint(unique)\n } else {\n const up = this.createIndexSql(table, index)\n const down = this.dropIndexSql(table, index)\n await this.executeQueries(up, down)\n table.addIndex(index)\n }\n }\n\n /**\n * Creates a new indices\n * @param tableOrName\n * @param indices\n */\n async createIndices(\n tableOrName: Table | string,\n indices: TableIndex[],\n ): Promise<void> {\n for (const index of indices) {\n await this.createIndex(tableOrName, index)\n }\n }\n\n /**\n * Drops an index from the table.\n * @param tableOrName\n * @param indexOrName\n * @param ifExists\n */\n async dropIndex(\n tableOrName: Table | string,\n indexOrName: TableIndex | string,\n ifExists?: boolean,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const index = InstanceChecker.isTableIndex(indexOrName)\n ? indexOrName\n : table.indices.find((i) => i.name === indexOrName)\n if (!index) {\n if (ifExists) return\n throw new TypeORMError(\n `Supplied index ${indexOrName} was not found in table ${table.name}`,\n )\n }\n\n // old index may be passed without name. In this case we generate index name manually.\n if (!index.name) index.name = this.generateIndexName(table, index)\n\n const up = this.dropIndexSql(table, index, ifExists)\n const down = this.createIndexSql(table, index)\n await this.executeQueries(up, down)\n table.removeIndex(index)\n }\n\n /**\n * Drops an indices from the table.\n * @param tableOrName\n * @param indices\n * @param ifExists\n */\n async dropIndices(\n tableOrName: Table | string,\n indices: TableIndex[],\n ifExists?: boolean,\n ): Promise<void> {\n for (const index of [...indices]) {\n await this.dropIndex(tableOrName, index, ifExists)\n }\n }\n\n /**\n * Clears all table contents.\n * Note: this operation uses SQL's TRUNCATE query which cannot be reverted in transactions.\n * @param tableName\n * @param options\n * @param options.cascade\n */\n async clearTable(\n tableName: string,\n options?: { cascade?: boolean },\n ): Promise<void> {\n const cascade = options?.cascade ? \" CASCADE\" : \"\"\n await this.query(\n `TRUNCATE TABLE ${this.escapePath(tableName)}${cascade}`,\n )\n }\n\n /**\n * Removes all tables from the currently connected database.\n */\n async clearDatabase(): Promise<void> {\n const schemas: string[] = []\n this.dataSource.entityMetadatas\n .filter((metadata) => metadata.schema)\n .forEach((metadata) => {\n const isSchemaExist = !!schemas.find(\n (schema) => schema === metadata.schema,\n )\n if (!isSchemaExist) schemas.push(metadata.schema!)\n })\n if (this.driver.options.schema) {\n schemas.push(this.driver.options.schema)\n } else {\n const [{ currentSchema }] = await this.query(\n `SELECT current_schema() AS \"currentSchema\"`,\n )\n schemas.push(currentSchema)\n }\n\n const isAnotherTransactionActive = this.isTransactionActive\n if (!isAnotherTransactionActive) await this.startTransaction()\n\n try {\n const version = await this.getVersion()\n\n // drop views\n const views: ObjectLiteral[] = await this.query(\n `SELECT quote_ident(schemaname) || '.' || quote_ident(viewname) as \"name\" ` +\n `FROM \"pg_views\" WHERE \"schemaname\"::STRING = ANY($1::STRING[])`,\n [schemas],\n )\n\n if (views.length > 0) {\n await this.query(\n `DROP VIEW IF EXISTS ${views.map(({ name }) => name).join(\", \")} CASCADE`,\n )\n }\n\n // drop tables\n const tables: ObjectLiteral[] = await this.query(\n `SELECT quote_ident(table_schema) || '.' || quote_ident(table_name) as \"name\" ` +\n `FROM \"information_schema\".\"tables\" WHERE \"table_schema\"::STRING = ANY($1::STRING[]) AND \"table_type\" = 'BASE TABLE'`,\n [schemas],\n )\n\n if (tables.length > 0) {\n await this.query(\n `DROP TABLE IF EXISTS ${tables.map(({ name }) => name).join(\", \")} CASCADE`,\n )\n }\n\n // drop sequences\n const sequences: ObjectLiteral[] = await this.query(\n `SELECT quote_ident(sequence_schema) || '.' || quote_ident(sequence_name) as \"name\" ` +\n `FROM \"information_schema\".\"sequences\" WHERE \"sequence_schema\"::STRING = ANY($1::STRING[])`,\n [schemas],\n )\n\n if (sequences.length > 0) {\n await this.query(\n `DROP SEQUENCE IF EXISTS ${sequences.map(({ name }) => name).join(\", \")}`,\n )\n }\n\n // drop enum types. Supported starting from v20.2.19.\n if (VersionUtils.isGreaterOrEqual(version, \"20.2.19\")) {\n await this.dropEnumTypes(schemas)\n }\n\n if (!isAnotherTransactionActive) await this.commitTransaction()\n } catch (error) {\n try {\n // we throw original error even if rollback thrown an error\n if (!isAnotherTransactionActive)\n await this.rollbackTransaction()\n } catch {\n // no-op\n }\n throw error\n }\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n protected async loadViews(viewNames?: string[]): Promise<View[]> {\n const hasTable = await this.hasTable(this.getTypeormMetadataTableName())\n if (!hasTable) {\n return []\n }\n\n if (!viewNames) {\n viewNames = []\n }\n\n const currentDatabase = await this.getCurrentDatabase()\n const currentSchema = await this.getCurrentSchema()\n\n const viewsCondition = viewNames\n .map((viewName) => {\n const { schema, tableName } =\n this.driver.parseTableName(viewName)\n\n return `(\"t\".\"schema\" = '${\n schema || currentSchema\n }' AND \"t\".\"name\" = '${tableName}')`\n })\n .join(\" OR \")\n\n const query =\n `SELECT \"t\".*, \"v\".\"check_option\" FROM ${this.escapePath(\n this.getTypeormMetadataTableName(),\n )} \"t\" ` +\n `INNER JOIN \"information_schema\".\"views\" \"v\" ON \"v\".\"table_schema\" = \"t\".\"schema\" AND \"v\".\"table_name\" = \"t\".\"name\" WHERE \"t\".\"type\" = '${\n MetadataTableType.VIEW\n }' ${viewsCondition ? `AND (${viewsCondition})` : \"\"}`\n const dbViews = await this.query(query)\n return dbViews.map((dbView: any) => {\n const view = new View()\n const schema =\n dbView[\"schema\"] === currentSchema &&\n !this.driver.options.schema\n ? undefined\n : dbView[\"schema\"]\n view.database = currentDatabase\n view.schema = dbView[\"schema\"]\n view.name = this.driver.buildTableName(dbView[\"name\"], schema)\n view.expression = dbView[\"value\"]\n return view\n })\n }\n\n /**\n * Loads all tables (with given names) from the database and creates a Table from them.\n * @param tableNames\n */\n protected async loadTables(tableNames?: string[]): Promise<Table[]> {\n // if no tables given then no need to proceed\n if (tableNames && tableNames.length === 0) {\n return []\n }\n\n const currentSchema = await this.getCurrentSchema()\n const currentDatabase = await this.getCurrentDatabase()\n\n const dbTables: { table_schema: string; table_name: string }[] = []\n\n if (!tableNames) {\n const tablesSql = `SELECT \"table_schema\", \"table_name\" FROM \"information_schema\".\"tables\"`\n dbTables.push(...(await this.query(tablesSql)))\n } else {\n const tablesCondition = tableNames\n .map((tableName) => this.driver.parseTableName(tableName))\n .map(({ schema, tableName }) => {\n return `(\"table_schema\" = '${\n schema || currentSchema\n }' AND \"table_name\" = '${tableName}')`\n })\n .join(\" OR \")\n const tablesSql =\n `SELECT \"table_schema\", \"table_name\" FROM \"information_schema\".\"tables\" WHERE ` +\n tablesCondition\n\n dbTables.push(...(await this.query(tablesSql)))\n }\n\n if (dbTables.length === 0) {\n return []\n }\n\n const columnsCondiiton = dbTables\n .map(({ table_name, table_schema }) => {\n return `(\"table_schema\" = '${table_schema}' AND \"table_name\" = '${table_name}')`\n })\n .join(\" OR \")\n const columnsSql =\n `SELECT \"columns\".*, \"attr\".\"attgenerated\" as \"generated_type\", ` +\n `pg_catalog.col_description((quote_ident(table_catalog) || '.' || quote_ident(table_schema) || '.' || quote_ident(table_name))::regclass::oid, ordinal_position) as description ` +\n `FROM \"information_schema\".\"columns\" ` +\n `LEFT JOIN \"pg_class\" AS \"cls\" ON \"cls\".\"relname\" = \"table_name\" ` +\n `LEFT JOIN \"pg_namespace\" AS \"ns\" ON \"ns\".\"oid\" = \"cls\".\"relnamespace\" AND \"ns\".\"nspname\" = \"table_schema\" ` +\n `LEFT JOIN \"pg_attribute\" AS \"attr\" ON \"attr\".\"attrelid\" = \"cls\".\"oid\" AND \"attr\".\"attname\" = \"column_name\" AND \"attr\".\"attnum\" = \"ordinal_position\" ` +\n `WHERE \"is_hidden\" = 'NO' AND ` +\n columnsCondiiton\n\n const constraintsCondition = dbTables\n .map(({ table_name, table_schema }) => {\n return `(\"ns\".\"nspname\" = '${table_schema}' AND \"t\".\"relname\" = '${table_name}')`\n })\n .join(\" OR \")\n\n const constraintsSql =\n `SELECT \"ns\".\"nspname\" AS \"table_schema\", \"t\".\"relname\" AS \"table_name\", \"cnst\".\"conname\" AS \"constraint_name\", ` +\n `pg_get_constraintdef(\"cnst\".\"oid\") AS \"expression\", ` +\n `CASE \"cnst\".\"contype\" WHEN 'p' THEN 'PRIMARY' WHEN 'u' THEN 'UNIQUE' WHEN 'c' THEN 'CHECK' WHEN 'x' THEN 'EXCLUDE' END AS \"constraint_type\", \"a\".\"attname\" AS \"column_name\" ` +\n `FROM \"pg_constraint\" \"cnst\" ` +\n `INNER JOIN \"pg_class\" \"t\" ON \"t\".\"oid\" = \"cnst\".\"conrelid\" ` +\n `INNER JOIN \"pg_namespace\" \"ns\" ON \"ns\".\"oid\" = \"cnst\".\"connamespace\" ` +\n `LEFT JOIN \"pg_attribute\" \"a\" ON \"a\".\"attrelid\" = \"cnst\".\"conrelid\" AND \"a\".\"attnum\" = ANY (\"cnst\".\"conkey\") ` +\n `WHERE \"t\".\"relkind\" = 'r' AND (${constraintsCondition})`\n\n const indicesSql =\n `SELECT \"ns\".\"nspname\" AS \"table_schema\", \"t\".\"relname\" AS \"table_name\", \"i\".\"relname\" AS \"constraint_name\", \"a\".\"attname\" AS \"column_name\", ` +\n `CASE \"ix\".\"indisunique\" WHEN 't' THEN 'TRUE' ELSE'FALSE' END AS \"is_unique\", pg_get_expr(\"ix\".\"indpred\", \"ix\".\"indrelid\") AS \"condition\", ` +\n `\"types\".\"typname\" AS \"type_name\" ` +\n `FROM \"pg_class\" \"t\" ` +\n `INNER JOIN \"pg_index\" \"ix\" ON \"ix\".\"indrelid\" = \"t\".\"oid\" ` +\n `INNER JOIN \"pg_attribute\" \"a\" ON \"a\".\"attrelid\" = \"t\".\"oid\" AND \"a\".\"attnum\" = ANY (\"ix\".\"indkey\") ` +\n `INNER JOIN \"pg_namespace\" \"ns\" ON \"ns\".\"oid\" = \"t\".\"relnamespace\" ` +\n `INNER JOIN \"pg_class\" \"i\" ON \"i\".\"oid\" = \"ix\".\"indexrelid\" ` +\n `INNER JOIN \"pg_type\" \"types\" ON \"types\".\"oid\" = \"a\".\"atttypid\" ` +\n `LEFT JOIN \"pg_constraint\" \"cnst\" ON \"cnst\".\"conname\" = \"i\".\"relname\" ` +\n `WHERE \"t\".\"relkind\" = 'r' AND \"cnst\".\"contype\" IS NULL AND (${constraintsCondition})`\n\n const foreignKeysCondition = dbTables\n .map(({ table_name, table_schema }) => {\n return `(\"ns\".\"nspname\" = '${table_schema}' AND \"cl\".\"relname\" = '${table_name}')`\n })\n .join(\" OR \")\n const foreignKeysSql =\n `SELECT \"con\".\"conname\" AS \"constraint_name\", \"con\".\"nspname\" AS \"table_schema\", \"con\".\"relname\" AS \"table_name\", \"att2\".\"attname\" AS \"column_name\", ` +\n `\"ns\".\"nspname\" AS \"referenced_table_schema\", \"cl\".\"relname\" AS \"referenced_table_name\", \"att\".\"attname\" AS \"referenced_column_name\", \"con\".\"confdeltype\" AS \"on_delete\", \"con\".\"confupdtype\" AS \"on_update\" ` +\n `FROM ( ` +\n `SELECT UNNEST (\"con1\".\"conkey\") AS \"parent\", UNNEST (\"con1\".\"confkey\") AS \"child\", \"con1\".\"confrelid\", \"con1\".\"conrelid\", \"con1\".\"conname\", \"con1\".\"contype\", \"ns\".\"nspname\", \"cl\".\"relname\", ` +\n `CASE \"con1\".\"confdeltype\" WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END as \"confdeltype\", ` +\n `CASE \"con1\".\"confupdtype\" WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END as \"confupdtype\" ` +\n `FROM \"pg_class\" \"cl\" ` +\n `INNER JOIN \"pg_namespace\" \"ns\" ON \"cl\".\"relnamespace\" = \"ns\".\"oid\" ` +\n `INNER JOIN \"pg_constraint\" \"con1\" ON \"con1\".\"conrelid\" = \"cl\".\"oid\" ` +\n `WHERE \"con1\".\"contype\" = 'f' AND (${foreignKeysCondition}) ` +\n `) \"con\" ` +\n `INNER JOIN \"pg_attribute\" \"att\" ON \"att\".\"attrelid\" = \"con\".\"confrelid\" AND \"att\".\"attnum\" = \"con\".\"child\" ` +\n `INNER JOIN \"pg_class\" \"cl\" ON \"cl\".\"oid\" = \"con\".\"confrelid\" ` +\n `INNER JOIN \"pg_namespace\" \"ns\" ON \"cl\".\"relnamespace\" = \"ns\".\"oid\" ` +\n `INNER JOIN \"pg_attribute\" \"att2\" ON \"att2\".\"attrelid\" = \"con\".\"conrelid\" AND \"att2\".\"attnum\" = \"con\".\"parent\"`\n\n const tableSchemas = dbTables\n .map((dbTable) => `'${dbTable.table_schema}'`)\n .join(\", \")\n const enumsSql =\n `SELECT \"t\".\"typname\" AS \"name\", string_agg(\"e\".\"enumlabel\", '|') AS \"value\" ` +\n `FROM \"pg_enum\" \"e\" ` +\n `INNER JOIN \"pg_type\" \"t\" ON \"t\".\"oid\" = \"e\".\"enumtypid\" ` +\n `INNER JOIN \"pg_namespace\" \"n\" ON \"n\".\"oid\" = \"t\".\"typnamespace\" ` +\n `WHERE \"n\".\"nspname\" IN (${tableSchemas}) ` +\n `GROUP BY \"t\".\"typname\"`\n\n const dbColumns: ObjectLiteral[] = await this.query(columnsSql)\n const dbConstraints: ObjectLiteral[] = await this.query(constraintsSql)\n const dbIndices: ObjectLiteral[] = await this.query(indicesSql)\n const dbForeignKeys: ObjectLiteral[] = await this.query(foreignKeysSql)\n const dbEnums: ObjectLiteral[] = await this.query(enumsSql)\n\n // create tables for loaded tables\n return Promise.all(\n dbTables.map(async (dbTable) => {\n const table = new Table()\n\n const getSchemaFromKey = (dbObject: any, key: string) => {\n return dbObject[key] === currentSchema &&\n (!this.driver.options.schema ||\n this.driver.options.schema === currentSchema)\n ? undefined\n : dbObject[key]\n }\n\n // We do not need to join schema name, when database is by default.\n const schema = getSchemaFromKey(dbTable, \"table_schema\")\n table.database = currentDatabase\n table.schema = dbTable[\"table_schema\"]\n table.name = this.driver.buildTableName(\n dbTable[\"table_name\"],\n schema,\n )\n\n // create columns from the loaded columns\n table.columns = await Promise.all(\n dbColumns\n .filter(\n (dbColumn) =>\n dbColumn[\"table_name\"] ===\n dbTable[\"table_name\"] &&\n dbColumn[\"table_schema\"] ===\n dbTable[\"table_schema\"],\n )\n .map(async (dbColumn) => {\n const columnConstraints = dbConstraints.filter(\n (dbConstraint) => {\n return (\n dbConstraint[\"table_name\"] ===\n dbColumn[\"table_name\"] &&\n dbConstraint[\"table_schema\"] ===\n dbColumn[\"table_schema\"] &&\n dbConstraint[\"column_name\"] ===\n dbColumn[\"column_name\"]\n )\n },\n )\n\n const tableColumn = new TableColumn()\n tableColumn.name = dbColumn[\"column_name\"]\n\n tableColumn.type =\n dbColumn[\"crdb_sql_type\"].toLowerCase()\n if (\n dbColumn[\"crdb_sql_type\"].indexOf(\"COLLATE\") !==\n -1\n ) {\n tableColumn.collation = dbColumn[\n \"crdb_sql_type\"\n ].substr(\n dbColumn[\"crdb_sql_type\"].indexOf(\n \"COLLATE\",\n ) +\n \"COLLATE\".length +\n 1,\n dbColumn[\"crdb_sql_type\"].length,\n )\n tableColumn.type = tableColumn.type.substr(\n 0,\n dbColumn[\"crdb_sql_type\"].indexOf(\n \"COLLATE\",\n ) - 1,\n )\n }\n\n if (tableColumn.type.indexOf(\"(\") !== -1)\n tableColumn.type = tableColumn.type.substr(\n 0,\n tableColumn.type.indexOf(\"(\"),\n )\n\n if (\n tableColumn.type === \"numeric\" ||\n tableColumn.type === \"decimal\"\n ) {\n if (\n dbColumn[\"numeric_precision\"] !== null &&\n !this.isDefaultColumnPrecision(\n table,\n tableColumn,\n dbColumn[\"numeric_precision\"],\n )\n ) {\n tableColumn.precision = parseInt(\n dbColumn[\"numeric_precision\"],\n )\n } else if (\n dbColumn[\"numeric_scale\"] !== null &&\n !this.isDefaultColumnScale(\n table,\n tableColumn,\n dbColumn[\"numeric_scale\"],\n )\n ) {\n tableColumn.precision = undefined\n }\n if (\n dbColumn[\"numeric_scale\"] !== null &&\n !this.isDefaultColumnScale(\n table,\n tableColumn,\n dbColumn[\"numeric_scale\"],\n )\n ) {\n tableColumn.scale = parseInt(\n dbColumn[\"numeric_scale\"],\n )\n } else if (\n dbColumn[\"numeric_precision\"] !== null &&\n !this.isDefaultColumnPrecision(\n table,\n tableColumn,\n dbColumn[\"numeric_precision\"],\n )\n ) {\n tableColumn.scale = undefined\n }\n }\n\n // docs: https://www.postgresql.org/docs/current/xtypes.html\n // When you define a new base type, PostgreSQL automatically provides support for arrays of that type.\n // The array type typically has the same name as the base type with the underscore character (_) prepended.\n // ----\n // so, we must remove this underscore character from enum type name\n let udtName = dbColumn[\"udt_name\"]\n if (udtName.indexOf(\"_\") === 0) {\n udtName = udtName.substr(1, udtName.length)\n }\n\n const enumType = dbEnums.find((dbEnum) => {\n return dbEnum[\"name\"] === udtName\n })\n if (enumType) {\n // check if `enumName` is specified by user\n const builtEnumName = this.buildEnumName(\n table,\n tableColumn,\n false,\n true,\n )\n const enumName =\n builtEnumName !== enumType[\"name\"]\n ? enumType[\"name\"]\n : undefined\n\n tableColumn.type = \"enum\"\n tableColumn.enum = enumType[\"value\"].split(\"|\")\n tableColumn.enumName = enumName\n }\n\n if (\n dbColumn[\"data_type\"].toLowerCase() === \"array\"\n ) {\n tableColumn.isArray = true\n if (!enumType) {\n const type = dbColumn[\"crdb_sql_type\"]\n .replace(\"[]\", \"\")\n .toLowerCase()\n tableColumn.type =\n this.dataSource.driver.normalizeType({\n type: type,\n })\n }\n }\n\n // check only columns that have length property\n if (\n this.driver.withLengthColumnTypes.indexOf(\n tableColumn.type as ColumnType,\n ) !== -1 &&\n dbColumn[\"character_maximum_length\"]\n ) {\n const length =\n dbColumn[\n \"character_maximum_length\"\n ].toString()\n tableColumn.length =\n !this.isDefaultColumnLength(\n table,\n tableColumn,\n length,\n )\n ? length\n : \"\"\n }\n tableColumn.isNullable =\n dbColumn[\"is_nullable\"] === \"YES\"\n\n const primaryConstraint = columnConstraints.find(\n (constraint) =>\n constraint[\"constraint_type\"] === \"PRIMARY\",\n )\n if (primaryConstraint) {\n tableColumn.isPrimary = true\n // find another columns involved in primary key constraint\n const anotherPrimaryConstraints =\n dbConstraints.filter(\n (constraint) =>\n constraint[\"table_name\"] ===\n dbColumn[\"table_name\"] &&\n constraint[\"table_schema\"] ===\n dbColumn[\"table_schema\"] &&\n constraint[\"column_name\"] !==\n dbColumn[\"column_name\"] &&\n constraint[\"constraint_type\"] ===\n \"PRIMARY\",\n )\n\n // collect all column names\n const columnNames =\n anotherPrimaryConstraints.map(\n (constraint) =>\n constraint[\"column_name\"],\n )\n columnNames.push(dbColumn[\"column_name\"])\n\n // build default primary key constraint name\n const pkName =\n this.dataSource.namingStrategy.primaryKeyName(\n table,\n columnNames,\n )\n\n // if primary key has user-defined constraint name, write it in table column\n if (\n primaryConstraint[\"constraint_name\"] !==\n pkName\n ) {\n tableColumn.primaryKeyConstraintName =\n primaryConstraint[\"constraint_name\"]\n }\n }\n\n const uniqueConstraints = columnConstraints.filter(\n (constraint) =>\n constraint[\"constraint_type\"] === \"UNIQUE\",\n )\n const isConstraintComposite =\n uniqueConstraints.every((uniqueConstraint) => {\n return dbConstraints.some(\n (dbConstraint) =>\n dbConstraint[\"constraint_type\"] ===\n \"UNIQUE\" &&\n dbConstraint[\"constraint_name\"] ===\n uniqueConstraint[\n \"constraint_name\"\n ] &&\n dbConstraint[\"column_name\"] !==\n dbColumn[\"column_name\"],\n )\n })\n tableColumn.isUnique =\n uniqueConstraints.length > 0 &&\n !isConstraintComposite\n\n if (\n dbColumn[\"column_default\"] !== null &&\n dbColumn[\"column_default\"] !== undefined\n ) {\n if (\n dbColumn[\"column_default\"] ===\n \"unique_rowid()\"\n ) {\n tableColumn.isGenerated = true\n tableColumn.generationStrategy = \"rowid\"\n } else if (\n dbColumn[\"column_default\"].indexOf(\n \"nextval\",\n ) !== -1\n ) {\n tableColumn.isGenerated = true\n tableColumn.generationStrategy = \"increment\"\n } else if (\n dbColumn[\"column_default\"] ===\n \"gen_random_uuid()\"\n ) {\n tableColumn.isGenerated = true\n tableColumn.generationStrategy = \"uuid\"\n } else {\n tableColumn.default = dbColumn[\n \"column_default\"\n ].replace(/:::[\\w\\s[\\]\"]+/g, \"\")\n tableColumn.default =\n tableColumn.default.replace(\n /^(-?[\\d.]+)$/,\n \"($1)\",\n )\n\n if (enumType) {\n tableColumn.default =\n tableColumn.default.replace(\n `.${enumType[\"name\"]}`,\n \"\",\n )\n }\n }\n }\n\n if (\n (dbColumn[\"is_generated\"] === \"YES\" ||\n dbColumn[\"is_generated\"] === \"ALWAYS\") &&\n dbColumn[\"generation_expression\"]\n ) {\n tableColumn.generatedType =\n dbColumn[\"generated_type\"] === \"s\"\n ? \"STORED\"\n : \"VIRTUAL\"\n // We cannot relay on information_schema.columns.generation_expression, because it is formatted different.\n const asExpressionQuery =\n this.selectTypeormMetadataSql({\n schema: dbTable[\"table_schema\"],\n table: dbTable[\"table_name\"],\n type: MetadataTableType.GENERATED_COLUMN,\n name: tableColumn.name,\n })\n\n const results = await this.query(\n asExpressionQuery.query,\n asExpressionQuery.parameters,\n )\n if (results[0] && results[0].value) {\n tableColumn.asExpression = results[0].value\n } else {\n tableColumn.asExpression = \"\"\n }\n }\n\n tableColumn.comment =\n dbColumn[\"description\"] == null\n ? undefined\n : dbColumn[\"description\"]\n if (dbColumn[\"character_set_name\"])\n tableColumn.charset =\n dbColumn[\"character_set_name\"]\n\n if (\n tableColumn.type === \"geometry\" ||\n tableColumn.type === \"geography\"\n ) {\n const sql =\n `SELECT * FROM (` +\n `SELECT \"f_table_schema\" \"table_schema\", \"f_table_name\" \"table_name\", ` +\n `\"f_${tableColumn.type}_column\" \"column_name\", \"srid\", \"type\" ` +\n `FROM \"${tableColumn.type}_columns\"` +\n `) AS _ ` +\n `WHERE \"column_name\" = '${dbColumn[\"column_name\"]}' AND ` +\n `\"table_schema\" = '${dbColumn[\"table_schema\"]}' AND ` +\n `\"table_name\" = '${dbColumn[\"table_name\"]}'`\n\n const results: ObjectLiteral[] =\n await this.query(sql)\n\n if (results.length > 0) {\n tableColumn.spatialFeatureType =\n results[0].type\n tableColumn.srid = results[0].srid\n ? parseInt(results[0].srid)\n : undefined\n }\n }\n\n return tableColumn\n }),\n )\n\n // find unique constraints of table, group them by constraint name and build TableUnique.\n const tableUniqueConstraints = OrmUtils.uniq(\n dbConstraints.filter((dbConstraint) => {\n return (\n dbConstraint[\"table_name\"] ===\n dbTable[\"table_name\"] &&\n dbConstraint[\"table_schema\"] ===\n dbTable[\"table_schema\"] &&\n dbConstraint[\"constraint_type\"] === \"UNIQUE\"\n )\n }),\n (dbConstraint) => dbConstraint[\"constraint_name\"],\n )\n\n table.uniques = tableUniqueConstraints.map((constraint) => {\n const uniques = dbConstraints.filter(\n (dbC) =>\n dbC[\"constraint_name\"] ===\n constraint[\"constraint_name\"],\n )\n return new TableUnique({\n name: constraint[\"constraint_name\"],\n columnNames: uniques.map((u) => u[\"column_name\"]),\n })\n })\n\n // find check constraints of table, group them by constraint name and build TableCheck.\n const tableCheckConstraints = OrmUtils.uniq(\n dbConstraints.filter((dbConstraint) => {\n return (\n dbConstraint[\"table_name\"] ===\n dbTable[\"table_name\"] &&\n dbConstraint[\"table_schema\"] ===\n dbTable[\"table_schema\"] &&\n dbConstraint[\"constraint_type\"] === \"CHECK\"\n )\n }),\n (dbConstraint) => dbConstraint[\"constraint_name\"],\n )\n\n table.checks = tableCheckConstraints.map((constraint) => {\n const checks = dbConstraints.filter(\n (dbC) =>\n dbC[\"constraint_name\"] ===\n constraint[\"constraint_name\"],\n )\n return new TableCheck({\n name: constraint[\"constraint_name\"],\n columnNames: checks.map((c) => c[\"column_name\"]),\n expression: constraint[\"expression\"].replace(\n /^\\s*CHECK\\s*\\((.*)\\)\\s*$/i,\n \"$1\",\n ),\n })\n })\n\n // find exclusion constraints of table, group them by constraint name and build TableExclusion.\n const tableExclusionConstraints = OrmUtils.uniq(\n dbConstraints.filter((dbConstraint) => {\n return (\n dbConstraint[\"table_name\"] ===\n dbTable[\"table_name\"] &&\n dbConstraint[\"table_schema\"] ===\n dbTable[\"table_schema\"] &&\n dbConstraint[\"constraint_type\"] === \"EXCLUDE\"\n )\n }),\n (dbConstraint) => dbConstraint[\"constraint_name\"],\n )\n\n table.exclusions = tableExclusionConstraints.map(\n (constraint) => {\n return new TableExclusion({\n name: constraint[\"constraint_name\"],\n expression: constraint[\"expression\"].substring(8), // trim EXCLUDE from start of expression\n })\n },\n )\n\n // find foreign key constraints of table, group them by constraint name and build TableForeignKey.\n const tableForeignKeyConstraints = OrmUtils.uniq(\n dbForeignKeys.filter((dbForeignKey) => {\n return (\n dbForeignKey[\"table_name\"] ===\n dbTable[\"table_name\"] &&\n dbForeignKey[\"table_schema\"] ===\n dbTable[\"table_schema\"]\n )\n }),\n (dbForeignKey) => dbForeignKey[\"constraint_name\"],\n )\n\n table.foreignKeys = tableForeignKeyConstraints.map(\n (dbForeignKey) => {\n const foreignKeys = dbForeignKeys.filter(\n (dbFk) =>\n dbFk[\"constraint_name\"] ===\n dbForeignKey[\"constraint_name\"],\n )\n\n // if referenced table located in currently used schema, we don't need to concat schema name to table name.\n const schema = getSchemaFromKey(\n dbForeignKey,\n \"referenced_table_schema\",\n )\n const referencedTableName = this.driver.buildTableName(\n dbForeignKey[\"referenced_table_name\"],\n schema,\n )\n\n return new TableForeignKey({\n name: dbForeignKey[\"constraint_name\"],\n columnNames: foreignKeys.map(\n (dbFk) => dbFk[\"column_name\"],\n ),\n referencedSchema:\n dbForeignKey[\"referenced_table_schema\"],\n referencedTableName: referencedTableName,\n referencedColumnNames: foreignKeys.map(\n (dbFk) => dbFk[\"referenced_column_name\"],\n ),\n onDelete: dbForeignKey[\"on_delete\"],\n onUpdate: dbForeignKey[\"on_update\"],\n })\n },\n )\n\n // find index constraints of table, group them by constraint name and build TableIndex.\n const tableIndexConstraints = OrmUtils.uniq(\n dbIndices.filter((dbIndex) => {\n return (\n dbIndex[\"table_name\"] === dbTable[\"table_name\"] &&\n dbIndex[\"table_schema\"] === dbTable[\"table_schema\"]\n )\n }),\n (dbIndex) => dbIndex[\"constraint_name\"],\n )\n\n table.indices = tableIndexConstraints.map((constraint) => {\n const indices = dbIndices.filter(\n (index) =>\n index[\"constraint_name\"] ===\n constraint[\"constraint_name\"],\n )\n return new TableIndex(<TableIndexOptions>{\n table: table,\n name: constraint[\"constraint_name\"],\n columnNames: indices.map((i) => i[\"column_name\"]),\n isUnique: constraint[\"is_unique\"] === \"TRUE\",\n where: constraint[\"condition\"],\n isSpatial: indices.every(\n (i) =>\n this.driver.spatialTypes.indexOf(\n i[\"type_name\"],\n ) >= 0,\n ),\n isFulltext: false,\n })\n })\n\n return table\n }),\n )\n }\n\n /**\n * Builds create table sql.\n * @param table\n * @param createForeignKeys\n */\n protected createTableSql(table: Table, createForeignKeys?: boolean): Query {\n const columnDefinitions = table.columns\n .map((column) => this.buildCreateColumnSql(table, column))\n .join(\", \")\n let sql = `CREATE TABLE ${this.escapePath(table)} (${columnDefinitions}`\n\n table.columns\n .filter((column) => column.isUnique)\n .forEach((column) => {\n const isUniqueExist = table.uniques.some(\n (unique) =>\n unique.columnNames.length === 1 &&\n unique.columnNames[0] === column.name,\n )\n if (!isUniqueExist)\n table.uniques.push(\n new TableUnique({\n name: this.dataSource.namingStrategy.uniqueConstraintName(\n table,\n [column.name],\n ),\n columnNames: [column.name],\n }),\n )\n })\n\n table.indices\n .filter((index) => index.isUnique)\n .forEach((index) => {\n table.uniques.push(\n new TableUnique({\n name: this.dataSource.namingStrategy.uniqueConstraintName(\n table,\n index.columnNames,\n ),\n columnNames: index.columnNames,\n }),\n )\n })\n\n if (table.uniques.length > 0) {\n const uniquesSql = table.uniques\n .map((unique) => {\n const uniqueName = unique.name\n ? unique.name\n : this.dataSource.namingStrategy.uniqueConstraintName(\n table,\n unique.columnNames,\n )\n const columnNames = unique.columnNames\n .map((columnName) => `\"${columnName}\"`)\n .join(\", \")\n return `CONSTRAINT \"${uniqueName}\" UNIQUE (${columnNames})`\n })\n .join(\", \")\n\n sql += `, ${uniquesSql}`\n }\n\n if (table.checks.length > 0) {\n const checksSql = table.checks\n .map((check) => {\n const checkName = check.name\n ? check.name\n : this.dataSource.namingStrategy.checkConstraintName(\n table,\n check.expression!,\n )\n return `CONSTRAINT \"${checkName}\" CHECK (${check.expression})`\n })\n .join(\", \")\n\n sql += `, ${checksSql}`\n }\n\n if (table.foreignKeys.length > 0 && createForeignKeys) {\n const foreignKeysSql = table.foreignKeys\n .map((fk) => {\n const columnNames = fk.columnNames\n .map((columnName) => `\"${columnName}\"`)\n .join(\", \")\n if (!fk.name)\n fk.name = this.dataSource.namingStrategy.foreignKeyName(\n table,\n fk.columnNames,\n this.getTablePath(fk),\n fk.referencedColumnNames,\n )\n const referencedColumnNames = fk.referencedColumnNames\n .map((columnName) => `\"${columnName}\"`)\n .join(\", \")\n\n let constraint = `CONSTRAINT \"${\n fk.name\n }\" FOREIGN KEY (${columnNames}) REFERENCES ${this.escapePath(\n this.getTablePath(fk),\n )} (${referencedColumnNames})`\n if (fk.onDelete) constraint += ` ON DELETE ${fk.onDelete}`\n if (fk.onUpdate) constraint += ` ON UPDATE ${fk.onUpdate}`\n\n return constraint\n })\n .join(\", \")\n\n sql += `, ${foreignKeysSql}`\n }\n\n const primaryColumns = table.columns.filter(\n (column) => column.isPrimary,\n )\n if (primaryColumns.length > 0) {\n const primaryKeyName = primaryColumns[0].primaryKeyConstraintName\n ? primaryColumns[0].primaryKeyConstraintName\n : this.dataSource.namingStrategy.primaryKeyName(\n table,\n primaryColumns.map((column) => column.name),\n )\n\n const columnNames = primaryColumns\n .map((column) => `\"${column.name}\"`)\n .join(\", \")\n sql += `, CONSTRAINT \"${primaryKeyName}\" PRIMARY KEY (${columnNames})`\n }\n\n sql += `)`\n\n table.columns\n .filter((it) => it.comment)\n .forEach((it) => {\n sql += `; COMMENT ON COLUMN ${this.escapePath(table)}.\"${\n it.name\n }\" IS ${this.escapeComment(it.comment)}`\n })\n\n return new Query(sql)\n }\n\n /**\n * Loads Cockroachdb version.\n */\n async getVersion(): Promise<string> {\n const result: [{ version: string }] = await this.query(\n `SELECT version() AS \"version\"`,\n )\n const versionString = result[0].version\n\n return versionString.replace(/^CockroachDB CCL v([\\d.]+) .*$/, \"$1\")\n }\n\n /**\n * Builds drop table sql.\n * @param tableOrPath\n */\n protected dropTableSql(tableOrPath: Table | string): Query {\n return new Query(`DROP TABLE ${this.escapePath(tableOrPath)}`)\n }\n\n protected createViewSql(view: View): Query {\n if (typeof view.expression === \"string\") {\n return new Query(\n `CREATE VIEW ${this.escapePath(view)} AS ${view.expression}`,\n )\n } else {\n return new Query(\n `CREATE VIEW ${this.escapePath(view)} AS ${view\n .expression(this.dataSource)\n .getQuery()}`,\n )\n }\n }\n\n protected async insertViewDefinitionSql(view: View): Promise<Query> {\n const currentSchema = await this.getCurrentSchema()\n let { schema, tableName: name } = this.driver.parseTableName(view)\n if (!schema) {\n schema = currentSchema\n }\n\n const expression =\n typeof view.expression === \"string\"\n ? view.expression.trim()\n : view.expression(this.dataSource).getQuery()\n return this.insertTypeormMetadataSql({\n type: MetadataTableType.VIEW,\n schema: schema,\n name: name,\n value: expression,\n })\n }\n\n /**\n * Builds drop view sql.\n * @param viewOrPath\n */\n protected dropViewSql(viewOrPath: View | string): Query {\n return new Query(`DROP VIEW ${this.escapePath(viewOrPath)}`)\n }\n\n /**\n * Builds remove view sql.\n * @param viewOrPath\n */\n protected async deleteViewDefinitionSql(\n viewOrPath: View | string,\n ): Promise<Query> {\n const currentSchema = await this.getCurrentSchema()\n\n let { schema, tableName: name } = this.driver.parseTableName(viewOrPath)\n\n if (!schema) {\n schema = currentSchema\n }\n\n return this.deleteTypeormMetadataSql({\n type: MetadataTableType.VIEW,\n schema,\n name,\n })\n }\n\n /**\n * Drops ENUM type from given schemas.\n * @param schemaNames\n */\n protected async dropEnumTypes(schemaNames: string[]): Promise<void> {\n const enums: ObjectLiteral[] = await this.query(\n `SELECT quote_ident(n.nspname) || '.' || quote_ident(t.typname) as \"name\" FROM \"pg_type\" \"t\" ` +\n `INNER JOIN \"pg_enum\" \"e\" ON \"e\".\"enumtypid\" = \"t\".\"oid\" ` +\n `INNER JOIN \"pg_namespace\" \"n\" ON \"n\".\"oid\" = \"t\".\"typnamespace\" ` +\n `WHERE \"n\".\"nspname\"::STRING = ANY($1::STRING[]) GROUP BY \"n\".\"nspname\", \"t\".\"typname\"`,\n [schemaNames],\n )\n\n if (enums.length > 0) {\n await this.query(\n `DROP TYPE IF EXISTS ${enums.map(({ name }) => name).join(\", \")}`,\n )\n }\n }\n\n /**\n * Checks if enum with the given name exist in the database.\n * @param table\n * @param column\n */\n protected async hasEnumType(\n table: Table,\n column: TableColumn,\n ): Promise<boolean> {\n let { schema } = this.driver.parseTableName(table)\n\n if (!schema) {\n schema = await this.getCurrentSchema()\n }\n\n const enumName = this.buildEnumName(table, column, false, true)\n const sql =\n `SELECT \"n\".\"nspname\", \"t\".\"typname\" FROM \"pg_type\" \"t\" ` +\n `INNER JOIN \"pg_namespace\" \"n\" ON \"n\".\"oid\" = \"t\".\"typnamespace\" ` +\n `WHERE \"n\".\"nspname\" = '${schema}' AND \"t\".\"typname\" = '${enumName}'`\n const result = await this.query(sql)\n return result.length ? true : false\n }\n\n /**\n * Builds create ENUM type sql.\n * @param table\n * @param column\n * @param enumName\n */\n protected createEnumTypeSql(\n table: Table,\n column: TableColumn,\n enumName?: string,\n ): Query {\n if (!enumName) enumName = this.buildEnumName(table, column)\n const enumValues = column\n .enum!.map((value) => `'${value.replaceAll(\"'\", \"''\")}'`)\n .join(\", \")\n return new Query(`CREATE TYPE ${enumName} AS ENUM(${enumValues})`)\n }\n\n /**\n * Builds create ENUM type sql.\n * @param table\n * @param column\n * @param enumName\n */\n protected dropEnumTypeSql(\n table: Table,\n column: TableColumn,\n enumName?: string,\n ): Query {\n if (!enumName) enumName = this.buildEnumName(table, column)\n return new Query(`DROP TYPE ${enumName}`)\n }\n\n /**\n * Builds create index sql.\n * UNIQUE indices creates as UNIQUE constraints.\n * @param table\n * @param index\n */\n protected createIndexSql(table: Table, index: TableIndex): Query {\n const columns = index.columnNames\n .map((columnName) => `\"${columnName}\"`)\n .join(\", \")\n return new Query(\n `CREATE ${index.isUnique ? \"UNIQUE \" : \"\"}INDEX \"${\n index.name\n }\" ON ${this.escapePath(table)} ${\n index.isSpatial ? \"USING GiST \" : \"\"\n }(${columns}) ${index.where ? \"WHERE \" + index.where : \"\"}`,\n )\n }\n\n /**\n * Builds drop index sql.\n * @param table\n * @param indexOrName\n * @param ifExists\n */\n protected dropIndexSql(\n table: Table,\n indexOrName: TableIndex | TableUnique | string,\n ifExists?: boolean,\n ): Query {\n const indexName =\n InstanceChecker.isTableIndex(indexOrName) ||\n InstanceChecker.isTableUnique(indexOrName)\n ? indexOrName.name\n : indexOrName\n return new Query(\n `DROP INDEX ${ifExists ? \"IF EXISTS \" : \"\"}${this.escapePath(table)}@\"${indexName}\" CASCADE`,\n )\n }\n\n /**\n * Builds create primary key sql.\n * @param table\n * @param columnNames\n * @param constraintName\n */\n protected createPrimaryKeySql(\n table: Table,\n columnNames: string[],\n constraintName?: string,\n ): Query {\n const primaryKeyName = constraintName\n ? constraintName\n : this.dataSource.namingStrategy.primaryKeyName(table, columnNames)\n const columnNamesString = columnNames\n .map((columnName) => `\"${columnName}\"`)\n .join(\", \")\n return new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${primaryKeyName}\" PRIMARY KEY (${columnNamesString})`,\n )\n }\n\n /**\n * Builds drop primary key sql.\n * @param table\n * @param ifExists\n */\n protected dropPrimaryKeySql(table: Table, ifExists?: boolean): Query {\n if (!table.primaryColumns.length)\n throw new TypeORMError(`Table ${table} has no primary keys.`)\n\n const columnNames = table.primaryColumns.map((column) => column.name)\n const constraintName = table.primaryColumns[0].primaryKeyConstraintName\n const primaryKeyName = constraintName\n ? constraintName\n : this.dataSource.namingStrategy.primaryKeyName(table, columnNames)\n return new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT ${ifExists ? \"IF EXISTS \" : \"\"}\"${primaryKeyName}\"`,\n )\n }\n\n /**\n * Builds create unique constraint sql.\n * @param table\n * @param uniqueConstraint\n */\n protected createUniqueConstraintSql(\n table: Table,\n uniqueConstraint: TableUnique | TableIndex,\n ): Query {\n const columnNames = uniqueConstraint.columnNames\n .map((column) => `\"` + column + `\"`)\n .join(\", \")\n return new Query(\n `ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${\n uniqueConstraint.name\n }\" UNIQUE (${columnNames})`,\n )\n }\n\n /**\n * Builds drop unique constraint sql.\n * @param table\n * @param uniqueOrName\n */\n protected dropUniqueConstraintSql(\n table: Table,\n uniqueOrName: TableUnique | string,\n ): Query {\n const uniqueName = InstanceChecker.isTableUnique(uniqueOrName)\n ? uniqueOrName.name\n : uniqueOrName\n return new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${uniqueName}\"`,\n )\n }\n\n /**\n * Builds create check constraint sql.\n * @param table\n * @param checkConstraint\n */\n protected createCheckConstraintSql(\n table: Table,\n checkConstraint: TableCheck,\n ): Query {\n return new Query(\n `ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${\n checkConstraint.name\n }\" CHECK (${checkConstraint.expression})`,\n )\n }\n\n /**\n * Builds drop check constraint sql.\n * @param table\n * @param checkOrName\n * @param ifExists\n */\n protected dropCheckConstraintSql(\n table: Table,\n checkOrName: TableCheck | string,\n ifExists?: boolean,\n ): Query {\n const checkName = InstanceChecker.isTableCheck(checkOrName)\n ? checkOrName.name\n : checkOrName\n return new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT ${ifExists ? \"IF EXISTS \" : \"\"}\"${checkName}\"`,\n )\n }\n\n /**\n * Builds create foreign key sql.\n * @param table\n * @param foreignKey\n */\n protected createForeignKeySql(\n table: Table,\n foreignKey: TableForeignKey,\n ): Query {\n const columnNames = foreignKey.columnNames\n .map((column) => `\"` + column + `\"`)\n .join(\", \")\n const referencedColumnNames = foreignKey.referencedColumnNames\n .map((column) => `\"` + column + `\"`)\n .join(\",\")\n let sql =\n `ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${\n foreignKey.name\n }\" FOREIGN KEY (${columnNames}) ` +\n `REFERENCES ${this.escapePath(\n this.getTablePath(foreignKey),\n )}(${referencedColumnNames})`\n if (foreignKey.onDelete) sql += ` ON DELETE ${foreignKey.onDelete}`\n if (foreignKey.onUpdate) sql += ` ON UPDATE ${foreignKey.onUpdate}`\n\n return new Query(sql)\n }\n\n /**\n * Builds drop foreign key sql.\n * @param table\n * @param foreignKeyOrName\n * @param ifExists\n */\n protected dropForeignKeySql(\n table: Table,\n foreignKeyOrName: TableForeignKey | string,\n ifExists?: boolean,\n ): Query {\n const foreignKeyName = InstanceChecker.isTableForeignKey(\n foreignKeyOrName,\n )\n ? foreignKeyOrName.name\n : foreignKeyOrName\n return new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT ${ifExists ? \"IF EXISTS \" : \"\"}\"${foreignKeyName}\"`,\n )\n }\n\n /**\n * Builds sequence name from given table and column.\n * @param table\n * @param columnOrName\n */\n protected buildSequenceName(\n table: Table,\n columnOrName: TableColumn | string,\n ): string {\n const { tableName } = this.driver.parseTableName(table)\n\n const columnName = InstanceChecker.isTableColumn(columnOrName)\n ? columnOrName.name\n : columnOrName\n\n return `${tableName}_${columnName}_seq`\n }\n\n protected buildSequencePath(\n table: Table,\n columnOrName: TableColumn | string,\n ): string {\n const { schema } = this.driver.parseTableName(table)\n\n return schema\n ? `${schema}.${this.buildSequenceName(table, columnOrName)}`\n : this.buildSequenceName(table, columnOrName)\n }\n\n /**\n * Builds ENUM type name from given table and column.\n * @param table\n * @param column\n * @param withSchema\n * @param disableEscape\n * @param toOld\n */\n protected buildEnumName(\n table: Table,\n column: TableColumn,\n withSchema: boolean = true,\n disableEscape?: boolean,\n toOld?: boolean,\n ): string {\n const { schema, tableName } = this.driver.parseTableName(table)\n let enumName = column.enumName\n ? column.enumName\n : `${tableName}_${column.name.toLowerCase()}_enum`\n if (schema && withSchema) enumName = `${schema}.${enumName}`\n if (toOld) enumName = enumName + \"_old\"\n return enumName\n .split(\".\")\n .map((i) => {\n return disableEscape ? i : `\"${i}\"`\n })\n .join(\".\")\n }\n\n protected async getUserDefinedTypeName(table: Table, column: TableColumn) {\n let { schema, tableName: name } = this.driver.parseTableName(table)\n\n if (!schema) {\n schema = await this.getCurrentSchema()\n }\n\n const result = await this.query(\n `SELECT \"udt_schema\", \"udt_name\" ` +\n `FROM \"information_schema\".\"columns\" WHERE \"table_schema\" = '${schema}' AND \"table_name\" = '${name}' AND \"column_name\"='${column.name}'`,\n )\n\n // docs: https://www.postgresql.org/docs/current/xtypes.html\n // When you define a new base type, PostgreSQL automatically provides support for arrays of that type.\n // The array type typically has the same name as the base type with the underscore character (_) prepended.\n // ----\n // so, we must remove this underscore character from enum type name\n let udtName = result[0][\"udt_name\"]\n if (udtName.indexOf(\"_\") === 0) {\n udtName = udtName.substr(1, udtName.length)\n }\n return {\n schema: result[0][\"udt_schema\"],\n name: udtName,\n }\n }\n\n /**\n * Escapes a given comment so it's safe to include in a query.\n * @param comment\n */\n protected escapeComment(comment?: string) {\n if (comment === undefined || comment.length === 0) {\n return \"NULL\"\n }\n\n comment = comment.replace(/'/g, \"''\").replace(/\\u0000/g, \"\") // Null bytes aren't allowed in comments\n\n return `'${comment}'`\n }\n\n /**\n * Escapes given table or view path.\n * @param target\n */\n protected escapePath(target: Table | View | string): string {\n const { schema, tableName } = this.driver.parseTableName(target)\n\n if (schema && schema !== this.driver.searchSchema) {\n return `\"${schema}\".\"${tableName}\"`\n }\n\n return `\"${tableName}\"`\n }\n\n /**\n * Builds a query for create column.\n * @param table\n * @param column\n */\n protected buildCreateColumnSql(table: Table, column: TableColumn) {\n let c = '\"' + column.name + '\"'\n\n if (column.isGenerated) {\n if (column.generationStrategy === \"increment\") {\n c += ` INT DEFAULT nextval('${this.escapePath(\n this.buildSequencePath(table, column),\n )}')`\n } else if (column.generationStrategy === \"rowid\") {\n c += \" INT DEFAULT unique_rowid()\"\n } else if (column.generationStrategy === \"uuid\") {\n c += \" UUID DEFAULT gen_random_uuid()\"\n }\n }\n\n if (column.type === \"enum\" || column.type === \"simple-enum\") {\n c += \" \" + this.buildEnumName(table, column)\n if (column.isArray) c += \" array\"\n } else if (!column.isGenerated) {\n c += \" \" + this.dataSource.driver.createFullType(column)\n }\n\n if (column.asExpression) {\n c += ` AS (${column.asExpression}) ${\n column.generatedType ? column.generatedType : \"VIRTUAL\"\n }`\n } else {\n if (column.charset) c += ' CHARACTER SET \"' + column.charset + '\"'\n if (column.collation) c += ' COLLATE \"' + column.collation + '\"'\n }\n\n if (!column.isNullable) c += \" NOT NULL\"\n if (\n !column.isGenerated &&\n column.default !== undefined &&\n column.default !== null\n )\n c += \" DEFAULT \" + column.default\n\n return c\n }\n /**\n * Change table comment.\n * @param tableOrName\n * @param comment\n */\n changeTableComment(\n tableOrName: Table | string,\n comment?: string,\n ): Promise<void> {\n throw new TypeORMError(\n `cockroachdb driver does not support change table comment.`,\n )\n }\n}\n"]}