typeorm 0.3.29-dev.cc07c90 → 1.0.0-nightly.20260218

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 (1210) hide show
  1. package/README.md +65 -70
  2. package/browser/cache/DbQueryResultCache.js +17 -13
  3. package/browser/cache/DbQueryResultCache.js.map +1 -1
  4. package/browser/cache/QueryResultCache.js +2 -1
  5. package/browser/cache/QueryResultCacheFactory.js +11 -7
  6. package/browser/cache/QueryResultCacheFactory.js.map +1 -1
  7. package/browser/cache/QueryResultCacheOptions.js +2 -1
  8. package/browser/cache/RedisQueryResultCache.js +13 -9
  9. package/browser/cache/RedisQueryResultCache.js.map +1 -1
  10. package/browser/cli-ts-node-commonjs.js +3 -1
  11. package/browser/cli-ts-node-commonjs.js.map +1 -1
  12. package/browser/cli-ts-node-esm.js +4 -2
  13. package/browser/cli-ts-node-esm.js.map +1 -1
  14. package/browser/common/DeepPartial.js +2 -1
  15. package/browser/common/DeepPartial.js.map +1 -1
  16. package/browser/common/EntityTarget.js +2 -1
  17. package/browser/common/MixedList.js +2 -1
  18. package/browser/common/NonNever.js +2 -1
  19. package/browser/common/ObjectLiteral.js +2 -1
  20. package/browser/common/ObjectType.js +2 -1
  21. package/browser/common/PickKeysByType.js +2 -1
  22. package/browser/common/PrimitiveCriteria.js +2 -1
  23. package/browser/common/RelationType.js +2 -1
  24. package/browser/connection/BaseConnectionOptions.js +2 -1
  25. package/browser/connection/Connection.js +6 -2
  26. package/browser/connection/Connection.js.map +1 -1
  27. package/browser/connection/ConnectionManager.js +11 -7
  28. package/browser/connection/ConnectionManager.js.map +1 -1
  29. package/browser/connection/ConnectionMetadataBuilder.js +27 -23
  30. package/browser/connection/ConnectionMetadataBuilder.js.map +1 -1
  31. package/browser/connection/ConnectionOptions.js +2 -1
  32. package/browser/connection/ConnectionOptionsReader.js +55 -30
  33. package/browser/connection/ConnectionOptionsReader.js.map +1 -1
  34. package/browser/connection/options-reader/ConnectionOptionsEnvReader.js +39 -35
  35. package/browser/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
  36. package/browser/container.d.ts +3 -3
  37. package/browser/container.js +9 -5
  38. package/browser/container.js.map +1 -1
  39. package/browser/data-source/BaseDataSourceOptions.js +2 -1
  40. package/browser/data-source/DataSource.d.ts +23 -7
  41. package/browser/data-source/DataSource.js +101 -77
  42. package/browser/data-source/DataSource.js.map +1 -1
  43. package/browser/data-source/DataSourceOptions.js +2 -1
  44. package/browser/data-source/index.js +5 -2
  45. package/browser/data-source/index.js.map +1 -1
  46. package/browser/decorator/Check.js +8 -5
  47. package/browser/decorator/Check.js.map +1 -1
  48. package/browser/decorator/EntityRepository.js +6 -3
  49. package/browser/decorator/EntityRepository.js.map +1 -1
  50. package/browser/decorator/Exclusion.d.ts +3 -2
  51. package/browser/decorator/Exclusion.js +13 -7
  52. package/browser/decorator/Exclusion.js.map +1 -1
  53. package/browser/decorator/ForeignKey.d.ts +9 -0
  54. package/browser/decorator/ForeignKey.js +13 -6
  55. package/browser/decorator/ForeignKey.js.map +1 -1
  56. package/browser/decorator/Generated.js +6 -3
  57. package/browser/decorator/Generated.js.map +1 -1
  58. package/browser/decorator/Index.js +10 -6
  59. package/browser/decorator/Index.js.map +1 -1
  60. package/browser/decorator/Unique.js +9 -6
  61. package/browser/decorator/Unique.js.map +1 -1
  62. package/browser/decorator/columns/Column.js +11 -8
  63. package/browser/decorator/columns/Column.js.map +1 -1
  64. package/browser/decorator/columns/CreateDateColumn.js +6 -3
  65. package/browser/decorator/columns/CreateDateColumn.js.map +1 -1
  66. package/browser/decorator/columns/DeleteDateColumn.js +6 -3
  67. package/browser/decorator/columns/DeleteDateColumn.js.map +1 -1
  68. package/browser/decorator/columns/ObjectIdColumn.js +6 -3
  69. package/browser/decorator/columns/ObjectIdColumn.js.map +1 -1
  70. package/browser/decorator/columns/PrimaryColumn.js +11 -8
  71. package/browser/decorator/columns/PrimaryColumn.js.map +1 -1
  72. package/browser/decorator/columns/PrimaryGeneratedColumn.js +10 -7
  73. package/browser/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
  74. package/browser/decorator/columns/UpdateDateColumn.js +6 -3
  75. package/browser/decorator/columns/UpdateDateColumn.js.map +1 -1
  76. package/browser/decorator/columns/VersionColumn.js +6 -3
  77. package/browser/decorator/columns/VersionColumn.js.map +1 -1
  78. package/browser/decorator/columns/ViewColumn.js +6 -3
  79. package/browser/decorator/columns/ViewColumn.js.map +1 -1
  80. package/browser/decorator/columns/VirtualColumn.js +8 -5
  81. package/browser/decorator/columns/VirtualColumn.js.map +1 -1
  82. package/browser/decorator/entity/ChildEntity.js +7 -4
  83. package/browser/decorator/entity/ChildEntity.js.map +1 -1
  84. package/browser/decorator/entity/Entity.js +8 -5
  85. package/browser/decorator/entity/Entity.js.map +1 -1
  86. package/browser/decorator/entity/TableInheritance.js +6 -3
  87. package/browser/decorator/entity/TableInheritance.js.map +1 -1
  88. package/browser/decorator/entity-view/ViewEntity.js +8 -5
  89. package/browser/decorator/entity-view/ViewEntity.js.map +1 -1
  90. package/browser/decorator/listeners/AfterInsert.js +8 -5
  91. package/browser/decorator/listeners/AfterInsert.js.map +1 -1
  92. package/browser/decorator/listeners/AfterLoad.js +8 -5
  93. package/browser/decorator/listeners/AfterLoad.js.map +1 -1
  94. package/browser/decorator/listeners/AfterRecover.js +8 -5
  95. package/browser/decorator/listeners/AfterRecover.js.map +1 -1
  96. package/browser/decorator/listeners/AfterRemove.js +8 -5
  97. package/browser/decorator/listeners/AfterRemove.js.map +1 -1
  98. package/browser/decorator/listeners/AfterSoftRemove.js +8 -5
  99. package/browser/decorator/listeners/AfterSoftRemove.js.map +1 -1
  100. package/browser/decorator/listeners/AfterUpdate.js +8 -5
  101. package/browser/decorator/listeners/AfterUpdate.js.map +1 -1
  102. package/browser/decorator/listeners/BeforeInsert.js +8 -5
  103. package/browser/decorator/listeners/BeforeInsert.js.map +1 -1
  104. package/browser/decorator/listeners/BeforeRecover.js +8 -5
  105. package/browser/decorator/listeners/BeforeRecover.js.map +1 -1
  106. package/browser/decorator/listeners/BeforeRemove.js +8 -5
  107. package/browser/decorator/listeners/BeforeRemove.js.map +1 -1
  108. package/browser/decorator/listeners/BeforeSoftRemove.js +8 -5
  109. package/browser/decorator/listeners/BeforeSoftRemove.js.map +1 -1
  110. package/browser/decorator/listeners/BeforeUpdate.js +8 -5
  111. package/browser/decorator/listeners/BeforeUpdate.js.map +1 -1
  112. package/browser/decorator/listeners/EventSubscriber.js +6 -3
  113. package/browser/decorator/listeners/EventSubscriber.js.map +1 -1
  114. package/browser/decorator/options/ColumnCommonOptions.js +2 -1
  115. package/browser/decorator/options/ColumnEmbeddedOptions.js +2 -1
  116. package/browser/decorator/options/ColumnEnumOptions.js +2 -1
  117. package/browser/decorator/options/ColumnHstoreOptions.js +2 -1
  118. package/browser/decorator/options/ColumnNumericOptions.js +2 -1
  119. package/browser/decorator/options/ColumnOptions.js +2 -1
  120. package/browser/decorator/options/ColumnUnsignedOptions.js +2 -1
  121. package/browser/decorator/options/ColumnWithLengthOptions.js +2 -1
  122. package/browser/decorator/options/EntityOptions.js +2 -1
  123. package/browser/decorator/options/ExclusionOptions.d.ts +10 -0
  124. package/browser/decorator/options/ExclusionOptions.js +4 -0
  125. package/browser/decorator/options/ExclusionOptions.js.map +1 -0
  126. package/browser/decorator/options/ForeignKeyOptions.js +2 -1
  127. package/browser/decorator/options/IndexOptions.d.ts +7 -0
  128. package/browser/decorator/options/IndexOptions.js +2 -1
  129. package/browser/decorator/options/IndexOptions.js.map +1 -1
  130. package/browser/decorator/options/JoinColumnOptions.js +2 -1
  131. package/browser/decorator/options/JoinTableMultipleColumnsOptions.js +2 -1
  132. package/browser/decorator/options/JoinTableOptions.js +2 -1
  133. package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.js +2 -1
  134. package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.js +2 -1
  135. package/browser/decorator/options/PrimaryGeneratedColumnUUIDOptions.js +2 -1
  136. package/browser/decorator/options/RelationOptions.js +2 -1
  137. package/browser/decorator/options/SpatialColumnOptions.js +2 -1
  138. package/browser/decorator/options/TransactionOptions.js +2 -1
  139. package/browser/decorator/options/UniqueOptions.js +2 -1
  140. package/browser/decorator/options/ValueTransformer.js +2 -1
  141. package/browser/decorator/options/ViewColumnOptions.js +2 -1
  142. package/browser/decorator/options/ViewEntityOptions.js +2 -1
  143. package/browser/decorator/options/VirtualColumnOptions.js +2 -1
  144. package/browser/decorator/relations/JoinColumn.js +6 -3
  145. package/browser/decorator/relations/JoinColumn.js.map +1 -1
  146. package/browser/decorator/relations/JoinTable.js +6 -3
  147. package/browser/decorator/relations/JoinTable.js.map +1 -1
  148. package/browser/decorator/relations/ManyToMany.js +8 -5
  149. package/browser/decorator/relations/ManyToMany.js.map +1 -1
  150. package/browser/decorator/relations/ManyToOne.js +8 -5
  151. package/browser/decorator/relations/ManyToOne.js.map +1 -1
  152. package/browser/decorator/relations/OneToMany.js +6 -3
  153. package/browser/decorator/relations/OneToMany.js.map +1 -1
  154. package/browser/decorator/relations/OneToOne.js +8 -5
  155. package/browser/decorator/relations/OneToOne.js.map +1 -1
  156. package/browser/decorator/relations/RelationCount.js +6 -3
  157. package/browser/decorator/relations/RelationCount.js.map +1 -1
  158. package/browser/decorator/relations/RelationId.js +6 -3
  159. package/browser/decorator/relations/RelationId.js.map +1 -1
  160. package/browser/decorator/tree/Tree.js +6 -3
  161. package/browser/decorator/tree/Tree.js.map +1 -1
  162. package/browser/decorator/tree/TreeChildren.js +6 -3
  163. package/browser/decorator/tree/TreeChildren.js.map +1 -1
  164. package/browser/decorator/tree/TreeLevelColumn.js +6 -3
  165. package/browser/decorator/tree/TreeLevelColumn.js.map +1 -1
  166. package/browser/decorator/tree/TreeParent.js +6 -3
  167. package/browser/decorator/tree/TreeParent.js.map +1 -1
  168. package/browser/driver/Driver.d.ts +11 -0
  169. package/browser/driver/Driver.js +2 -1
  170. package/browser/driver/Driver.js.map +1 -1
  171. package/browser/driver/DriverFactory.d.ts +2 -0
  172. package/browser/driver/DriverFactory.js +46 -40
  173. package/browser/driver/DriverFactory.js.map +1 -1
  174. package/browser/driver/DriverUtils.js +10 -6
  175. package/browser/driver/DriverUtils.js.map +1 -1
  176. package/browser/driver/Query.js +5 -1
  177. package/browser/driver/Query.js.map +1 -1
  178. package/browser/driver/SqlInMemory.js +5 -1
  179. package/browser/driver/SqlInMemory.js.map +1 -1
  180. package/browser/driver/aurora-mysql/AuroraMysqlConnection.js +6 -2
  181. package/browser/driver/aurora-mysql/AuroraMysqlConnection.js.map +1 -1
  182. package/browser/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.js +2 -1
  183. package/browser/driver/aurora-mysql/AuroraMysqlConnectionOptions.d.ts +0 -1
  184. package/browser/driver/aurora-mysql/AuroraMysqlConnectionOptions.js +2 -1
  185. package/browser/driver/aurora-mysql/AuroraMysqlConnectionOptions.js.map +1 -1
  186. package/browser/driver/aurora-mysql/AuroraMysqlDriver.js +57 -40
  187. package/browser/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  188. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts +123 -0
  189. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js +288 -158
  190. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
  191. package/browser/driver/aurora-postgres/AuroraPostgresConnectionOptions.js +2 -1
  192. package/browser/driver/aurora-postgres/AuroraPostgresDriver.js +16 -12
  193. package/browser/driver/aurora-postgres/AuroraPostgresDriver.js.map +1 -1
  194. package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.d.ts +0 -4
  195. package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.js +16 -12
  196. package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
  197. package/browser/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js +2 -1
  198. package/browser/driver/better-sqlite3/BetterSqlite3Driver.d.ts +0 -4
  199. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js +24 -19
  200. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  201. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js +16 -12
  202. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  203. package/browser/driver/capacitor/CapacitorConnectionOptions.js +2 -1
  204. package/browser/driver/capacitor/CapacitorDriver.js +10 -6
  205. package/browser/driver/capacitor/CapacitorDriver.js.map +1 -1
  206. package/browser/driver/capacitor/CapacitorQueryRunner.js +15 -11
  207. package/browser/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
  208. package/browser/driver/cockroachdb/CockroachConnectionCredentialsOptions.js +2 -1
  209. package/browser/driver/cockroachdb/CockroachConnectionOptions.js +2 -1
  210. package/browser/driver/cockroachdb/CockroachConnectionOptions.js.map +1 -1
  211. package/browser/driver/cockroachdb/CockroachDriver.d.ts +2 -2
  212. package/browser/driver/cockroachdb/CockroachDriver.js +61 -47
  213. package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
  214. package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +1 -0
  215. package/browser/driver/cockroachdb/CockroachQueryRunner.js +226 -219
  216. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  217. package/browser/driver/cordova/CordovaConnectionOptions.js +2 -1
  218. package/browser/driver/cordova/CordovaDriver.js +10 -6
  219. package/browser/driver/cordova/CordovaDriver.js.map +1 -1
  220. package/browser/driver/cordova/CordovaQueryRunner.d.ts +9 -3
  221. package/browser/driver/cordova/CordovaQueryRunner.js +30 -19
  222. package/browser/driver/cordova/CordovaQueryRunner.js.map +1 -1
  223. package/browser/driver/expo/ExpoConnectionOptions.js +2 -1
  224. package/browser/driver/expo/ExpoDriver.d.ts +1 -0
  225. package/browser/driver/expo/ExpoDriver.js +15 -4
  226. package/browser/driver/expo/ExpoDriver.js.map +1 -1
  227. package/browser/driver/expo/ExpoQueryRunner.js +16 -12
  228. package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
  229. package/browser/driver/mongodb/MongoConnectionOptions.js +2 -1
  230. package/browser/driver/mongodb/MongoDriver.js +35 -31
  231. package/browser/driver/mongodb/MongoDriver.js.map +1 -1
  232. package/browser/driver/mongodb/MongoQueryRunner.d.ts +1 -0
  233. package/browser/driver/mongodb/MongoQueryRunner.js +72 -65
  234. package/browser/driver/mongodb/MongoQueryRunner.js.map +1 -1
  235. package/browser/driver/mongodb/bson.typings.js +2 -1
  236. package/browser/driver/mongodb/typings.d.ts +7 -1
  237. package/browser/driver/mongodb/typings.js +22 -22
  238. package/browser/driver/mongodb/typings.js.map +1 -1
  239. package/browser/driver/mysql/MysqlConnectionCredentialsOptions.js +2 -1
  240. package/browser/driver/mysql/MysqlConnectionOptions.d.ts +1 -8
  241. package/browser/driver/mysql/MysqlConnectionOptions.js +2 -1
  242. package/browser/driver/mysql/MysqlConnectionOptions.js.map +1 -1
  243. package/browser/driver/mysql/MysqlDriver.d.ts +0 -8
  244. package/browser/driver/mysql/MysqlDriver.js +84 -128
  245. package/browser/driver/mysql/MysqlDriver.js.map +1 -1
  246. package/browser/driver/mysql/MysqlQueryRunner.js +194 -187
  247. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  248. package/browser/driver/nativescript/NativescriptConnectionOptions.js +2 -1
  249. package/browser/driver/nativescript/NativescriptDriver.js +10 -6
  250. package/browser/driver/nativescript/NativescriptDriver.js.map +1 -1
  251. package/browser/driver/nativescript/NativescriptQueryRunner.js +14 -10
  252. package/browser/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  253. package/browser/driver/oracle/OracleConnectionCredentialsOptions.js +2 -1
  254. package/browser/driver/oracle/OracleConnectionOptions.js +2 -1
  255. package/browser/driver/oracle/OracleConnectionOptions.js.map +1 -1
  256. package/browser/driver/oracle/OracleDriver.d.ts +2 -2
  257. package/browser/driver/oracle/OracleDriver.js +50 -43
  258. package/browser/driver/oracle/OracleDriver.js.map +1 -1
  259. package/browser/driver/oracle/OracleQueryRunner.d.ts +129 -0
  260. package/browser/driver/oracle/OracleQueryRunner.js +305 -169
  261. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  262. package/browser/driver/postgres/PostgresConnectionCredentialsOptions.js +2 -1
  263. package/browser/driver/postgres/PostgresConnectionOptions.d.ts +4 -1
  264. package/browser/driver/postgres/PostgresConnectionOptions.js +2 -1
  265. package/browser/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  266. package/browser/driver/postgres/PostgresDriver.d.ts +12 -2
  267. package/browser/driver/postgres/PostgresDriver.js +144 -52
  268. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  269. package/browser/driver/postgres/PostgresQueryRunner.d.ts +166 -0
  270. package/browser/driver/postgres/PostgresQueryRunner.js +490 -280
  271. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  272. package/browser/driver/react-native/ReactNativeConnectionOptions.d.ts +4 -0
  273. package/browser/driver/react-native/ReactNativeConnectionOptions.js +2 -1
  274. package/browser/driver/react-native/ReactNativeConnectionOptions.js.map +1 -1
  275. package/browser/driver/react-native/ReactNativeDriver.js +38 -33
  276. package/browser/driver/react-native/ReactNativeDriver.js.map +1 -1
  277. package/browser/driver/react-native/ReactNativeQueryRunner.js +16 -12
  278. package/browser/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  279. package/browser/driver/sap/SapConnectionCredentialsOptions.js +2 -1
  280. package/browser/driver/sap/SapConnectionOptions.d.ts +8 -1
  281. package/browser/driver/sap/SapConnectionOptions.js +2 -1
  282. package/browser/driver/sap/SapConnectionOptions.js.map +1 -1
  283. package/browser/driver/sap/SapDriver.js +54 -54
  284. package/browser/driver/sap/SapDriver.js.map +1 -1
  285. package/browser/driver/sap/SapQueryRunner.js +176 -169
  286. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  287. package/browser/driver/spanner/SpannerConnectionCredentialsOptions.js +2 -1
  288. package/browser/driver/spanner/SpannerConnectionOptions.js +2 -1
  289. package/browser/driver/spanner/SpannerConnectionOptions.js.map +1 -1
  290. package/browser/driver/spanner/SpannerDriver.d.ts +2 -2
  291. package/browser/driver/spanner/SpannerDriver.js +33 -29
  292. package/browser/driver/spanner/SpannerDriver.js.map +1 -1
  293. package/browser/driver/spanner/SpannerQueryRunner.d.ts +123 -0
  294. package/browser/driver/spanner/SpannerQueryRunner.js +255 -125
  295. package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -1
  296. package/browser/driver/sqlite/SqliteConnectionOptions.js +2 -1
  297. package/browser/driver/sqlite/SqliteDriver.d.ts +0 -4
  298. package/browser/driver/sqlite/SqliteDriver.js +22 -17
  299. package/browser/driver/sqlite/SqliteDriver.js.map +1 -1
  300. package/browser/driver/sqlite/SqliteQueryRunner.js +18 -14
  301. package/browser/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  302. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +41 -33
  303. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  304. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +113 -0
  305. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +232 -115
  306. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  307. package/browser/driver/sqljs/SqljsConnectionOptions.js +2 -1
  308. package/browser/driver/sqljs/SqljsDriver.js +31 -27
  309. package/browser/driver/sqljs/SqljsDriver.js.map +1 -1
  310. package/browser/driver/sqljs/SqljsQueryRunner.js +16 -12
  311. package/browser/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  312. package/browser/driver/sqlserver/MssqlParameter.d.ts +0 -1
  313. package/browser/driver/sqlserver/MssqlParameter.js +5 -2
  314. package/browser/driver/sqlserver/MssqlParameter.js.map +1 -1
  315. package/browser/driver/sqlserver/SqlServerConnectionCredentialsOptions.js +2 -1
  316. package/browser/driver/sqlserver/SqlServerConnectionOptions.js +2 -1
  317. package/browser/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
  318. package/browser/driver/sqlserver/SqlServerDriver.d.ts +2 -2
  319. package/browser/driver/sqlserver/SqlServerDriver.js +58 -54
  320. package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
  321. package/browser/driver/sqlserver/SqlServerQueryRunner.d.ts +141 -0
  322. package/browser/driver/sqlserver/SqlServerQueryRunner.js +358 -210
  323. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  324. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js +2 -1
  325. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryDefaultAuthentication.js +2 -1
  326. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js +2 -1
  327. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js +2 -1
  328. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js +2 -1
  329. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.js +2 -1
  330. package/browser/driver/sqlserver/authentication/DefaultAuthentication.js +2 -1
  331. package/browser/driver/sqlserver/authentication/NtlmAuthentication.js +2 -1
  332. package/browser/driver/types/ColumnTypes.js +2 -1
  333. package/browser/driver/types/CteCapabilities.js +2 -1
  334. package/browser/driver/types/DataTypeDefaults.js +2 -1
  335. package/browser/driver/types/DatabaseType.js +2 -1
  336. package/browser/driver/types/GeoJsonTypes.js +2 -1
  337. package/browser/driver/types/IsolationLevel.js +2 -1
  338. package/browser/driver/types/MappedColumnTypes.js +2 -1
  339. package/browser/driver/types/MetadataTableType.js +5 -2
  340. package/browser/driver/types/MetadataTableType.js.map +1 -1
  341. package/browser/driver/types/ReplicationMode.js +2 -1
  342. package/browser/driver/types/UpsertType.js +2 -1
  343. package/browser/entity-manager/EntityManager.d.ts +82 -8
  344. package/browser/entity-manager/EntityManager.js +197 -86
  345. package/browser/entity-manager/EntityManager.js.map +1 -1
  346. package/browser/entity-manager/EntityManagerFactory.js +11 -7
  347. package/browser/entity-manager/EntityManagerFactory.js.map +1 -1
  348. package/browser/entity-manager/MongoEntityManager.js +29 -25
  349. package/browser/entity-manager/MongoEntityManager.js.map +1 -1
  350. package/browser/entity-manager/SqljsEntityManager.js +6 -2
  351. package/browser/entity-manager/SqljsEntityManager.js.map +1 -1
  352. package/browser/entity-schema/EntitySchema.js +5 -1
  353. package/browser/entity-schema/EntitySchema.js.map +1 -1
  354. package/browser/entity-schema/EntitySchemaCheckOptions.js +2 -1
  355. package/browser/entity-schema/EntitySchemaColumnForeignKeyOptions.js +2 -1
  356. package/browser/entity-schema/EntitySchemaColumnOptions.js +2 -1
  357. package/browser/entity-schema/EntitySchemaEmbeddedColumnOptions.js +5 -1
  358. package/browser/entity-schema/EntitySchemaEmbeddedColumnOptions.js.map +1 -1
  359. package/browser/entity-schema/EntitySchemaEmbeddedError.js +6 -2
  360. package/browser/entity-schema/EntitySchemaEmbeddedError.js.map +1 -1
  361. package/browser/entity-schema/EntitySchemaExclusionOptions.d.ts +5 -0
  362. package/browser/entity-schema/EntitySchemaExclusionOptions.js +2 -1
  363. package/browser/entity-schema/EntitySchemaExclusionOptions.js.map +1 -1
  364. package/browser/entity-schema/EntitySchemaForeignKeyOptions.js +2 -1
  365. package/browser/entity-schema/EntitySchemaIndexOptions.js +2 -1
  366. package/browser/entity-schema/EntitySchemaInheritanceOptions.js +2 -1
  367. package/browser/entity-schema/EntitySchemaOptions.js +5 -1
  368. package/browser/entity-schema/EntitySchemaOptions.js.map +1 -1
  369. package/browser/entity-schema/EntitySchemaRelationIdOptions.js +2 -1
  370. package/browser/entity-schema/EntitySchemaRelationOptions.js +2 -1
  371. package/browser/entity-schema/EntitySchemaTransformer.js +10 -5
  372. package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
  373. package/browser/entity-schema/EntitySchemaUniqueOptions.js +2 -1
  374. package/browser/error/AlreadyHasActiveConnectionError.js +6 -2
  375. package/browser/error/AlreadyHasActiveConnectionError.js.map +1 -1
  376. package/browser/error/CannotAttachTreeChildrenEntityError.js +6 -2
  377. package/browser/error/CannotAttachTreeChildrenEntityError.js.map +1 -1
  378. package/browser/error/CannotConnectAlreadyConnectedError.js +6 -2
  379. package/browser/error/CannotConnectAlreadyConnectedError.js.map +1 -1
  380. package/browser/error/CannotCreateEntityIdMapError.js +6 -2
  381. package/browser/error/CannotCreateEntityIdMapError.js.map +1 -1
  382. package/browser/error/CannotDetermineEntityError.js +6 -2
  383. package/browser/error/CannotDetermineEntityError.js.map +1 -1
  384. package/browser/error/CannotExecuteNotConnectedError.js +6 -2
  385. package/browser/error/CannotExecuteNotConnectedError.js.map +1 -1
  386. package/browser/error/CannotGetEntityManagerNotConnectedError.js +6 -2
  387. package/browser/error/CannotGetEntityManagerNotConnectedError.js.map +1 -1
  388. package/browser/error/CannotReflectMethodParameterTypeError.js +6 -2
  389. package/browser/error/CannotReflectMethodParameterTypeError.js.map +1 -1
  390. package/browser/error/CircularRelationsError.js +6 -2
  391. package/browser/error/CircularRelationsError.js.map +1 -1
  392. package/browser/error/ColumnTypeUndefinedError.js +6 -2
  393. package/browser/error/ColumnTypeUndefinedError.js.map +1 -1
  394. package/browser/error/ConnectionIsNotSetError.js +6 -2
  395. package/browser/error/ConnectionIsNotSetError.js.map +1 -1
  396. package/browser/error/ConnectionNotFoundError.js +6 -2
  397. package/browser/error/ConnectionNotFoundError.js.map +1 -1
  398. package/browser/error/CustomRepositoryCannotInheritRepositoryError.js +6 -2
  399. package/browser/error/CustomRepositoryCannotInheritRepositoryError.js.map +1 -1
  400. package/browser/error/CustomRepositoryDoesNotHaveEntityError.js +6 -2
  401. package/browser/error/CustomRepositoryDoesNotHaveEntityError.js.map +1 -1
  402. package/browser/error/CustomRepositoryNotFoundError.js +6 -2
  403. package/browser/error/CustomRepositoryNotFoundError.js.map +1 -1
  404. package/browser/error/DataTypeNotSupportedError.js +6 -2
  405. package/browser/error/DataTypeNotSupportedError.js.map +1 -1
  406. package/browser/error/DriverOptionNotSetError.js +6 -2
  407. package/browser/error/DriverOptionNotSetError.js.map +1 -1
  408. package/browser/error/DriverPackageNotInstalledError.js +6 -2
  409. package/browser/error/DriverPackageNotInstalledError.js.map +1 -1
  410. package/browser/error/EntityMetadataNotFoundError.js +10 -6
  411. package/browser/error/EntityMetadataNotFoundError.js.map +1 -1
  412. package/browser/error/EntityNotFoundError.js +10 -6
  413. package/browser/error/EntityNotFoundError.js.map +1 -1
  414. package/browser/error/EntityPropertyNotFoundError.js +6 -2
  415. package/browser/error/EntityPropertyNotFoundError.js.map +1 -1
  416. package/browser/error/FindRelationsNotFoundError.js +6 -2
  417. package/browser/error/FindRelationsNotFoundError.js.map +1 -1
  418. package/browser/error/ForbiddenTransactionModeOverrideError.js +6 -2
  419. package/browser/error/ForbiddenTransactionModeOverrideError.js.map +1 -1
  420. package/browser/error/InitializedRelationError.js +6 -2
  421. package/browser/error/InitializedRelationError.js.map +1 -1
  422. package/browser/error/InsertValuesMissingError.js +6 -2
  423. package/browser/error/InsertValuesMissingError.js.map +1 -1
  424. package/browser/error/LimitOnUpdateNotSupportedError.js +6 -2
  425. package/browser/error/LimitOnUpdateNotSupportedError.js.map +1 -1
  426. package/browser/error/LockNotSupportedOnGivenDriverError.js +6 -2
  427. package/browser/error/LockNotSupportedOnGivenDriverError.js.map +1 -1
  428. package/browser/error/MetadataAlreadyExistsError.js +6 -2
  429. package/browser/error/MetadataAlreadyExistsError.js.map +1 -1
  430. package/browser/error/MetadataWithSuchNameAlreadyExistsError.js +6 -2
  431. package/browser/error/MetadataWithSuchNameAlreadyExistsError.js.map +1 -1
  432. package/browser/error/MissingDeleteDateColumnError.js +6 -2
  433. package/browser/error/MissingDeleteDateColumnError.js.map +1 -1
  434. package/browser/error/MissingDriverError.js +6 -2
  435. package/browser/error/MissingDriverError.js.map +1 -1
  436. package/browser/error/MissingJoinColumnError.js +6 -2
  437. package/browser/error/MissingJoinColumnError.js.map +1 -1
  438. package/browser/error/MissingJoinTableError.js +6 -2
  439. package/browser/error/MissingJoinTableError.js.map +1 -1
  440. package/browser/error/MissingPrimaryColumnError.js +6 -2
  441. package/browser/error/MissingPrimaryColumnError.js.map +1 -1
  442. package/browser/error/MustBeEntityError.js +6 -2
  443. package/browser/error/MustBeEntityError.js.map +1 -1
  444. package/browser/error/NestedSetMultipleRootError.js +6 -2
  445. package/browser/error/NestedSetMultipleRootError.js.map +1 -1
  446. package/browser/error/NoConnectionForRepositoryError.js +6 -2
  447. package/browser/error/NoConnectionForRepositoryError.js.map +1 -1
  448. package/browser/error/NoConnectionOptionError.js +6 -2
  449. package/browser/error/NoConnectionOptionError.js.map +1 -1
  450. package/browser/error/NoNeedToReleaseEntityManagerError.js +6 -2
  451. package/browser/error/NoNeedToReleaseEntityManagerError.js.map +1 -1
  452. package/browser/error/NoVersionOrUpdateDateColumnError.js +6 -2
  453. package/browser/error/NoVersionOrUpdateDateColumnError.js.map +1 -1
  454. package/browser/error/OffsetWithoutLimitNotSupportedError.js +6 -2
  455. package/browser/error/OffsetWithoutLimitNotSupportedError.js.map +1 -1
  456. package/browser/error/OptimisticLockCanNotBeUsedError.js +6 -2
  457. package/browser/error/OptimisticLockCanNotBeUsedError.js.map +1 -1
  458. package/browser/error/OptimisticLockVersionMismatchError.js +6 -2
  459. package/browser/error/OptimisticLockVersionMismatchError.js.map +1 -1
  460. package/browser/error/PersistedEntityNotFoundError.js +6 -2
  461. package/browser/error/PersistedEntityNotFoundError.js.map +1 -1
  462. package/browser/error/PessimisticLockTransactionRequiredError.js +6 -2
  463. package/browser/error/PessimisticLockTransactionRequiredError.js.map +1 -1
  464. package/browser/error/PrimaryColumnCannotBeNullableError.js +6 -2
  465. package/browser/error/PrimaryColumnCannotBeNullableError.js.map +1 -1
  466. package/browser/error/QueryFailedError.js +8 -4
  467. package/browser/error/QueryFailedError.js.map +1 -1
  468. package/browser/error/QueryRunnerAlreadyReleasedError.js +6 -2
  469. package/browser/error/QueryRunnerAlreadyReleasedError.js.map +1 -1
  470. package/browser/error/QueryRunnerProviderAlreadyReleasedError.js +6 -2
  471. package/browser/error/QueryRunnerProviderAlreadyReleasedError.js.map +1 -1
  472. package/browser/error/RepositoryNotTreeError.js +10 -6
  473. package/browser/error/RepositoryNotTreeError.js.map +1 -1
  474. package/browser/error/ReturningStatementNotSupportedError.js +6 -2
  475. package/browser/error/ReturningStatementNotSupportedError.js.map +1 -1
  476. package/browser/error/SubjectRemovedAndUpdatedError.js +6 -2
  477. package/browser/error/SubjectRemovedAndUpdatedError.js.map +1 -1
  478. package/browser/error/SubjectWithoutIdentifierError.js +6 -2
  479. package/browser/error/SubjectWithoutIdentifierError.js.map +1 -1
  480. package/browser/error/TransactionAlreadyStartedError.js +6 -2
  481. package/browser/error/TransactionAlreadyStartedError.js.map +1 -1
  482. package/browser/error/TransactionNotStartedError.js +6 -2
  483. package/browser/error/TransactionNotStartedError.js.map +1 -1
  484. package/browser/error/TreeRepositoryNotSupportedError.js +6 -2
  485. package/browser/error/TreeRepositoryNotSupportedError.js.map +1 -1
  486. package/browser/error/TypeORMError.js +5 -1
  487. package/browser/error/TypeORMError.js.map +1 -1
  488. package/browser/error/UpdateValuesMissingError.js +6 -2
  489. package/browser/error/UpdateValuesMissingError.js.map +1 -1
  490. package/browser/error/UsingJoinColumnIsNotAllowedError.js +6 -2
  491. package/browser/error/UsingJoinColumnIsNotAllowedError.js.map +1 -1
  492. package/browser/error/UsingJoinColumnOnlyOnOneSideAllowedError.js +6 -2
  493. package/browser/error/UsingJoinColumnOnlyOnOneSideAllowedError.js.map +1 -1
  494. package/browser/error/UsingJoinTableIsNotAllowedError.js +6 -2
  495. package/browser/error/UsingJoinTableIsNotAllowedError.js.map +1 -1
  496. package/browser/error/UsingJoinTableOnlyOnOneSideAllowedError.js +6 -2
  497. package/browser/error/UsingJoinTableOnlyOnOneSideAllowedError.js.map +1 -1
  498. package/browser/error/index.js +64 -61
  499. package/browser/error/index.js.map +1 -1
  500. package/browser/find-options/EqualOperator.js +6 -2
  501. package/browser/find-options/EqualOperator.js.map +1 -1
  502. package/browser/find-options/FindManyOptions.js +2 -1
  503. package/browser/find-options/FindOneOptions.js +2 -1
  504. package/browser/find-options/FindOperator.js +15 -11
  505. package/browser/find-options/FindOperator.js.map +1 -1
  506. package/browser/find-options/FindOperatorType.js +2 -1
  507. package/browser/find-options/FindOptionsOrder.js +2 -1
  508. package/browser/find-options/FindOptionsOrder.js.map +1 -1
  509. package/browser/find-options/FindOptionsRelations.d.ts +0 -1
  510. package/browser/find-options/FindOptionsRelations.js +2 -1
  511. package/browser/find-options/FindOptionsRelations.js.map +1 -1
  512. package/browser/find-options/FindOptionsSelect.d.ts +0 -1
  513. package/browser/find-options/FindOptionsSelect.js +2 -1
  514. package/browser/find-options/FindOptionsSelect.js.map +1 -1
  515. package/browser/find-options/FindOptionsUtils.js +12 -8
  516. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  517. package/browser/find-options/FindOptionsWhere.js +2 -1
  518. package/browser/find-options/FindOptionsWhere.js.map +1 -1
  519. package/browser/find-options/FindTreeOptions.js +2 -1
  520. package/browser/find-options/JoinOptions.js +2 -1
  521. package/browser/find-options/OrderByCondition.js +2 -1
  522. package/browser/find-options/mongodb/MongoFindManyOptions.js +2 -1
  523. package/browser/find-options/mongodb/MongoFindManyOptions.js.map +1 -1
  524. package/browser/find-options/mongodb/MongoFindOneOptions.js +2 -1
  525. package/browser/find-options/operator/And.js +6 -3
  526. package/browser/find-options/operator/And.js.map +1 -1
  527. package/browser/find-options/operator/Any.js +6 -3
  528. package/browser/find-options/operator/Any.js.map +1 -1
  529. package/browser/find-options/operator/ArrayContainedBy.js +6 -3
  530. package/browser/find-options/operator/ArrayContainedBy.js.map +1 -1
  531. package/browser/find-options/operator/ArrayContains.js +6 -3
  532. package/browser/find-options/operator/ArrayContains.js.map +1 -1
  533. package/browser/find-options/operator/ArrayOverlap.js +6 -3
  534. package/browser/find-options/operator/ArrayOverlap.js.map +1 -1
  535. package/browser/find-options/operator/Between.js +6 -3
  536. package/browser/find-options/operator/Between.js.map +1 -1
  537. package/browser/find-options/operator/Equal.js +6 -3
  538. package/browser/find-options/operator/Equal.js.map +1 -1
  539. package/browser/find-options/operator/ILike.js +6 -3
  540. package/browser/find-options/operator/ILike.js.map +1 -1
  541. package/browser/find-options/operator/In.js +6 -3
  542. package/browser/find-options/operator/In.js.map +1 -1
  543. package/browser/find-options/operator/IsNull.js +6 -3
  544. package/browser/find-options/operator/IsNull.js.map +1 -1
  545. package/browser/find-options/operator/JsonContains.js +6 -3
  546. package/browser/find-options/operator/JsonContains.js.map +1 -1
  547. package/browser/find-options/operator/LessThan.js +6 -3
  548. package/browser/find-options/operator/LessThan.js.map +1 -1
  549. package/browser/find-options/operator/LessThanOrEqual.js +6 -3
  550. package/browser/find-options/operator/LessThanOrEqual.js.map +1 -1
  551. package/browser/find-options/operator/Like.js +6 -3
  552. package/browser/find-options/operator/Like.js.map +1 -1
  553. package/browser/find-options/operator/MoreThan.js +6 -3
  554. package/browser/find-options/operator/MoreThan.js.map +1 -1
  555. package/browser/find-options/operator/MoreThanOrEqual.js +6 -3
  556. package/browser/find-options/operator/MoreThanOrEqual.js.map +1 -1
  557. package/browser/find-options/operator/Not.js +6 -3
  558. package/browser/find-options/operator/Not.js.map +1 -1
  559. package/browser/find-options/operator/Or.js +6 -3
  560. package/browser/find-options/operator/Or.js.map +1 -1
  561. package/browser/find-options/operator/Raw.js +7 -4
  562. package/browser/find-options/operator/Raw.js.map +1 -1
  563. package/browser/globals.js +42 -26
  564. package/browser/globals.js.map +1 -1
  565. package/browser/index.d.ts +3 -0
  566. package/browser/index.js +189 -158
  567. package/browser/index.js.map +1 -1
  568. package/browser/logger/AbstractLogger.js +8 -4
  569. package/browser/logger/AbstractLogger.js.map +1 -1
  570. package/browser/logger/AdvancedConsoleLogger.js +14 -10
  571. package/browser/logger/AdvancedConsoleLogger.js.map +1 -1
  572. package/browser/logger/DebugLogger.js +16 -12
  573. package/browser/logger/DebugLogger.js.map +1 -1
  574. package/browser/logger/FileLogger.js +12 -7
  575. package/browser/logger/FileLogger.js.map +1 -1
  576. package/browser/logger/FormattedConsoleLogger.js +14 -10
  577. package/browser/logger/FormattedConsoleLogger.js.map +1 -1
  578. package/browser/logger/Logger.js +2 -1
  579. package/browser/logger/LoggerFactory.js +18 -14
  580. package/browser/logger/LoggerFactory.js.map +1 -1
  581. package/browser/logger/LoggerOptions.js +2 -1
  582. package/browser/logger/SimpleConsoleLogger.js +6 -2
  583. package/browser/logger/SimpleConsoleLogger.js.map +1 -1
  584. package/browser/metadata/CheckMetadata.js +5 -1
  585. package/browser/metadata/CheckMetadata.js.map +1 -1
  586. package/browser/metadata/ColumnMetadata.js +42 -28
  587. package/browser/metadata/ColumnMetadata.js.map +1 -1
  588. package/browser/metadata/EmbeddedMetadata.js +7 -3
  589. package/browser/metadata/EmbeddedMetadata.js.map +1 -1
  590. package/browser/metadata/EntityListenerMetadata.js +5 -1
  591. package/browser/metadata/EntityListenerMetadata.js.map +1 -1
  592. package/browser/metadata/EntityMetadata.d.ts +34 -2
  593. package/browser/metadata/EntityMetadata.js +53 -17
  594. package/browser/metadata/EntityMetadata.js.map +1 -1
  595. package/browser/metadata/ExclusionMetadata.d.ts +5 -0
  596. package/browser/metadata/ExclusionMetadata.js +6 -1
  597. package/browser/metadata/ExclusionMetadata.js.map +1 -1
  598. package/browser/metadata/ForeignKeyMetadata.js +5 -1
  599. package/browser/metadata/ForeignKeyMetadata.js.map +1 -1
  600. package/browser/metadata/IndexMetadata.d.ts +7 -0
  601. package/browser/metadata/IndexMetadata.js +18 -4
  602. package/browser/metadata/IndexMetadata.js.map +1 -1
  603. package/browser/metadata/RelationCountMetadata.js +7 -3
  604. package/browser/metadata/RelationCountMetadata.js.map +1 -1
  605. package/browser/metadata/RelationIdMetadata.js +7 -3
  606. package/browser/metadata/RelationIdMetadata.js.map +1 -1
  607. package/browser/metadata/RelationMetadata.js +17 -13
  608. package/browser/metadata/RelationMetadata.js.map +1 -1
  609. package/browser/metadata/UniqueMetadata.js +7 -3
  610. package/browser/metadata/UniqueMetadata.js.map +1 -1
  611. package/browser/metadata/types/ClosureTreeOptions.js +2 -1
  612. package/browser/metadata/types/DeferrableType.js +2 -1
  613. package/browser/metadata/types/EventListenerTypes.js +16 -12
  614. package/browser/metadata/types/EventListenerTypes.js.map +1 -1
  615. package/browser/metadata/types/OnDeleteType.js +2 -1
  616. package/browser/metadata/types/OnUpdateType.js +2 -1
  617. package/browser/metadata/types/PropertyTypeInFunction.js +2 -1
  618. package/browser/metadata/types/RelationTypeInFunction.js +2 -1
  619. package/browser/metadata/types/RelationTypes.js +2 -1
  620. package/browser/metadata/types/TableTypes.js +2 -1
  621. package/browser/metadata/types/TreeTypes.js +2 -1
  622. package/browser/metadata-args/CheckMetadataArgs.js +2 -1
  623. package/browser/metadata-args/ColumnMetadataArgs.js +2 -1
  624. package/browser/metadata-args/DiscriminatorValueMetadataArgs.js +2 -1
  625. package/browser/metadata-args/EmbeddedMetadataArgs.js +2 -1
  626. package/browser/metadata-args/EntityListenerMetadataArgs.js +2 -1
  627. package/browser/metadata-args/EntityRepositoryMetadataArgs.js +2 -1
  628. package/browser/metadata-args/EntitySubscriberMetadataArgs.js +2 -1
  629. package/browser/metadata-args/ExclusionMetadataArgs.d.ts +5 -0
  630. package/browser/metadata-args/ExclusionMetadataArgs.js +2 -1
  631. package/browser/metadata-args/ExclusionMetadataArgs.js.map +1 -1
  632. package/browser/metadata-args/ForeignKeyMetadataArgs.js +2 -1
  633. package/browser/metadata-args/GeneratedMetadataArgs.js +2 -1
  634. package/browser/metadata-args/IndexMetadataArgs.d.ts +7 -0
  635. package/browser/metadata-args/IndexMetadataArgs.js +2 -1
  636. package/browser/metadata-args/IndexMetadataArgs.js.map +1 -1
  637. package/browser/metadata-args/InheritanceMetadataArgs.js +2 -1
  638. package/browser/metadata-args/JoinColumnMetadataArgs.js +2 -1
  639. package/browser/metadata-args/JoinTableMetadataArgs.js +2 -1
  640. package/browser/metadata-args/MetadataArgsStorage.js +7 -3
  641. package/browser/metadata-args/MetadataArgsStorage.js.map +1 -1
  642. package/browser/metadata-args/NamingStrategyMetadataArgs.js +2 -1
  643. package/browser/metadata-args/RelationCountMetadataArgs.js +2 -1
  644. package/browser/metadata-args/RelationIdMetadataArgs.js +2 -1
  645. package/browser/metadata-args/RelationMetadataArgs.js +2 -1
  646. package/browser/metadata-args/TableMetadataArgs.js +2 -1
  647. package/browser/metadata-args/TransactionEntityMetadataArgs.js +2 -1
  648. package/browser/metadata-args/TransactionRepositoryMetadataArgs.js +2 -1
  649. package/browser/metadata-args/TreeMetadataArgs.js +2 -1
  650. package/browser/metadata-args/UniqueMetadataArgs.js +2 -1
  651. package/browser/metadata-args/types/ColumnMode.js +2 -1
  652. package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js +17 -13
  653. package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
  654. package/browser/metadata-builder/EntityMetadataBuilder.d.ts +10 -0
  655. package/browser/metadata-builder/EntityMetadataBuilder.js +87 -73
  656. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  657. package/browser/metadata-builder/EntityMetadataValidator.js +35 -31
  658. package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
  659. package/browser/metadata-builder/JunctionEntityMetadataBuilder.d.ts +6 -0
  660. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +28 -18
  661. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  662. package/browser/metadata-builder/MetadataUtils.js +5 -1
  663. package/browser/metadata-builder/MetadataUtils.js.map +1 -1
  664. package/browser/metadata-builder/RelationJoinColumnBuilder.js +17 -13
  665. package/browser/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  666. package/browser/migration/Migration.js +5 -1
  667. package/browser/migration/Migration.js.map +1 -1
  668. package/browser/migration/MigrationExecutor.d.ts +14 -1
  669. package/browser/migration/MigrationExecutor.js +47 -22
  670. package/browser/migration/MigrationExecutor.js.map +1 -1
  671. package/browser/migration/MigrationInterface.js +2 -1
  672. package/browser/naming-strategy/DefaultNamingStrategy.js +20 -16
  673. package/browser/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  674. package/browser/naming-strategy/LegacyOracleNamingStrategy.js +11 -7
  675. package/browser/naming-strategy/LegacyOracleNamingStrategy.js.map +1 -1
  676. package/browser/naming-strategy/NamingStrategyInterface.js +2 -1
  677. package/browser/persistence/EntityPersistExecutor.js +26 -22
  678. package/browser/persistence/EntityPersistExecutor.js.map +1 -1
  679. package/browser/persistence/Subject.js +11 -7
  680. package/browser/persistence/Subject.js.map +1 -1
  681. package/browser/persistence/SubjectChangeMap.js +2 -1
  682. package/browser/persistence/SubjectChangedColumnsComputer.d.ts +4 -0
  683. package/browser/persistence/SubjectChangedColumnsComputer.js +38 -28
  684. package/browser/persistence/SubjectChangedColumnsComputer.js.map +1 -1
  685. package/browser/persistence/SubjectDatabaseEntityLoader.d.ts +1 -0
  686. package/browser/persistence/SubjectDatabaseEntityLoader.js +12 -4
  687. package/browser/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  688. package/browser/persistence/SubjectExecutor.d.ts +3 -0
  689. package/browser/persistence/SubjectExecutor.js +53 -38
  690. package/browser/persistence/SubjectExecutor.js.map +1 -1
  691. package/browser/persistence/SubjectTopologicalSorter.js +8 -4
  692. package/browser/persistence/SubjectTopologicalSorter.js.map +1 -1
  693. package/browser/persistence/subject-builder/CascadesSubjectBuilder.js +9 -5
  694. package/browser/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  695. package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js +14 -10
  696. package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  697. package/browser/persistence/subject-builder/OneToManySubjectBuilder.js +12 -8
  698. package/browser/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  699. package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +10 -6
  700. package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
  701. package/browser/persistence/tree/ClosureSubjectExecutor.js +10 -6
  702. package/browser/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  703. package/browser/persistence/tree/MaterializedPathSubjectExecutor.js +13 -8
  704. package/browser/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  705. package/browser/persistence/tree/NestedSetSubjectExecutor.js +12 -8
  706. package/browser/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
  707. package/browser/platform/BrowserConnectionOptionsReaderDummy.js +11 -4
  708. package/browser/platform/BrowserConnectionOptionsReaderDummy.js.map +1 -1
  709. package/browser/platform/BrowserDirectoryExportedClassesLoader.d.ts +0 -4
  710. package/browser/platform/BrowserDirectoryExportedClassesLoader.js +4 -7
  711. package/browser/platform/BrowserDirectoryExportedClassesLoader.js.map +1 -1
  712. package/browser/platform/BrowserDisabledDriversDummy.js +31 -14
  713. package/browser/platform/BrowserDisabledDriversDummy.js.map +1 -1
  714. package/browser/platform/BrowserFileLoggerDummy.js +7 -2
  715. package/browser/platform/BrowserFileLoggerDummy.js.map +1 -1
  716. package/browser/platform/BrowserPlatformTools.js +18 -11
  717. package/browser/platform/BrowserPlatformTools.js.map +1 -1
  718. package/browser/platform/PlatformTools.d.ts +13 -1
  719. package/browser/platform/PlatformTools.js +64 -45
  720. package/browser/platform/PlatformTools.js.map +1 -1
  721. package/browser/query-builder/Alias.js +9 -5
  722. package/browser/query-builder/Alias.js.map +1 -1
  723. package/browser/query-builder/Brackets.js +5 -1
  724. package/browser/query-builder/Brackets.js.map +1 -1
  725. package/browser/query-builder/DeleteQueryBuilder.js +12 -8
  726. package/browser/query-builder/DeleteQueryBuilder.js.map +1 -1
  727. package/browser/query-builder/InsertOrUpdateOptions.js +2 -1
  728. package/browser/query-builder/InsertQueryBuilder.d.ts +12 -1
  729. package/browser/query-builder/InsertQueryBuilder.js +202 -85
  730. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  731. package/browser/query-builder/JoinAttribute.js +18 -14
  732. package/browser/query-builder/JoinAttribute.js.map +1 -1
  733. package/browser/query-builder/JoinOptions.js +2 -1
  734. package/browser/query-builder/NotBrackets.js +6 -2
  735. package/browser/query-builder/NotBrackets.js.map +1 -1
  736. package/browser/query-builder/QueryBuilder.d.ts +26 -1
  737. package/browser/query-builder/QueryBuilder.js +86 -49
  738. package/browser/query-builder/QueryBuilder.js.map +1 -1
  739. package/browser/query-builder/QueryBuilderCte.js +2 -1
  740. package/browser/query-builder/QueryBuilderUtils.js +5 -1
  741. package/browser/query-builder/QueryBuilderUtils.js.map +1 -1
  742. package/browser/query-builder/QueryExpressionMap.d.ts +5 -0
  743. package/browser/query-builder/QueryExpressionMap.js +21 -14
  744. package/browser/query-builder/QueryExpressionMap.js.map +1 -1
  745. package/browser/query-builder/QueryPartialEntity.js +2 -1
  746. package/browser/query-builder/QueryPartialEntity.js.map +1 -1
  747. package/browser/query-builder/RelationIdLoader.d.ts +18 -1
  748. package/browser/query-builder/RelationIdLoader.js +42 -21
  749. package/browser/query-builder/RelationIdLoader.js.map +1 -1
  750. package/browser/query-builder/RelationLoader.js +10 -6
  751. package/browser/query-builder/RelationLoader.js.map +1 -1
  752. package/browser/query-builder/RelationQueryBuilder.js +25 -21
  753. package/browser/query-builder/RelationQueryBuilder.js.map +1 -1
  754. package/browser/query-builder/RelationRemover.js +10 -6
  755. package/browser/query-builder/RelationRemover.js.map +1 -1
  756. package/browser/query-builder/RelationUpdater.js +13 -9
  757. package/browser/query-builder/RelationUpdater.js.map +1 -1
  758. package/browser/query-builder/ReturningOption.d.ts +4 -0
  759. package/browser/query-builder/ReturningOption.js +4 -0
  760. package/browser/query-builder/ReturningOption.js.map +1 -0
  761. package/browser/query-builder/ReturningResultsEntityUpdator.js +8 -4
  762. package/browser/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
  763. package/browser/query-builder/SelectQuery.js +2 -1
  764. package/browser/query-builder/SelectQueryBuilder.d.ts +47 -8
  765. package/browser/query-builder/SelectQueryBuilder.js +301 -165
  766. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  767. package/browser/query-builder/SelectQueryBuilderOption.js +2 -1
  768. package/browser/query-builder/SoftDeleteQueryBuilder.js +34 -23
  769. package/browser/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  770. package/browser/query-builder/UpdateQueryBuilder.js +26 -22
  771. package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
  772. package/browser/query-builder/WhereClause.js +2 -1
  773. package/browser/query-builder/WhereExpressionBuilder.js +2 -1
  774. package/browser/query-builder/index.js +17 -14
  775. package/browser/query-builder/index.js.map +1 -1
  776. package/browser/query-builder/relation-count/RelationCountAttribute.js +18 -14
  777. package/browser/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
  778. package/browser/query-builder/relation-count/RelationCountLoadResult.js +2 -1
  779. package/browser/query-builder/relation-count/RelationCountLoader.js +5 -1
  780. package/browser/query-builder/relation-count/RelationCountLoader.js.map +1 -1
  781. package/browser/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js +7 -3
  782. package/browser/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js.map +1 -1
  783. package/browser/query-builder/relation-id/RelationIdAttribute.js +16 -12
  784. package/browser/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
  785. package/browser/query-builder/relation-id/RelationIdLoadResult.js +2 -1
  786. package/browser/query-builder/relation-id/RelationIdLoader.js +14 -10
  787. package/browser/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  788. package/browser/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js +7 -3
  789. package/browser/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js.map +1 -1
  790. package/browser/query-builder/result/DeleteResult.js +5 -1
  791. package/browser/query-builder/result/DeleteResult.js.map +1 -1
  792. package/browser/query-builder/result/InsertResult.js +5 -1
  793. package/browser/query-builder/result/InsertResult.js.map +1 -1
  794. package/browser/query-builder/result/UpdateResult.js +5 -1
  795. package/browser/query-builder/result/UpdateResult.js.map +1 -1
  796. package/browser/query-builder/transformer/DocumentToEntityTransformer.js +5 -1
  797. package/browser/query-builder/transformer/DocumentToEntityTransformer.js.map +1 -1
  798. package/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js +5 -1
  799. package/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
  800. package/browser/query-builder/transformer/PlainObjectToNewEntityTransformer.js +8 -4
  801. package/browser/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
  802. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.d.ts +14 -0
  803. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js +53 -19
  804. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  805. package/browser/query-runner/BaseQueryRunner.d.ts +12 -1
  806. package/browser/query-runner/BaseQueryRunner.js +35 -20
  807. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  808. package/browser/query-runner/QueryLock.js +5 -1
  809. package/browser/query-runner/QueryLock.js.map +1 -1
  810. package/browser/query-runner/QueryResult.js +5 -1
  811. package/browser/query-runner/QueryResult.js.map +1 -1
  812. package/browser/query-runner/QueryRunner.d.ts +2 -1
  813. package/browser/query-runner/QueryRunner.js +2 -1
  814. package/browser/query-runner/QueryRunner.js.map +1 -1
  815. package/browser/repository/AbstractRepository.js +13 -9
  816. package/browser/repository/AbstractRepository.js.map +1 -1
  817. package/browser/repository/BaseEntity.d.ts +2 -1
  818. package/browser/repository/BaseEntity.js +9 -5
  819. package/browser/repository/BaseEntity.js.map +1 -1
  820. package/browser/repository/EntityId.js +2 -1
  821. package/browser/repository/FindTreesOptions.js +2 -1
  822. package/browser/repository/MongoRepository.js +9 -5
  823. package/browser/repository/MongoRepository.js.map +1 -1
  824. package/browser/repository/RemoveOptions.js +2 -1
  825. package/browser/repository/Repository.d.ts +3 -2
  826. package/browser/repository/Repository.js +11 -7
  827. package/browser/repository/Repository.js.map +1 -1
  828. package/browser/repository/SaveOptions.js +2 -1
  829. package/browser/repository/TreeRepository.js +23 -19
  830. package/browser/repository/TreeRepository.js.map +1 -1
  831. package/browser/repository/UpdateOptions.d.ts +11 -0
  832. package/browser/repository/UpdateOptions.js +4 -0
  833. package/browser/repository/UpdateOptions.js.map +1 -0
  834. package/browser/repository/UpsertOptions.d.ts +6 -0
  835. package/browser/repository/UpsertOptions.js +2 -1
  836. package/browser/repository/UpsertOptions.js.map +1 -1
  837. package/browser/schema-builder/MongoSchemaBuilder.js +7 -3
  838. package/browser/schema-builder/MongoSchemaBuilder.js.map +1 -1
  839. package/browser/schema-builder/RdbmsSchemaBuilder.d.ts +1 -0
  840. package/browser/schema-builder/RdbmsSchemaBuilder.js +74 -67
  841. package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  842. package/browser/schema-builder/SchemaBuilder.js +2 -1
  843. package/browser/schema-builder/options/TableCheckOptions.js +2 -1
  844. package/browser/schema-builder/options/TableColumnOptions.js +2 -1
  845. package/browser/schema-builder/options/TableExclusionOptions.d.ts +5 -0
  846. package/browser/schema-builder/options/TableExclusionOptions.js +2 -1
  847. package/browser/schema-builder/options/TableExclusionOptions.js.map +1 -1
  848. package/browser/schema-builder/options/TableForeignKeyOptions.js +2 -1
  849. package/browser/schema-builder/options/TableIndexOptions.d.ts +7 -0
  850. package/browser/schema-builder/options/TableIndexOptions.js +2 -1
  851. package/browser/schema-builder/options/TableIndexOptions.js.map +1 -1
  852. package/browser/schema-builder/options/TableIndexTypes.d.ts +1 -0
  853. package/browser/schema-builder/options/TableIndexTypes.js +4 -0
  854. package/browser/schema-builder/options/TableIndexTypes.js.map +1 -0
  855. package/browser/schema-builder/options/TableOptions.js +2 -1
  856. package/browser/schema-builder/options/TableUniqueOptions.js +2 -1
  857. package/browser/schema-builder/options/ViewOptions.js +2 -1
  858. package/browser/schema-builder/table/Table.js +23 -19
  859. package/browser/schema-builder/table/Table.js.map +1 -1
  860. package/browser/schema-builder/table/TableCheck.js +5 -1
  861. package/browser/schema-builder/table/TableCheck.js.map +1 -1
  862. package/browser/schema-builder/table/TableColumn.js +5 -1
  863. package/browser/schema-builder/table/TableColumn.js.map +1 -1
  864. package/browser/schema-builder/table/TableExclusion.d.ts +5 -0
  865. package/browser/schema-builder/table/TableExclusion.js +8 -1
  866. package/browser/schema-builder/table/TableExclusion.js.map +1 -1
  867. package/browser/schema-builder/table/TableForeignKey.js +5 -1
  868. package/browser/schema-builder/table/TableForeignKey.js.map +1 -1
  869. package/browser/schema-builder/table/TableIndex.d.ts +7 -0
  870. package/browser/schema-builder/table/TableIndex.js +8 -1
  871. package/browser/schema-builder/table/TableIndex.js.map +1 -1
  872. package/browser/schema-builder/table/TableUnique.js +5 -1
  873. package/browser/schema-builder/table/TableUnique.js.map +1 -1
  874. package/browser/schema-builder/util/TableUtils.js +5 -1
  875. package/browser/schema-builder/util/TableUtils.js.map +1 -1
  876. package/browser/schema-builder/util/ViewUtils.js +5 -1
  877. package/browser/schema-builder/util/ViewUtils.js.map +1 -1
  878. package/browser/schema-builder/view/View.js +5 -1
  879. package/browser/schema-builder/view/View.js.map +1 -1
  880. package/browser/subscriber/Broadcaster.js +9 -5
  881. package/browser/subscriber/Broadcaster.js.map +1 -1
  882. package/browser/subscriber/BroadcasterResult.js +5 -1
  883. package/browser/subscriber/BroadcasterResult.js.map +1 -1
  884. package/browser/subscriber/EntitySubscriberInterface.js +2 -1
  885. package/browser/subscriber/event/InsertEvent.js +2 -1
  886. package/browser/subscriber/event/LoadEvent.js +2 -1
  887. package/browser/subscriber/event/QueryEvent.js +2 -1
  888. package/browser/subscriber/event/RecoverEvent.js +2 -1
  889. package/browser/subscriber/event/RemoveEvent.js +2 -1
  890. package/browser/subscriber/event/SoftRemoveEvent.js +2 -1
  891. package/browser/subscriber/event/TransactionCommitEvent.js +2 -1
  892. package/browser/subscriber/event/TransactionRollbackEvent.js +2 -1
  893. package/browser/subscriber/event/TransactionStartEvent.js +2 -1
  894. package/browser/subscriber/event/UpdateEvent.js +2 -1
  895. package/browser/util/ApplyValueTransformers.js +5 -1
  896. package/browser/util/ApplyValueTransformers.js.map +1 -1
  897. package/browser/util/DateUtils.d.ts +10 -0
  898. package/browser/util/DateUtils.js +37 -9
  899. package/browser/util/DateUtils.js.map +1 -1
  900. package/browser/util/DepGraph.d.ts +16 -0
  901. package/browser/util/DepGraph.js +29 -10
  902. package/browser/util/DepGraph.js.map +1 -1
  903. package/browser/util/DirectoryExportedClassesLoader.d.ts +0 -4
  904. package/browser/util/DirectoryExportedClassesLoader.js +14 -22
  905. package/browser/util/DirectoryExportedClassesLoader.js.map +1 -1
  906. package/browser/util/ImportUtils.js +14 -10
  907. package/browser/util/ImportUtils.js.map +1 -1
  908. package/browser/util/InstanceChecker.js +5 -1
  909. package/browser/util/InstanceChecker.js.map +1 -1
  910. package/browser/util/ObjectUtils.js +5 -1
  911. package/browser/util/ObjectUtils.js.map +1 -1
  912. package/browser/util/OrmUtils.d.ts +25 -1
  913. package/browser/util/OrmUtils.js +55 -13
  914. package/browser/util/OrmUtils.js.map +1 -1
  915. package/browser/util/PathUtils.js +10 -5
  916. package/browser/util/PathUtils.js.map +1 -1
  917. package/browser/util/RandomGenerator.d.ts +10 -0
  918. package/browser/util/RandomGenerator.js +107 -67
  919. package/browser/util/RandomGenerator.js.map +1 -1
  920. package/browser/util/SqlTagUtils.js +7 -3
  921. package/browser/util/SqlTagUtils.js.map +1 -1
  922. package/browser/util/StringUtils.d.ts +13 -8
  923. package/browser/util/StringUtils.js +48 -20
  924. package/browser/util/StringUtils.js.map +1 -1
  925. package/browser/util/TreeRepositoryUtils.js +5 -1
  926. package/browser/util/TreeRepositoryUtils.js.map +1 -1
  927. package/browser/util/VersionUtils.js +5 -1
  928. package/browser/util/VersionUtils.js.map +1 -1
  929. package/browser/util/escapeRegExp.js +5 -1
  930. package/browser/util/escapeRegExp.js.map +1 -1
  931. package/cache/DbQueryResultCache.js +2 -2
  932. package/cache/DbQueryResultCache.js.map +1 -1
  933. package/cli.js +18 -17
  934. package/cli.js.map +1 -1
  935. package/commands/CommandUtils.d.ts +6 -0
  936. package/commands/CommandUtils.js +8 -1
  937. package/commands/CommandUtils.js.map +1 -1
  938. package/commands/InitCommand.js +13 -13
  939. package/commands/InitCommand.js.map +1 -1
  940. package/commands/MigrationRunCommand.js +4 -4
  941. package/commands/MigrationRunCommand.js.map +1 -1
  942. package/commands/VersionCommand.js.map +1 -1
  943. package/common/DeepPartial.js.map +1 -1
  944. package/connection/ConnectionOptionsReader.js +32 -12
  945. package/connection/ConnectionOptionsReader.js.map +1 -1
  946. package/container.d.ts +3 -3
  947. package/container.js +3 -3
  948. package/container.js.map +1 -1
  949. package/data-source/DataSource.d.ts +23 -7
  950. package/data-source/DataSource.js +26 -6
  951. package/data-source/DataSource.js.map +1 -1
  952. package/decorator/Exclusion.d.ts +3 -2
  953. package/decorator/Exclusion.js +6 -3
  954. package/decorator/Exclusion.js.map +1 -1
  955. package/decorator/ForeignKey.d.ts +9 -0
  956. package/decorator/ForeignKey.js +4 -0
  957. package/decorator/ForeignKey.js.map +1 -1
  958. package/decorator/Index.js +1 -0
  959. package/decorator/Index.js.map +1 -1
  960. package/decorator/options/ExclusionOptions.d.ts +10 -0
  961. package/decorator/options/ExclusionOptions.js +4 -0
  962. package/decorator/options/ExclusionOptions.js.map +1 -0
  963. package/decorator/options/IndexOptions.d.ts +7 -0
  964. package/decorator/options/IndexOptions.js.map +1 -1
  965. package/driver/Driver.d.ts +11 -0
  966. package/driver/Driver.js.map +1 -1
  967. package/driver/DriverFactory.d.ts +2 -0
  968. package/driver/DriverFactory.js +4 -2
  969. package/driver/DriverFactory.js.map +1 -1
  970. package/driver/Query.js.map +1 -1
  971. package/driver/aurora-mysql/AuroraMysqlConnectionOptions.d.ts +0 -1
  972. package/driver/aurora-mysql/AuroraMysqlConnectionOptions.js.map +1 -1
  973. package/driver/aurora-mysql/AuroraMysqlDriver.js +18 -5
  974. package/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  975. package/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts +123 -0
  976. package/driver/aurora-mysql/AuroraMysqlQueryRunner.js +126 -0
  977. package/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
  978. package/driver/aurora-postgres/AuroraPostgresDriver.js.map +1 -1
  979. package/driver/aurora-postgres/AuroraPostgresQueryRunner.d.ts +0 -4
  980. package/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
  981. package/driver/better-sqlite3/BetterSqlite3Driver.d.ts +0 -4
  982. package/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  983. package/driver/capacitor/CapacitorDriver.js.map +1 -1
  984. package/driver/cockroachdb/CockroachConnectionOptions.js.map +1 -1
  985. package/driver/cockroachdb/CockroachDriver.d.ts +2 -2
  986. package/driver/cockroachdb/CockroachDriver.js +13 -3
  987. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  988. package/driver/cockroachdb/CockroachQueryRunner.d.ts +1 -0
  989. package/driver/cockroachdb/CockroachQueryRunner.js +9 -6
  990. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  991. package/driver/cordova/CordovaDriver.js.map +1 -1
  992. package/driver/cordova/CordovaQueryRunner.d.ts +9 -3
  993. package/driver/cordova/CordovaQueryRunner.js +10 -3
  994. package/driver/cordova/CordovaQueryRunner.js.map +1 -1
  995. package/driver/expo/ExpoDriver.d.ts +1 -0
  996. package/driver/expo/ExpoDriver.js +7 -0
  997. package/driver/expo/ExpoDriver.js.map +1 -1
  998. package/driver/mongodb/MongoQueryRunner.d.ts +1 -0
  999. package/driver/mongodb/MongoQueryRunner.js +3 -0
  1000. package/driver/mongodb/MongoQueryRunner.js.map +1 -1
  1001. package/driver/mongodb/typings.d.ts +7 -1
  1002. package/driver/mongodb/typings.js.map +1 -1
  1003. package/driver/mysql/MysqlConnectionOptions.d.ts +1 -8
  1004. package/driver/mysql/MysqlConnectionOptions.js.map +1 -1
  1005. package/driver/mysql/MysqlDriver.d.ts +0 -8
  1006. package/driver/mysql/MysqlDriver.js +33 -81
  1007. package/driver/mysql/MysqlDriver.js.map +1 -1
  1008. package/driver/mysql/MysqlQueryRunner.js +5 -2
  1009. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  1010. package/driver/oracle/OracleConnectionOptions.js.map +1 -1
  1011. package/driver/oracle/OracleDriver.d.ts +2 -2
  1012. package/driver/oracle/OracleDriver.js +8 -5
  1013. package/driver/oracle/OracleDriver.js.map +1 -1
  1014. package/driver/oracle/OracleQueryRunner.d.ts +129 -0
  1015. package/driver/oracle/OracleQueryRunner.js +132 -0
  1016. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  1017. package/driver/postgres/PostgresConnectionOptions.d.ts +4 -1
  1018. package/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  1019. package/driver/postgres/PostgresDriver.d.ts +12 -2
  1020. package/driver/postgres/PostgresDriver.js +96 -8
  1021. package/driver/postgres/PostgresDriver.js.map +1 -1
  1022. package/driver/postgres/PostgresQueryRunner.d.ts +166 -0
  1023. package/driver/postgres/PostgresQueryRunner.js +244 -38
  1024. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  1025. package/driver/react-native/ReactNativeConnectionOptions.d.ts +4 -0
  1026. package/driver/react-native/ReactNativeConnectionOptions.js.map +1 -1
  1027. package/driver/react-native/ReactNativeDriver.js +1 -0
  1028. package/driver/react-native/ReactNativeDriver.js.map +1 -1
  1029. package/driver/sap/SapConnectionOptions.d.ts +8 -1
  1030. package/driver/sap/SapConnectionOptions.js.map +1 -1
  1031. package/driver/sap/SapDriver.js +4 -8
  1032. package/driver/sap/SapDriver.js.map +1 -1
  1033. package/driver/sap/SapQueryRunner.js +3 -0
  1034. package/driver/sap/SapQueryRunner.js.map +1 -1
  1035. package/driver/spanner/SpannerConnectionOptions.js.map +1 -1
  1036. package/driver/spanner/SpannerDriver.d.ts +2 -2
  1037. package/driver/spanner/SpannerDriver.js +1 -1
  1038. package/driver/spanner/SpannerDriver.js.map +1 -1
  1039. package/driver/spanner/SpannerQueryRunner.d.ts +123 -0
  1040. package/driver/spanner/SpannerQueryRunner.js +126 -0
  1041. package/driver/spanner/SpannerQueryRunner.js.map +1 -1
  1042. package/driver/sqlite/SqliteDriver.d.ts +0 -4
  1043. package/driver/sqlite/SqliteDriver.js.map +1 -1
  1044. package/driver/sqlite-abstract/AbstractSqliteDriver.js +4 -0
  1045. package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  1046. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +113 -0
  1047. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +114 -1
  1048. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  1049. package/driver/sqljs/SqljsDriver.js.map +1 -1
  1050. package/driver/sqlserver/MssqlParameter.d.ts +0 -1
  1051. package/driver/sqlserver/MssqlParameter.js +0 -1
  1052. package/driver/sqlserver/MssqlParameter.js.map +1 -1
  1053. package/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
  1054. package/driver/sqlserver/SqlServerDriver.d.ts +2 -2
  1055. package/driver/sqlserver/SqlServerDriver.js +1 -1
  1056. package/driver/sqlserver/SqlServerDriver.js.map +1 -1
  1057. package/driver/sqlserver/SqlServerQueryRunner.d.ts +141 -0
  1058. package/driver/sqlserver/SqlServerQueryRunner.js +144 -0
  1059. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  1060. package/entity-manager/EntityManager.d.ts +82 -8
  1061. package/entity-manager/EntityManager.js +126 -19
  1062. package/entity-manager/EntityManager.js.map +1 -1
  1063. package/entity-schema/EntitySchemaExclusionOptions.d.ts +5 -0
  1064. package/entity-schema/EntitySchemaExclusionOptions.js.map +1 -1
  1065. package/entity-schema/EntitySchemaTransformer.js +1 -0
  1066. package/entity-schema/EntitySchemaTransformer.js.map +1 -1
  1067. package/find-options/FindOptionsOrder.js.map +1 -1
  1068. package/find-options/FindOptionsRelations.d.ts +0 -1
  1069. package/find-options/FindOptionsRelations.js.map +1 -1
  1070. package/find-options/FindOptionsSelect.d.ts +0 -1
  1071. package/find-options/FindOptionsSelect.js.map +1 -1
  1072. package/find-options/FindOptionsWhere.js.map +1 -1
  1073. package/find-options/mongodb/MongoFindManyOptions.js.map +1 -1
  1074. package/index.d.ts +3 -0
  1075. package/index.js +1 -0
  1076. package/index.js.map +1 -1
  1077. package/metadata/ColumnMetadata.js +21 -11
  1078. package/metadata/ColumnMetadata.js.map +1 -1
  1079. package/metadata/EntityMetadata.d.ts +34 -2
  1080. package/metadata/EntityMetadata.js +34 -2
  1081. package/metadata/EntityMetadata.js.map +1 -1
  1082. package/metadata/ExclusionMetadata.d.ts +5 -0
  1083. package/metadata/ExclusionMetadata.js +1 -0
  1084. package/metadata/ExclusionMetadata.js.map +1 -1
  1085. package/metadata/IndexMetadata.d.ts +7 -0
  1086. package/metadata/IndexMetadata.js +11 -1
  1087. package/metadata/IndexMetadata.js.map +1 -1
  1088. package/metadata/types/EventListenerTypes.js +11 -11
  1089. package/metadata/types/EventListenerTypes.js.map +1 -1
  1090. package/metadata-args/ExclusionMetadataArgs.d.ts +5 -0
  1091. package/metadata-args/ExclusionMetadataArgs.js.map +1 -1
  1092. package/metadata-args/IndexMetadataArgs.d.ts +7 -0
  1093. package/metadata-args/IndexMetadataArgs.js.map +1 -1
  1094. package/metadata-builder/EntityMetadataBuilder.d.ts +10 -0
  1095. package/metadata-builder/EntityMetadataBuilder.js +10 -0
  1096. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  1097. package/metadata-builder/JunctionEntityMetadataBuilder.d.ts +6 -0
  1098. package/metadata-builder/JunctionEntityMetadataBuilder.js +6 -0
  1099. package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  1100. package/migration/MigrationExecutor.d.ts +14 -1
  1101. package/migration/MigrationExecutor.js +24 -3
  1102. package/migration/MigrationExecutor.js.map +1 -1
  1103. package/package.json +192 -1
  1104. package/persistence/SubjectChangedColumnsComputer.d.ts +4 -0
  1105. package/persistence/SubjectChangedColumnsComputer.js +6 -0
  1106. package/persistence/SubjectChangedColumnsComputer.js.map +1 -1
  1107. package/persistence/SubjectDatabaseEntityLoader.d.ts +1 -0
  1108. package/persistence/SubjectDatabaseEntityLoader.js +5 -1
  1109. package/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  1110. package/persistence/SubjectExecutor.d.ts +3 -0
  1111. package/persistence/SubjectExecutor.js +11 -0
  1112. package/persistence/SubjectExecutor.js.map +1 -1
  1113. package/persistence/tree/MaterializedPathSubjectExecutor.js +1 -0
  1114. package/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  1115. package/platform/PlatformTools.d.ts +13 -1
  1116. package/platform/PlatformTools.js +17 -7
  1117. package/platform/PlatformTools.js.map +1 -1
  1118. package/query-builder/InsertQueryBuilder.d.ts +12 -1
  1119. package/query-builder/InsertQueryBuilder.js +157 -44
  1120. package/query-builder/InsertQueryBuilder.js.map +1 -1
  1121. package/query-builder/QueryBuilder.d.ts +26 -1
  1122. package/query-builder/QueryBuilder.js +43 -10
  1123. package/query-builder/QueryBuilder.js.map +1 -1
  1124. package/query-builder/QueryExpressionMap.d.ts +5 -0
  1125. package/query-builder/QueryExpressionMap.js +3 -0
  1126. package/query-builder/QueryExpressionMap.js.map +1 -1
  1127. package/query-builder/QueryPartialEntity.js.map +1 -1
  1128. package/query-builder/RelationIdLoader.d.ts +18 -1
  1129. package/query-builder/RelationIdLoader.js +29 -12
  1130. package/query-builder/RelationIdLoader.js.map +1 -1
  1131. package/query-builder/ReturningOption.d.ts +4 -0
  1132. package/query-builder/ReturningOption.js +4 -0
  1133. package/query-builder/ReturningOption.js.map +1 -0
  1134. package/query-builder/SelectQueryBuilder.d.ts +47 -8
  1135. package/query-builder/SelectQueryBuilder.js +175 -43
  1136. package/query-builder/SelectQueryBuilder.js.map +1 -1
  1137. package/query-builder/SoftDeleteQueryBuilder.js +7 -0
  1138. package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  1139. package/query-builder/transformer/RawSqlResultsToEntityTransformer.d.ts +14 -0
  1140. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js +42 -12
  1141. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  1142. package/query-runner/BaseQueryRunner.d.ts +12 -1
  1143. package/query-runner/BaseQueryRunner.js +11 -0
  1144. package/query-runner/BaseQueryRunner.js.map +1 -1
  1145. package/query-runner/QueryRunner.d.ts +2 -1
  1146. package/query-runner/QueryRunner.js.map +1 -1
  1147. package/repository/BaseEntity.d.ts +2 -1
  1148. package/repository/BaseEntity.js +2 -2
  1149. package/repository/BaseEntity.js.map +1 -1
  1150. package/repository/MongoRepository.js.map +1 -1
  1151. package/repository/Repository.d.ts +3 -2
  1152. package/repository/Repository.js +4 -4
  1153. package/repository/Repository.js.map +1 -1
  1154. package/repository/UpdateOptions.d.ts +11 -0
  1155. package/repository/UpdateOptions.js +4 -0
  1156. package/repository/UpdateOptions.js.map +1 -0
  1157. package/repository/UpsertOptions.d.ts +6 -0
  1158. package/repository/UpsertOptions.js.map +1 -1
  1159. package/schema-builder/RdbmsSchemaBuilder.d.ts +1 -0
  1160. package/schema-builder/RdbmsSchemaBuilder.js +37 -34
  1161. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  1162. package/schema-builder/options/TableExclusionOptions.d.ts +5 -0
  1163. package/schema-builder/options/TableExclusionOptions.js.map +1 -1
  1164. package/schema-builder/options/TableIndexOptions.d.ts +7 -0
  1165. package/schema-builder/options/TableIndexOptions.js.map +1 -1
  1166. package/schema-builder/options/TableIndexTypes.d.ts +1 -0
  1167. package/schema-builder/options/TableIndexTypes.js +4 -0
  1168. package/schema-builder/options/TableIndexTypes.js.map +1 -0
  1169. package/schema-builder/table/TableExclusion.d.ts +5 -0
  1170. package/schema-builder/table/TableExclusion.js +3 -0
  1171. package/schema-builder/table/TableExclusion.js.map +1 -1
  1172. package/schema-builder/table/TableIndex.d.ts +7 -0
  1173. package/schema-builder/table/TableIndex.js +3 -0
  1174. package/schema-builder/table/TableIndex.js.map +1 -1
  1175. package/util/DateUtils.d.ts +10 -0
  1176. package/util/DateUtils.js +29 -6
  1177. package/util/DateUtils.js.map +1 -1
  1178. package/util/DepGraph.d.ts +16 -0
  1179. package/util/DepGraph.js +16 -1
  1180. package/util/DepGraph.js.map +1 -1
  1181. package/util/DirectoryExportedClassesLoader.d.ts +0 -4
  1182. package/util/DirectoryExportedClassesLoader.js +3 -16
  1183. package/util/DirectoryExportedClassesLoader.js.map +1 -1
  1184. package/util/OrmUtils.d.ts +25 -1
  1185. package/util/OrmUtils.js +50 -12
  1186. package/util/OrmUtils.js.map +1 -1
  1187. package/util/RandomGenerator.d.ts +10 -0
  1188. package/util/RandomGenerator.js +102 -66
  1189. package/util/RandomGenerator.js.map +1 -1
  1190. package/util/StringUtils.d.ts +13 -8
  1191. package/util/StringUtils.js +34 -15
  1192. package/util/StringUtils.js.map +1 -1
  1193. package/browser/driver/expo/ExpoDriverFactory.d.ts +0 -9
  1194. package/browser/driver/expo/ExpoDriverFactory.js +0 -18
  1195. package/browser/driver/expo/ExpoDriverFactory.js.map +0 -1
  1196. package/browser/driver/expo/legacy/ExpoLegacyDriver.d.ts +0 -21
  1197. package/browser/driver/expo/legacy/ExpoLegacyDriver.js +0 -71
  1198. package/browser/driver/expo/legacy/ExpoLegacyDriver.js.map +0 -1
  1199. package/browser/driver/expo/legacy/ExpoLegacyQueryRunner.d.ts +0 -57
  1200. package/browser/driver/expo/legacy/ExpoLegacyQueryRunner.js +0 -165
  1201. package/browser/driver/expo/legacy/ExpoLegacyQueryRunner.js.map +0 -1
  1202. package/driver/expo/ExpoDriverFactory.d.ts +0 -9
  1203. package/driver/expo/ExpoDriverFactory.js +0 -22
  1204. package/driver/expo/ExpoDriverFactory.js.map +0 -1
  1205. package/driver/expo/legacy/ExpoLegacyDriver.d.ts +0 -21
  1206. package/driver/expo/legacy/ExpoLegacyDriver.js +0 -75
  1207. package/driver/expo/legacy/ExpoLegacyDriver.js.map +0 -1
  1208. package/driver/expo/legacy/ExpoLegacyQueryRunner.d.ts +0 -57
  1209. package/driver/expo/legacy/ExpoLegacyQueryRunner.js +0 -169
  1210. package/driver/expo/legacy/ExpoLegacyQueryRunner.js.map +0 -1
package/README.md CHANGED
@@ -12,20 +12,15 @@
12
12
  <a href="https://www.npmjs.com/package/typeorm"><img src="https://img.shields.io/npm/dm/typeorm" alt="NPM Downloads"/></a>
13
13
  <a href="https://github.com/typeorm/typeorm/actions/workflows/tests.yml?query=branch%3Amaster"><img src="https://github.com/typeorm/typeorm/actions/workflows/tests.yml/badge.svg?branch=master" alt="Commit Validation"/></a>
14
14
  <a href="https://coveralls.io/github/typeorm/typeorm?branch=master"><img src="https://coveralls.io/repos/github/typeorm/typeorm/badge.svg?branch=master" alt="Coverage Status"/></a>
15
+ <a href='https://dashboard.stryker-mutator.io/reports/github.com/typeorm/typeorm/master'><img src='https://img.shields.io/endpoint?style=flat&url=https%3A%2F%2Fbadge-api.stryker-mutator.io%2Fgithub.com%2Ftypeorm%2Ftypeorm%2Fmaster' alt='Mutation testing badge' /></a>
15
16
  <a href=""><img src="https://img.shields.io/badge/License-MIT-teal.svg" alt="MIT License"/></a>
16
17
  <br>
17
18
  <br>
18
19
  </div>
19
20
 
20
- TypeORM is an [ORM](https://en.wikipedia.org/wiki/Object-relational_mapping)
21
- that can run in Node.js, Browser, Cordova, Ionic, React Native, NativeScript, Expo, and Electron platforms
22
- and can be used with TypeScript and JavaScript (ES2021).
23
- Its goal is to always support the latest JavaScript features and provide additional features
24
- that help you to develop any kind of application that uses databases - from
25
- small applications with a few tables to large-scale enterprise applications
26
- with multiple databases.
21
+ TypeORM is an [ORM](https://en.wikipedia.org/wiki/Object-relational_mapping) that can run in Node.js, Browser, Cordova, Ionic, React Native, NativeScript, Expo, and Electron platforms and can be used with TypeScript and JavaScript (ES2023). Its goal is to always support the latest JavaScript features and provide additional features that help you to develop any kind of application that uses databases - from small applications with a few tables to large-scale enterprise applications with multiple databases.
27
22
 
28
- TypeORM supports more databases than any other JS/TS ORM: [Google Spanner](./docs/docs/drivers/google-spanner.md), [Microsoft SqlServer](./docs/docs/drivers/microsoft-sqlserver.md), [MySQL/MariaDB](./docs/docs/drivers/mysql.md), [MongoDB](./docs/docs/drivers/mongodb.md), [Oracle](./docs/docs/drivers/oracle.md), [Postgres](./docs/docs/drivers/postgres.md), [SAP HANA](./docs/docs/drivers/sap.md) and [SQLite](./docs/docs/drivers/sqlite.md), as well we derived databases and different drivers.
23
+ TypeORM supports more databases than any other JS/TS ORM: [Google Spanner](./docs/docs/drivers/google-spanner.md), [Microsoft SqlServer](./docs/docs/drivers/microsoft-sqlserver.md), [MySQL/MariaDB](./docs/docs/drivers/mysql.md), [MongoDB](./docs/docs/drivers/mongodb.md), [Oracle](./docs/docs/drivers/oracle.md), [Postgres](./docs/docs/drivers/postgres.md), [SAP HANA](./docs/docs/drivers/sap.md) and [SQLite](./docs/docs/drivers/sqlite.md), as well as derived databases and different drivers.
29
24
 
30
25
  TypeORM supports both [Active Record](./docs/docs/guides/1-active-record-data-mapper.md#what-is-the-active-record-pattern) and [Data Mapper](./docs/docs/guides/1-active-record-data-mapper.md#what-is-the-data-mapper-pattern) patterns, unlike all other JavaScript ORMs currently in existence, which means you can write high-quality, loosely coupled, scalable, maintainable applications in the most productive way.
31
26
 
@@ -34,42 +29,42 @@ TypeORM is highly influenced by other ORMs, such as [Hibernate](http://hibernate
34
29
 
35
30
  ## Features
36
31
 
37
- - Supports both [DataMapper](./docs/docs/guides/1-active-record-data-mapper.md#what-is-the-data-mapper-pattern) and [ActiveRecord](./docs/docs/guides/1-active-record-data-mapper.md#what-is-the-active-record-pattern) (your choice).
38
- - Entities and columns.
39
- - Database-specific column types.
40
- - Entity manager.
41
- - Repositories and custom repositories.
42
- - Clean object-relational model.
43
- - Associations (relations).
44
- - Eager and lazy relations.
45
- - Unidirectional, bidirectional, and self-referenced relations.
46
- - Supports multiple inheritance patterns.
47
- - Cascades.
48
- - Indices.
49
- - Transactions.
50
- - Migrations and automatic migrations generation.
51
- - Connection pooling.
52
- - Replication.
53
- - Using multiple database instances.
54
- - Working with multiple database types.
55
- - Cross-database and cross-schema queries.
56
- - Elegant-syntax, flexible and powerful QueryBuilder.
57
- - Left and inner joins.
58
- - Proper pagination for queries using joins.
59
- - Query caching.
60
- - Streaming raw results.
61
- - Logging.
62
- - Listeners and subscribers (hooks).
63
- - Supports closure table pattern.
64
- - Schema declaration in models or separate configuration files.
65
- - Supports MySQL / MariaDB / Postgres / CockroachDB / SQLite / Microsoft SQL Server / Oracle / SAP Hana / sql.js.
66
- - Supports MongoDB NoSQL database.
67
- - Works in Node.js / Browser / Ionic / Cordova / React Native / NativeScript / Expo / Electron platforms.
68
- - TypeScript and JavaScript support.
69
- - ESM and CommonJS support.
70
- - Produced code is performant, flexible, clean, and maintainable.
71
- - Follows all possible best practices.
72
- - CLI.
32
+ - Supports both [DataMapper](./docs/docs/guides/1-active-record-data-mapper.md#what-is-the-data-mapper-pattern) and [ActiveRecord](./docs/docs/guides/1-active-record-data-mapper.md#what-is-the-active-record-pattern) (your choice).
33
+ - Entities and columns.
34
+ - Database-specific column types.
35
+ - Entity manager.
36
+ - Repositories and custom repositories.
37
+ - Clean object-relational model.
38
+ - Associations (relations).
39
+ - Eager and lazy relations.
40
+ - Unidirectional, bidirectional, and self-referenced relations.
41
+ - Supports multiple inheritance patterns.
42
+ - Cascades.
43
+ - Indices.
44
+ - Transactions.
45
+ - Migrations and automatic migrations generation.
46
+ - Connection pooling.
47
+ - Replication.
48
+ - Using multiple database instances.
49
+ - Working with multiple database types.
50
+ - Cross-database and cross-schema queries.
51
+ - Elegant-syntax, flexible and powerful QueryBuilder.
52
+ - Left and inner joins.
53
+ - Proper pagination for queries using joins.
54
+ - Query caching.
55
+ - Streaming raw results.
56
+ - Logging.
57
+ - Listeners and subscribers (hooks).
58
+ - Supports closure table pattern.
59
+ - Schema declaration in models or separate configuration files.
60
+ - Supports MySQL / MariaDB / Postgres / CockroachDB / SQLite / Microsoft SQL Server / Oracle / SAP Hana / sql.js.
61
+ - Supports MongoDB NoSQL database.
62
+ - Works in Node.js / Browser / Ionic / Cordova / React Native / NativeScript / Expo / Electron platforms.
63
+ - TypeScript and JavaScript support.
64
+ - ESM and CommonJS support.
65
+ - Produced code is performant, flexible, clean, and maintainable.
66
+ - Follows all possible best practices.
67
+ - CLI.
73
68
 
74
69
  And more...
75
70
 
@@ -165,37 +160,37 @@ Take a look at the samples in [sample](https://github.com/typeorm/typeorm/tree/m
165
160
 
166
161
  There are a few repositories that you can clone and start with:
167
162
 
168
- - [Example how to use TypeORM with TypeScript](https://github.com/typeorm/typescript-example)
169
- - [Example how to use TypeORM with JavaScript](https://github.com/typeorm/javascript-example)
170
- - [Example how to use TypeORM with JavaScript and Babel](https://github.com/typeorm/babel-example)
171
- - [Example how to use TypeORM with TypeScript and SystemJS in Browser](https://github.com/typeorm/browser-example)
172
- - [Example how to use TypeORM with TypeScript and React in Browser](https://github.com/ItayGarin/typeorm-react-swc)
173
- - [Example how to use Express and TypeORM](https://github.com/typeorm/typescript-express-example)
174
- - [Example how to use Koa and TypeORM](https://github.com/typeorm/typescript-koa-example)
175
- - [Example how to use TypeORM with MongoDB](https://github.com/typeorm/mongo-typescript-example)
176
- - [Example how to use TypeORM in a Cordova app](https://github.com/typeorm/cordova-example)
177
- - [Example how to use TypeORM with an Ionic app](https://github.com/typeorm/ionic-example)
178
- - [Example how to use TypeORM with React Native](https://github.com/typeorm/react-native-example)
179
- - [Example how to use TypeORM with Nativescript-Vue](https://github.com/typeorm/nativescript-vue-typeorm-sample)
180
- - [Example how to use TypeORM with Nativescript-Angular](https://github.com/betov18x/nativescript-angular-typeorm-example)
181
- - [Example how to use TypeORM with Electron using JavaScript](https://github.com/typeorm/electron-javascript-example)
182
- - [Example how to use TypeORM with Electron using TypeScript](https://github.com/typeorm/electron-typescript-example)
163
+ - [Example how to use TypeORM with TypeScript](https://github.com/typeorm/typescript-example)
164
+ - [Example how to use TypeORM with JavaScript](https://github.com/typeorm/javascript-example)
165
+ - [Example how to use TypeORM with JavaScript and Babel](https://github.com/typeorm/babel-example)
166
+ - [Example how to use TypeORM with TypeScript and SystemJS in Browser](https://github.com/typeorm/browser-example)
167
+ - [Example how to use TypeORM with TypeScript and React in Browser](https://github.com/ItayGarin/typeorm-react-swc)
168
+ - [Example how to use Express and TypeORM](https://github.com/typeorm/typescript-express-example)
169
+ - [Example how to use Koa and TypeORM](https://github.com/typeorm/typescript-koa-example)
170
+ - [Example how to use TypeORM with MongoDB](https://github.com/typeorm/mongo-typescript-example)
171
+ - [Example how to use TypeORM in a Cordova app](https://github.com/typeorm/cordova-example)
172
+ - [Example how to use TypeORM with an Ionic app](https://github.com/typeorm/ionic-example)
173
+ - [Example how to use TypeORM with React Native](https://github.com/typeorm/react-native-example)
174
+ - [Example how to use TypeORM with Nativescript-Vue](https://github.com/typeorm/nativescript-vue-typeorm-sample)
175
+ - [Example how to use TypeORM with Nativescript-Angular](https://github.com/betov18x/nativescript-angular-typeorm-example)
176
+ - [Example how to use TypeORM with Electron using JavaScript](https://github.com/typeorm/electron-javascript-example)
177
+ - [Example how to use TypeORM with Electron using TypeScript](https://github.com/typeorm/electron-typescript-example)
183
178
 
184
179
  ## Extensions
185
180
 
186
181
  There are several extensions that simplify working with TypeORM and integrating it with other modules:
187
182
 
188
- - [TypeORM integration](https://github.com/typeorm/typeorm-typedi-extensions) with [TypeDI](https://github.com/pleerock/typedi)
189
- - [TypeORM integration](https://github.com/typeorm/typeorm-routing-controllers-extensions) with [routing-controllers](https://github.com/pleerock/routing-controllers)
190
- - Models generation from the existing database - [typeorm-model-generator](https://github.com/Kononnable/typeorm-model-generator)
191
- - Fixtures loader - [typeorm-fixtures-cli](https://github.com/RobinCK/typeorm-fixtures)
192
- - ER Diagram generator - [typeorm-uml](https://github.com/eugene-manuilov/typeorm-uml/)
193
- - another ER Diagram generator - [erdia](https://www.npmjs.com/package/erdia/)
194
- - Create, drop and seed database - [typeorm-extension](https://github.com/tada5hi/typeorm-extension)
195
- - Automatically update `data-source.ts` after generating migrations/entities - [typeorm-codebase-sync](https://www.npmjs.com/package/typeorm-codebase-sync)
196
- - Easy manipulation of `relations` objects - [typeorm-relations](https://npmjs.com/package/typeorm-relations)
197
- - Automatically generate `relations` based on a GraphQL query - [typeorm-relations-graphql](https://npmjs.com/package/typeorm-relations-graphql)
198
- - Generate TypeORM entities from Valibot schemas - [piying-orm](https://github.com/piying-org/piying-orm)
183
+ - [TypeORM integration](https://github.com/typeorm/typeorm-typedi-extensions) with [TypeDI](https://github.com/pleerock/typedi)
184
+ - [TypeORM integration](https://github.com/typeorm/typeorm-routing-controllers-extensions) with [routing-controllers](https://github.com/pleerock/routing-controllers)
185
+ - Models generation from the existing database - [typeorm-model-generator](https://github.com/Kononnable/typeorm-model-generator)
186
+ - Fixtures loader - [typeorm-fixtures-cli](https://github.com/RobinCK/typeorm-fixtures)
187
+ - ER Diagram generator - [typeorm-uml](https://github.com/eugene-manuilov/typeorm-uml/)
188
+ - another ER Diagram generator - [erdia](https://www.npmjs.com/package/erdia/)
189
+ - Create, drop and seed database - [typeorm-extension](https://github.com/tada5hi/typeorm-extension)
190
+ - Automatically update `data-source.ts` after generating migrations/entities - [typeorm-codebase-sync](https://www.npmjs.com/package/typeorm-codebase-sync)
191
+ - Easy manipulation of `relations` objects - [typeorm-relations](https://npmjs.com/package/typeorm-relations)
192
+ - Automatically generate `relations` based on a GraphQL query - [typeorm-relations-graphql](https://npmjs.com/package/typeorm-relations-graphql)
193
+ - Generate TypeORM entities from Valibot schemas - [piying-orm](https://github.com/piying-org/piying-orm)
199
194
 
200
195
  ## Contributing
201
196
 
@@ -1,10 +1,13 @@
1
- import { MssqlParameter } from "../driver/sqlserver/MssqlParameter";
2
- import { Table } from "../schema-builder/table/Table";
3
- import { v4 as uuidv4 } from "uuid";
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DbQueryResultCache = void 0;
4
+ const MssqlParameter_1 = require("../driver/sqlserver/MssqlParameter");
5
+ const Table_1 = require("../schema-builder/table/Table");
6
+ const RandomGenerator_1 = require("../util/RandomGenerator");
4
7
  /**
5
8
  * Caches query result into current database, into separate table called "query-result-cache".
6
9
  */
7
- export class DbQueryResultCache {
10
+ class DbQueryResultCache {
8
11
  // -------------------------------------------------------------------------
9
12
  // Constructor
10
13
  // -------------------------------------------------------------------------
@@ -40,7 +43,7 @@ export class DbQueryResultCache {
40
43
  const tableExist = await queryRunner.hasTable(this.queryResultCacheTable); // todo: table name should be configurable
41
44
  if (tableExist)
42
45
  return;
43
- await queryRunner.createTable(new Table({
46
+ await queryRunner.createTable(new Table_1.Table({
44
47
  database: this.queryResultCacheDatabase,
45
48
  schema: this.queryResultCacheSchema,
46
49
  name: this.queryResultCacheTable,
@@ -114,7 +117,7 @@ export class DbQueryResultCache {
114
117
  .where(`${qb.escape("cache")}.${qb.escape("identifier")} = :identifier`)
115
118
  .setParameters({
116
119
  identifier: this.connection.driver.options.type === "mssql"
117
- ? new MssqlParameter(options.identifier, "nvarchar")
120
+ ? new MssqlParameter_1.MssqlParameter(options.identifier, "nvarchar")
118
121
  : options.identifier,
119
122
  })
120
123
  .cache(false) // disable cache to avoid infinite loops when cache is alwaysEnable
@@ -131,7 +134,7 @@ export class DbQueryResultCache {
131
134
  .where(`${qb.escape("cache")}.${qb.escape("query")} = :query`)
132
135
  .setParameters({
133
136
  query: this.connection.driver.options.type === "mssql"
134
- ? new MssqlParameter(options.query, "nvarchar")
137
+ ? new MssqlParameter_1.MssqlParameter(options.query, "nvarchar")
135
138
  : options.query,
136
139
  })
137
140
  .cache(false) // disable cache to avoid infinite loops when cache is alwaysEnable
@@ -165,11 +168,11 @@ export class DbQueryResultCache {
165
168
  if (this.connection.driver.options.type === "mssql") {
166
169
  // todo: bad abstraction, re-implement this part, probably better if we create an entity metadata for cache table
167
170
  insertedValues = {
168
- identifier: new MssqlParameter(options.identifier, "nvarchar"),
169
- time: new MssqlParameter(options.time, "bigint"),
170
- duration: new MssqlParameter(options.duration, "int"),
171
- query: new MssqlParameter(options.query, "nvarchar"),
172
- result: new MssqlParameter(options.result, "nvarchar"),
171
+ identifier: new MssqlParameter_1.MssqlParameter(options.identifier, "nvarchar"),
172
+ time: new MssqlParameter_1.MssqlParameter(options.time, "bigint"),
173
+ duration: new MssqlParameter_1.MssqlParameter(options.duration, "int"),
174
+ query: new MssqlParameter_1.MssqlParameter(options.query, "nvarchar"),
175
+ result: new MssqlParameter_1.MssqlParameter(options.result, "nvarchar"),
173
176
  };
174
177
  }
175
178
  if (savedCache && savedCache.identifier) {
@@ -205,7 +208,7 @@ export class DbQueryResultCache {
205
208
  // Spanner does not support auto-generated columns
206
209
  if (this.connection.driver.options.type === "spanner" &&
207
210
  !insertedValues.id) {
208
- insertedValues.id = uuidv4();
211
+ insertedValues.id = RandomGenerator_1.RandomGenerator.uuidv4();
209
212
  }
210
213
  // otherwise insert
211
214
  await queryRunner.manager
@@ -256,5 +259,6 @@ export class DbQueryResultCache {
256
259
  return this.connection.createQueryRunner();
257
260
  }
258
261
  }
262
+ exports.DbQueryResultCache = DbQueryResultCache;
259
263
 
260
264
  //# sourceMappingURL=DbQueryResultCache.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/cache/DbQueryResultCache.ts"],"names":[],"mappings":"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","file":"DbQueryResultCache.js","sourcesContent":["import { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport { DataSource } from \"../data-source/DataSource\"\nimport { MssqlParameter } from \"../driver/sqlserver/MssqlParameter\"\nimport { QueryRunner } from \"../query-runner/QueryRunner\"\nimport { Table } from \"../schema-builder/table/Table\"\nimport { QueryResultCache } from \"./QueryResultCache\"\nimport { QueryResultCacheOptions } from \"./QueryResultCacheOptions\"\nimport { v4 as uuidv4 } from \"uuid\"\n\n/**\n * Caches query result into current database, into separate table called \"query-result-cache\".\n */\nexport class DbQueryResultCache implements QueryResultCache {\n // -------------------------------------------------------------------------\n // Private properties\n // -------------------------------------------------------------------------\n\n private queryResultCacheTable: string\n\n private queryResultCacheDatabase?: string\n\n private queryResultCacheSchema?: string\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected connection: DataSource) {\n const { schema } = this.connection.driver.options as any\n const database = this.connection.driver.database\n const cacheOptions =\n typeof this.connection.options.cache === \"object\"\n ? this.connection.options.cache\n : {}\n const cacheTableName = cacheOptions.tableName || \"query-result-cache\"\n\n this.queryResultCacheDatabase = database\n this.queryResultCacheSchema = schema\n this.queryResultCacheTable = this.connection.driver.buildTableName(\n cacheTableName,\n schema,\n database,\n )\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates a connection with given cache provider.\n */\n async connect(): Promise<void> {}\n\n /**\n * Disconnects with given cache provider.\n */\n async disconnect(): Promise<void> {}\n\n /**\n * Creates table for storing cache if it does not exist yet.\n */\n async synchronize(queryRunner?: QueryRunner): Promise<void> {\n queryRunner = this.getQueryRunner(queryRunner)\n const driver = this.connection.driver\n const tableExist = await queryRunner.hasTable(\n this.queryResultCacheTable,\n ) // todo: table name should be configurable\n if (tableExist) return\n\n await queryRunner.createTable(\n new Table({\n database: this.queryResultCacheDatabase,\n schema: this.queryResultCacheSchema,\n name: this.queryResultCacheTable,\n columns: [\n {\n name: \"id\",\n isPrimary: true,\n isNullable: false,\n type: driver.normalizeType({\n type: driver.mappedDataTypes.cacheId,\n }),\n generationStrategy:\n driver.options.type === \"spanner\"\n ? \"uuid\"\n : \"increment\",\n isGenerated: true,\n },\n {\n name: \"identifier\",\n type: driver.normalizeType({\n type: driver.mappedDataTypes.cacheIdentifier,\n }),\n isNullable: true,\n },\n {\n name: \"time\",\n type: driver.normalizeType({\n type: driver.mappedDataTypes.cacheTime,\n }),\n isPrimary: false,\n isNullable: false,\n },\n {\n name: \"duration\",\n type: driver.normalizeType({\n type: driver.mappedDataTypes.cacheDuration,\n }),\n isPrimary: false,\n isNullable: false,\n },\n {\n name: \"query\",\n type: driver.normalizeType({\n type: driver.mappedDataTypes.cacheQuery,\n }),\n isPrimary: false,\n isNullable: false,\n },\n {\n name: \"result\",\n type: driver.normalizeType({\n type: driver.mappedDataTypes.cacheResult,\n }),\n isNullable: false,\n },\n ],\n }),\n )\n }\n\n /**\n * Get data from cache.\n * Returns cache result if found.\n * Returns undefined if result is not cached.\n */\n getFromCache(\n options: QueryResultCacheOptions,\n queryRunner?: QueryRunner,\n ): Promise<QueryResultCacheOptions | undefined> {\n queryRunner = this.getQueryRunner(queryRunner)\n const qb = this.connection\n .createQueryBuilder(queryRunner)\n .select()\n .from(this.queryResultCacheTable, \"cache\")\n\n if (options.identifier) {\n return qb\n .where(\n `${qb.escape(\"cache\")}.${qb.escape(\n \"identifier\",\n )} = :identifier`,\n )\n .setParameters({\n identifier:\n this.connection.driver.options.type === \"mssql\"\n ? new MssqlParameter(options.identifier, \"nvarchar\")\n : options.identifier,\n })\n .cache(false) // disable cache to avoid infinite loops when cache is alwaysEnable\n .getRawOne()\n } else if (options.query) {\n if (this.connection.driver.options.type === \"oracle\") {\n return qb\n .where(\n `dbms_lob.compare(${qb.escape(\"cache\")}.${qb.escape(\n \"query\",\n )}, :query) = 0`,\n { query: options.query },\n )\n .cache(false) // disable cache to avoid infinite loops when cache is alwaysEnable\n .getRawOne()\n }\n\n return qb\n .where(`${qb.escape(\"cache\")}.${qb.escape(\"query\")} = :query`)\n .setParameters({\n query:\n this.connection.driver.options.type === \"mssql\"\n ? new MssqlParameter(options.query, \"nvarchar\")\n : options.query,\n })\n .cache(false) // disable cache to avoid infinite loops when cache is alwaysEnable\n .getRawOne()\n }\n\n return Promise.resolve(undefined)\n }\n\n /**\n * Checks if cache is expired or not.\n */\n isExpired(savedCache: QueryResultCacheOptions): boolean {\n const duration =\n typeof savedCache.duration === \"string\"\n ? parseInt(savedCache.duration)\n : savedCache.duration\n return (\n (typeof savedCache.time === \"string\"\n ? parseInt(savedCache.time as any)\n : savedCache.time)! +\n duration <\n Date.now()\n )\n }\n\n /**\n * Stores given query result in the cache.\n */\n async storeInCache(\n options: QueryResultCacheOptions,\n savedCache: QueryResultCacheOptions | undefined,\n queryRunner?: QueryRunner,\n ): Promise<void> {\n const shouldCreateQueryRunner =\n queryRunner === undefined ||\n queryRunner?.getReplicationMode() === \"slave\"\n\n if (queryRunner === undefined || shouldCreateQueryRunner) {\n queryRunner = this.connection.createQueryRunner(\"master\")\n }\n\n let insertedValues: ObjectLiteral = options\n if (this.connection.driver.options.type === \"mssql\") {\n // todo: bad abstraction, re-implement this part, probably better if we create an entity metadata for cache table\n insertedValues = {\n identifier: new MssqlParameter(options.identifier, \"nvarchar\"),\n time: new MssqlParameter(options.time, \"bigint\"),\n duration: new MssqlParameter(options.duration, \"int\"),\n query: new MssqlParameter(options.query, \"nvarchar\"),\n result: new MssqlParameter(options.result, \"nvarchar\"),\n }\n }\n\n if (savedCache && savedCache.identifier) {\n // if exist then update\n const qb = queryRunner.manager\n .createQueryBuilder()\n .update(this.queryResultCacheTable)\n .set(insertedValues)\n\n qb.where(`${qb.escape(\"identifier\")} = :condition`, {\n condition: insertedValues.identifier,\n })\n await qb.execute()\n } else if (savedCache && savedCache.query) {\n // if exist then update\n const qb = queryRunner.manager\n .createQueryBuilder()\n .update(this.queryResultCacheTable)\n .set(insertedValues)\n\n if (this.connection.driver.options.type === \"oracle\") {\n qb.where(`dbms_lob.compare(\"query\", :condition) = 0`, {\n condition: insertedValues.query,\n })\n } else {\n qb.where(`${qb.escape(\"query\")} = :condition`, {\n condition: insertedValues.query,\n })\n }\n\n await qb.execute()\n } else {\n // Spanner does not support auto-generated columns\n if (\n this.connection.driver.options.type === \"spanner\" &&\n !insertedValues.id\n ) {\n insertedValues.id = uuidv4()\n }\n\n // otherwise insert\n await queryRunner.manager\n .createQueryBuilder()\n .insert()\n .into(this.queryResultCacheTable)\n .values(insertedValues)\n .execute()\n }\n\n if (shouldCreateQueryRunner) {\n await queryRunner.release()\n }\n }\n\n /**\n * Clears everything stored in the cache.\n */\n async clear(queryRunner: QueryRunner): Promise<void> {\n return this.getQueryRunner(queryRunner).clearTable(\n this.queryResultCacheTable,\n )\n }\n\n /**\n * Removes all cached results by given identifiers from cache.\n */\n async remove(\n identifiers: string[],\n queryRunner?: QueryRunner,\n ): Promise<void> {\n const _queryRunner: QueryRunner = queryRunner || this.getQueryRunner()\n await Promise.all(\n identifiers.map((identifier) => {\n const qb = _queryRunner.manager.createQueryBuilder()\n return qb\n .delete()\n .from(this.queryResultCacheTable)\n .where(`${qb.escape(\"identifier\")} = :identifier`, {\n identifier,\n })\n .execute()\n }),\n )\n\n if (!queryRunner) {\n await _queryRunner.release()\n }\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Gets a query runner to work with.\n */\n protected getQueryRunner(queryRunner?: QueryRunner): QueryRunner {\n if (queryRunner) return queryRunner\n\n return this.connection.createQueryRunner()\n }\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/cache/DbQueryResultCache.ts"],"names":[],"mappings":"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","file":"DbQueryResultCache.js","sourcesContent":["import { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport { DataSource } from \"../data-source/DataSource\"\nimport { MssqlParameter } from \"../driver/sqlserver/MssqlParameter\"\nimport { QueryRunner } from \"../query-runner/QueryRunner\"\nimport { Table } from \"../schema-builder/table/Table\"\nimport { RandomGenerator } from \"../util/RandomGenerator\"\nimport { QueryResultCache } from \"./QueryResultCache\"\nimport { QueryResultCacheOptions } from \"./QueryResultCacheOptions\"\n\n/**\n * Caches query result into current database, into separate table called \"query-result-cache\".\n */\nexport class DbQueryResultCache implements QueryResultCache {\n // -------------------------------------------------------------------------\n // Private properties\n // -------------------------------------------------------------------------\n\n private queryResultCacheTable: string\n\n private queryResultCacheDatabase?: string\n\n private queryResultCacheSchema?: string\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected connection: DataSource) {\n const { schema } = this.connection.driver.options as any\n const database = this.connection.driver.database\n const cacheOptions =\n typeof this.connection.options.cache === \"object\"\n ? this.connection.options.cache\n : {}\n const cacheTableName = cacheOptions.tableName || \"query-result-cache\"\n\n this.queryResultCacheDatabase = database\n this.queryResultCacheSchema = schema\n this.queryResultCacheTable = this.connection.driver.buildTableName(\n cacheTableName,\n schema,\n database,\n )\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates a connection with given cache provider.\n */\n async connect(): Promise<void> {}\n\n /**\n * Disconnects with given cache provider.\n */\n async disconnect(): Promise<void> {}\n\n /**\n * Creates table for storing cache if it does not exist yet.\n */\n async synchronize(queryRunner?: QueryRunner): Promise<void> {\n queryRunner = this.getQueryRunner(queryRunner)\n const driver = this.connection.driver\n const tableExist = await queryRunner.hasTable(\n this.queryResultCacheTable,\n ) // todo: table name should be configurable\n if (tableExist) return\n\n await queryRunner.createTable(\n new Table({\n database: this.queryResultCacheDatabase,\n schema: this.queryResultCacheSchema,\n name: this.queryResultCacheTable,\n columns: [\n {\n name: \"id\",\n isPrimary: true,\n isNullable: false,\n type: driver.normalizeType({\n type: driver.mappedDataTypes.cacheId,\n }),\n generationStrategy:\n driver.options.type === \"spanner\"\n ? \"uuid\"\n : \"increment\",\n isGenerated: true,\n },\n {\n name: \"identifier\",\n type: driver.normalizeType({\n type: driver.mappedDataTypes.cacheIdentifier,\n }),\n isNullable: true,\n },\n {\n name: \"time\",\n type: driver.normalizeType({\n type: driver.mappedDataTypes.cacheTime,\n }),\n isPrimary: false,\n isNullable: false,\n },\n {\n name: \"duration\",\n type: driver.normalizeType({\n type: driver.mappedDataTypes.cacheDuration,\n }),\n isPrimary: false,\n isNullable: false,\n },\n {\n name: \"query\",\n type: driver.normalizeType({\n type: driver.mappedDataTypes.cacheQuery,\n }),\n isPrimary: false,\n isNullable: false,\n },\n {\n name: \"result\",\n type: driver.normalizeType({\n type: driver.mappedDataTypes.cacheResult,\n }),\n isNullable: false,\n },\n ],\n }),\n )\n }\n\n /**\n * Get data from cache.\n * Returns cache result if found.\n * Returns undefined if result is not cached.\n */\n getFromCache(\n options: QueryResultCacheOptions,\n queryRunner?: QueryRunner,\n ): Promise<QueryResultCacheOptions | undefined> {\n queryRunner = this.getQueryRunner(queryRunner)\n const qb = this.connection\n .createQueryBuilder(queryRunner)\n .select()\n .from(this.queryResultCacheTable, \"cache\")\n\n if (options.identifier) {\n return qb\n .where(\n `${qb.escape(\"cache\")}.${qb.escape(\n \"identifier\",\n )} = :identifier`,\n )\n .setParameters({\n identifier:\n this.connection.driver.options.type === \"mssql\"\n ? new MssqlParameter(options.identifier, \"nvarchar\")\n : options.identifier,\n })\n .cache(false) // disable cache to avoid infinite loops when cache is alwaysEnable\n .getRawOne()\n } else if (options.query) {\n if (this.connection.driver.options.type === \"oracle\") {\n return qb\n .where(\n `dbms_lob.compare(${qb.escape(\"cache\")}.${qb.escape(\n \"query\",\n )}, :query) = 0`,\n { query: options.query },\n )\n .cache(false) // disable cache to avoid infinite loops when cache is alwaysEnable\n .getRawOne()\n }\n\n return qb\n .where(`${qb.escape(\"cache\")}.${qb.escape(\"query\")} = :query`)\n .setParameters({\n query:\n this.connection.driver.options.type === \"mssql\"\n ? new MssqlParameter(options.query, \"nvarchar\")\n : options.query,\n })\n .cache(false) // disable cache to avoid infinite loops when cache is alwaysEnable\n .getRawOne()\n }\n\n return Promise.resolve(undefined)\n }\n\n /**\n * Checks if cache is expired or not.\n */\n isExpired(savedCache: QueryResultCacheOptions): boolean {\n const duration =\n typeof savedCache.duration === \"string\"\n ? parseInt(savedCache.duration)\n : savedCache.duration\n return (\n (typeof savedCache.time === \"string\"\n ? parseInt(savedCache.time as any)\n : savedCache.time)! +\n duration <\n Date.now()\n )\n }\n\n /**\n * Stores given query result in the cache.\n */\n async storeInCache(\n options: QueryResultCacheOptions,\n savedCache: QueryResultCacheOptions | undefined,\n queryRunner?: QueryRunner,\n ): Promise<void> {\n const shouldCreateQueryRunner =\n queryRunner === undefined ||\n queryRunner?.getReplicationMode() === \"slave\"\n\n if (queryRunner === undefined || shouldCreateQueryRunner) {\n queryRunner = this.connection.createQueryRunner(\"master\")\n }\n\n let insertedValues: ObjectLiteral = options\n if (this.connection.driver.options.type === \"mssql\") {\n // todo: bad abstraction, re-implement this part, probably better if we create an entity metadata for cache table\n insertedValues = {\n identifier: new MssqlParameter(options.identifier, \"nvarchar\"),\n time: new MssqlParameter(options.time, \"bigint\"),\n duration: new MssqlParameter(options.duration, \"int\"),\n query: new MssqlParameter(options.query, \"nvarchar\"),\n result: new MssqlParameter(options.result, \"nvarchar\"),\n }\n }\n\n if (savedCache && savedCache.identifier) {\n // if exist then update\n const qb = queryRunner.manager\n .createQueryBuilder()\n .update(this.queryResultCacheTable)\n .set(insertedValues)\n\n qb.where(`${qb.escape(\"identifier\")} = :condition`, {\n condition: insertedValues.identifier,\n })\n await qb.execute()\n } else if (savedCache && savedCache.query) {\n // if exist then update\n const qb = queryRunner.manager\n .createQueryBuilder()\n .update(this.queryResultCacheTable)\n .set(insertedValues)\n\n if (this.connection.driver.options.type === \"oracle\") {\n qb.where(`dbms_lob.compare(\"query\", :condition) = 0`, {\n condition: insertedValues.query,\n })\n } else {\n qb.where(`${qb.escape(\"query\")} = :condition`, {\n condition: insertedValues.query,\n })\n }\n\n await qb.execute()\n } else {\n // Spanner does not support auto-generated columns\n if (\n this.connection.driver.options.type === \"spanner\" &&\n !insertedValues.id\n ) {\n insertedValues.id = RandomGenerator.uuidv4()\n }\n\n // otherwise insert\n await queryRunner.manager\n .createQueryBuilder()\n .insert()\n .into(this.queryResultCacheTable)\n .values(insertedValues)\n .execute()\n }\n\n if (shouldCreateQueryRunner) {\n await queryRunner.release()\n }\n }\n\n /**\n * Clears everything stored in the cache.\n */\n async clear(queryRunner: QueryRunner): Promise<void> {\n return this.getQueryRunner(queryRunner).clearTable(\n this.queryResultCacheTable,\n )\n }\n\n /**\n * Removes all cached results by given identifiers from cache.\n */\n async remove(\n identifiers: string[],\n queryRunner?: QueryRunner,\n ): Promise<void> {\n const _queryRunner: QueryRunner = queryRunner || this.getQueryRunner()\n await Promise.all(\n identifiers.map((identifier) => {\n const qb = _queryRunner.manager.createQueryBuilder()\n return qb\n .delete()\n .from(this.queryResultCacheTable)\n .where(`${qb.escape(\"identifier\")} = :identifier`, {\n identifier,\n })\n .execute()\n }),\n )\n\n if (!queryRunner) {\n await _queryRunner.release()\n }\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Gets a query runner to work with.\n */\n protected getQueryRunner(queryRunner?: QueryRunner): QueryRunner {\n if (queryRunner) return queryRunner\n\n return this.connection.createQueryRunner()\n }\n}\n"],"sourceRoot":".."}
@@ -1,3 +1,4 @@
1
- export {};
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
2
3
 
3
4
  //# sourceMappingURL=QueryResultCache.js.map
@@ -1,10 +1,13 @@
1
- import { RedisQueryResultCache } from "./RedisQueryResultCache";
2
- import { DbQueryResultCache } from "./DbQueryResultCache";
3
- import { TypeORMError } from "../error/TypeORMError";
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QueryResultCacheFactory = void 0;
4
+ const RedisQueryResultCache_1 = require("./RedisQueryResultCache");
5
+ const DbQueryResultCache_1 = require("./DbQueryResultCache");
6
+ const TypeORMError_1 = require("../error/TypeORMError");
4
7
  /**
5
8
  * Caches query result into Redis database.
6
9
  */
7
- export class QueryResultCacheFactory {
10
+ class QueryResultCacheFactory {
8
11
  // -------------------------------------------------------------------------
9
12
  // Constructor
10
13
  // -------------------------------------------------------------------------
@@ -19,7 +22,7 @@ export class QueryResultCacheFactory {
19
22
  */
20
23
  create() {
21
24
  if (!this.connection.options.cache)
22
- throw new TypeORMError(`To use cache you need to enable it in connection options by setting cache: true or providing some caching options. Example: { host: ..., username: ..., cache: true }`);
25
+ throw new TypeORMError_1.TypeORMError(`To use cache you need to enable it in connection options by setting cache: true or providing some caching options. Example: { host: ..., username: ..., cache: true }`);
23
26
  const cache = this.connection.options.cache;
24
27
  if (cache.provider && typeof cache.provider === "function") {
25
28
  return cache.provider(this.connection);
@@ -27,12 +30,13 @@ export class QueryResultCacheFactory {
27
30
  if (cache.type === "redis" ||
28
31
  cache.type === "ioredis" ||
29
32
  cache.type === "ioredis/cluster") {
30
- return new RedisQueryResultCache(this.connection, cache.type);
33
+ return new RedisQueryResultCache_1.RedisQueryResultCache(this.connection, cache.type);
31
34
  }
32
35
  else {
33
- return new DbQueryResultCache(this.connection);
36
+ return new DbQueryResultCache_1.DbQueryResultCache(this.connection);
34
37
  }
35
38
  }
36
39
  }
40
+ exports.QueryResultCacheFactory = QueryResultCacheFactory;
37
41
 
38
42
  //# sourceMappingURL=QueryResultCacheFactory.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/cache/QueryResultCacheFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAGzD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEpD;;GAEG;AACH,MAAM,OAAO,uBAAuB;IAChC,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,YAAsB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAEhD,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E;;OAEG;IACH,MAAM;QACF,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK;YAC9B,MAAM,IAAI,YAAY,CAClB,uKAAuK,CAC1K,CAAA;QAEL,MAAM,KAAK,GAAQ,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAA;QAEhD,IAAI,KAAK,CAAC,QAAQ,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YACzD,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC1C,CAAC;QAED,IACI,KAAK,CAAC,IAAI,KAAK,OAAO;YACtB,KAAK,CAAC,IAAI,KAAK,SAAS;YACxB,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAClC,CAAC;YACC,OAAO,IAAI,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QACjE,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAClD,CAAC;IACL,CAAC;CACJ","file":"QueryResultCacheFactory.js","sourcesContent":["import { RedisQueryResultCache } from \"./RedisQueryResultCache\"\nimport { DbQueryResultCache } from \"./DbQueryResultCache\"\nimport { QueryResultCache } from \"./QueryResultCache\"\nimport { DataSource } from \"../data-source/DataSource\"\nimport { TypeORMError } from \"../error/TypeORMError\"\n\n/**\n * Caches query result into Redis database.\n */\nexport class QueryResultCacheFactory {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected connection: DataSource) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates a new query result cache based on connection options.\n */\n create(): QueryResultCache {\n if (!this.connection.options.cache)\n throw new TypeORMError(\n `To use cache you need to enable it in connection options by setting cache: true or providing some caching options. Example: { host: ..., username: ..., cache: true }`,\n )\n\n const cache: any = this.connection.options.cache\n\n if (cache.provider && typeof cache.provider === \"function\") {\n return cache.provider(this.connection)\n }\n\n if (\n cache.type === \"redis\" ||\n cache.type === \"ioredis\" ||\n cache.type === \"ioredis/cluster\"\n ) {\n return new RedisQueryResultCache(this.connection, cache.type)\n } else {\n return new DbQueryResultCache(this.connection)\n }\n }\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/cache/QueryResultCacheFactory.ts"],"names":[],"mappings":";;;AAAA,mEAA+D;AAC/D,6DAAyD;AAGzD,wDAAoD;AAEpD;;GAEG;AACH,MAAa,uBAAuB;IAChC,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,YAAsB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAEhD,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E;;OAEG;IACH,MAAM;QACF,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK;YAC9B,MAAM,IAAI,2BAAY,CAClB,uKAAuK,CAC1K,CAAA;QAEL,MAAM,KAAK,GAAQ,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAA;QAEhD,IAAI,KAAK,CAAC,QAAQ,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YACzD,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC1C,CAAC;QAED,IACI,KAAK,CAAC,IAAI,KAAK,OAAO;YACtB,KAAK,CAAC,IAAI,KAAK,SAAS;YACxB,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAClC,CAAC;YACC,OAAO,IAAI,6CAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QACjE,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,uCAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAClD,CAAC;IACL,CAAC;CACJ;AApCD,0DAoCC","file":"QueryResultCacheFactory.js","sourcesContent":["import { RedisQueryResultCache } from \"./RedisQueryResultCache\"\nimport { DbQueryResultCache } from \"./DbQueryResultCache\"\nimport { QueryResultCache } from \"./QueryResultCache\"\nimport { DataSource } from \"../data-source/DataSource\"\nimport { TypeORMError } from \"../error/TypeORMError\"\n\n/**\n * Caches query result into Redis database.\n */\nexport class QueryResultCacheFactory {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected connection: DataSource) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates a new query result cache based on connection options.\n */\n create(): QueryResultCache {\n if (!this.connection.options.cache)\n throw new TypeORMError(\n `To use cache you need to enable it in connection options by setting cache: true or providing some caching options. Example: { host: ..., username: ..., cache: true }`,\n )\n\n const cache: any = this.connection.options.cache\n\n if (cache.provider && typeof cache.provider === \"function\") {\n return cache.provider(this.connection)\n }\n\n if (\n cache.type === \"redis\" ||\n cache.type === \"ioredis\" ||\n cache.type === \"ioredis/cluster\"\n ) {\n return new RedisQueryResultCache(this.connection, cache.type)\n } else {\n return new DbQueryResultCache(this.connection)\n }\n }\n}\n"],"sourceRoot":".."}
@@ -1,3 +1,4 @@
1
- export {};
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
2
3
 
3
4
  //# sourceMappingURL=QueryResultCacheOptions.js.map
@@ -1,9 +1,12 @@
1
- import { PlatformTools } from "../platform/PlatformTools";
2
- import { TypeORMError } from "../error/TypeORMError";
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RedisQueryResultCache = void 0;
4
+ const PlatformTools_1 = require("../platform/PlatformTools");
5
+ const TypeORMError_1 = require("../error/TypeORMError");
3
6
  /**
4
7
  * Caches query result into Redis database.
5
8
  */
6
- export class RedisQueryResultCache {
9
+ class RedisQueryResultCache {
7
10
  // -------------------------------------------------------------------------
8
11
  // Constructor
9
12
  // -------------------------------------------------------------------------
@@ -76,7 +79,7 @@ export class RedisQueryResultCache {
76
79
  this.client = new this.redis.Cluster(cacheOptions.options.startupNodes, cacheOptions.options.options);
77
80
  }
78
81
  else {
79
- throw new TypeORMError(`options.startupNodes required for ${this.clientType}.`);
82
+ throw new TypeORMError_1.TypeORMError(`options.startupNodes required for ${this.clientType}.`);
80
83
  }
81
84
  }
82
85
  }
@@ -212,14 +215,14 @@ export class RedisQueryResultCache {
212
215
  loadRedis() {
213
216
  try {
214
217
  if (this.clientType === "ioredis/cluster") {
215
- return PlatformTools.load("ioredis");
218
+ return PlatformTools_1.PlatformTools.load("ioredis");
216
219
  }
217
220
  else {
218
- return PlatformTools.load(this.clientType);
221
+ return PlatformTools_1.PlatformTools.load(this.clientType);
219
222
  }
220
223
  }
221
224
  catch {
222
- throw new TypeORMError(`Cannot use cache because ${this.clientType} is not installed. Please run "npm i ${this.clientType}".`);
225
+ throw new TypeORMError_1.TypeORMError(`Cannot use cache because ${this.clientType} is not installed. Please run "npm i ${this.clientType}".`);
223
226
  }
224
227
  }
225
228
  /**
@@ -229,10 +232,10 @@ export class RedisQueryResultCache {
229
232
  detectRedisVersion() {
230
233
  if (this.clientType !== "redis")
231
234
  return;
232
- const version = PlatformTools.readPackageVersion("redis");
235
+ const version = PlatformTools_1.PlatformTools.readPackageVersion("redis");
233
236
  const major = parseInt(version.split(".")[0], 10);
234
237
  if (isNaN(major)) {
235
- throw new TypeORMError(`Invalid Redis version format: ${version}`);
238
+ throw new TypeORMError_1.TypeORMError(`Invalid Redis version format: ${version}`);
236
239
  }
237
240
  if (major <= 4) {
238
241
  // Redis 3/4 uses callback-based API
@@ -252,5 +255,6 @@ export class RedisQueryResultCache {
252
255
  return (this.redisMajorVersion !== undefined && this.redisMajorVersion >= 5);
253
256
  }
254
257
  }
258
+ exports.RedisQueryResultCache = RedisQueryResultCache;
255
259
 
256
260
  //# sourceMappingURL=RedisQueryResultCache.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/cache/RedisQueryResultCache.ts"],"names":[],"mappings":"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","file":"RedisQueryResultCache.js","sourcesContent":["import { QueryResultCache } from \"./QueryResultCache\"\nimport { QueryResultCacheOptions } from \"./QueryResultCacheOptions\"\nimport { PlatformTools } from \"../platform/PlatformTools\"\nimport { DataSource } from \"../data-source/DataSource\"\nimport { QueryRunner } from \"../query-runner/QueryRunner\"\nimport { TypeORMError } from \"../error/TypeORMError\"\n\n/**\n * Caches query result into Redis database.\n */\nexport class RedisQueryResultCache implements QueryResultCache {\n // -------------------------------------------------------------------------\n // Protected Properties\n // -------------------------------------------------------------------------\n\n /**\n * Redis module instance loaded dynamically.\n */\n protected redis: any\n\n /**\n * Connected redis client.\n */\n protected client: any\n\n /**\n * Type of the Redis Client (redis or ioredis).\n */\n protected clientType: \"redis\" | \"ioredis\" | \"ioredis/cluster\"\n\n /**\n * Redis major version number\n */\n protected redisMajorVersion: number | undefined\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(\n protected connection: DataSource,\n clientType: \"redis\" | \"ioredis\" | \"ioredis/cluster\",\n ) {\n this.clientType = clientType\n this.redis = this.loadRedis()\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates a connection with given cache provider.\n */\n async connect(): Promise<void> {\n const cacheOptions: any = this.connection.options.cache\n if (this.clientType === \"redis\") {\n const clientOptions = {\n ...cacheOptions?.options,\n }\n\n // Create initial client to test Redis version\n let tempClient = this.redis.createClient(clientOptions)\n const isRedis4Plus = typeof tempClient.connect === \"function\"\n\n if (isRedis4Plus) {\n // Redis 4+ detected, recreate with legacyMode for Redis 4.x\n // (Redis 5 will ignore legacyMode if not needed)\n clientOptions.legacyMode = true\n tempClient = this.redis.createClient(clientOptions)\n }\n\n // Set as the main client\n this.client = tempClient\n\n if (\n typeof this.connection.options.cache === \"object\" &&\n this.connection.options.cache.ignoreErrors\n ) {\n this.client.on(\"error\", (err: any) => {\n this.connection.logger.log(\"warn\", err)\n })\n }\n\n // Connect if Redis 4+\n if (typeof this.client.connect === \"function\") {\n await this.client.connect()\n }\n\n // Detect precise version after connection is established\n this.detectRedisVersion()\n } else if (this.clientType === \"ioredis\") {\n if (cacheOptions && cacheOptions.port) {\n if (cacheOptions.options) {\n this.client = new this.redis(\n cacheOptions.port,\n cacheOptions.options,\n )\n } else {\n this.client = new this.redis(cacheOptions.port)\n }\n } else if (cacheOptions && cacheOptions.options) {\n this.client = new this.redis(cacheOptions.options)\n } else {\n this.client = new this.redis()\n }\n } else if (this.clientType === \"ioredis/cluster\") {\n if (\n cacheOptions &&\n cacheOptions.options &&\n Array.isArray(cacheOptions.options)\n ) {\n this.client = new this.redis.Cluster(cacheOptions.options)\n } else if (\n cacheOptions &&\n cacheOptions.options &&\n cacheOptions.options.startupNodes\n ) {\n this.client = new this.redis.Cluster(\n cacheOptions.options.startupNodes,\n cacheOptions.options.options,\n )\n } else {\n throw new TypeORMError(\n `options.startupNodes required for ${this.clientType}.`,\n )\n }\n }\n }\n\n /**\n * Disconnects the connection\n */\n async disconnect(): Promise<void> {\n if (this.isRedis5OrHigher()) {\n // Redis 5+ uses quit() that returns a Promise\n await this.client.quit()\n this.client = undefined\n return\n }\n\n // Redis 3/4 callback style\n return new Promise<void>((ok, fail) => {\n this.client.quit((err: any, result: any) => {\n if (err) return fail(err)\n ok()\n this.client = undefined\n })\n })\n }\n\n /**\n * Creates table for storing cache if it does not exist yet.\n */\n async synchronize(queryRunner: QueryRunner): Promise<void> {}\n\n /**\n * Get data from cache.\n * Returns cache result if found.\n * Returns undefined if result is not cached.\n */\n getFromCache(\n options: QueryResultCacheOptions,\n queryRunner?: QueryRunner,\n ): Promise<QueryResultCacheOptions | undefined> {\n const key = options.identifier || options.query\n if (!key) return Promise.resolve(undefined)\n\n if (this.isRedis5OrHigher()) {\n // Redis 5+ Promise-based API\n return this.client.get(key).then((result: any) => {\n return result ? JSON.parse(result) : undefined\n })\n }\n\n // Redis 3/4 callback-based API\n return new Promise<QueryResultCacheOptions | undefined>((ok, fail) => {\n this.client.get(key, (err: any, result: any) => {\n if (err) return fail(err)\n ok(result ? JSON.parse(result) : undefined)\n })\n })\n }\n\n /**\n * Checks if cache is expired or not.\n */\n isExpired(savedCache: QueryResultCacheOptions): boolean {\n return savedCache.time! + savedCache.duration < Date.now()\n }\n\n /**\n * Stores given query result in the cache.\n */\n async storeInCache(\n options: QueryResultCacheOptions,\n savedCache: QueryResultCacheOptions,\n queryRunner?: QueryRunner,\n ): Promise<void> {\n const key = options.identifier || options.query\n if (!key) return\n\n const value = JSON.stringify(options)\n const duration = options.duration\n\n if (this.isRedis5OrHigher()) {\n // Redis 5+ Promise-based API with PX option\n await this.client.set(key, value, {\n PX: duration,\n })\n return\n }\n\n // Redis 3/4 callback-based API\n return new Promise<void>((ok, fail) => {\n this.client.set(\n key,\n value,\n \"PX\",\n duration,\n (err: any, result: any) => {\n if (err) return fail(err)\n ok()\n },\n )\n })\n }\n\n /**\n * Clears everything stored in the cache.\n */\n async clear(queryRunner?: QueryRunner): Promise<void> {\n if (this.isRedis5OrHigher()) {\n // Redis 5+ Promise-based API\n await this.client.flushDb()\n return\n }\n\n // Redis 3/4 callback-based API\n return new Promise<void>((ok, fail) => {\n this.client.flushdb((err: any, result: any) => {\n if (err) return fail(err)\n ok()\n })\n })\n }\n\n /**\n * Removes all cached results by given identifiers from cache.\n */\n async remove(\n identifiers: string[],\n queryRunner?: QueryRunner,\n ): Promise<void> {\n await Promise.all(\n identifiers.map((identifier) => {\n return this.deleteKey(identifier)\n }),\n )\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Removes a single key from redis database.\n */\n protected async deleteKey(key: string): Promise<void> {\n if (this.isRedis5OrHigher()) {\n // Redis 5+ Promise-based API\n await this.client.del(key)\n return\n }\n\n // Redis 3/4 callback-based API\n return new Promise<void>((ok, fail) => {\n this.client.del(key, (err: any, result: any) => {\n if (err) return fail(err)\n ok()\n })\n })\n }\n\n /**\n * Loads redis dependency.\n */\n protected loadRedis(): any {\n try {\n if (this.clientType === \"ioredis/cluster\") {\n return PlatformTools.load(\"ioredis\")\n } else {\n return PlatformTools.load(this.clientType)\n }\n } catch {\n throw new TypeORMError(\n `Cannot use cache because ${this.clientType} is not installed. Please run \"npm i ${this.clientType}\".`,\n )\n }\n }\n\n /**\n * Detects the Redis package version by reading the installed package.json\n * and sets the appropriate API version (3 for callback-based, 5 for Promise-based).\n */\n private detectRedisVersion(): void {\n if (this.clientType !== \"redis\") return\n const version = PlatformTools.readPackageVersion(\"redis\")\n const major = parseInt(version.split(\".\")[0], 10)\n if (isNaN(major)) {\n throw new TypeORMError(`Invalid Redis version format: ${version}`)\n }\n if (major <= 4) {\n // Redis 3/4 uses callback-based API\n this.redisMajorVersion = 3\n } else {\n // Redis 5+ uses Promise-based API\n this.redisMajorVersion = 5\n }\n }\n\n /**\n * Checks if Redis version is 5.x or higher\n */\n private isRedis5OrHigher(): boolean {\n if (this.clientType !== \"redis\") return false\n return (\n this.redisMajorVersion !== undefined && this.redisMajorVersion >= 5\n )\n }\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/cache/RedisQueryResultCache.ts"],"names":[],"mappings":"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","file":"RedisQueryResultCache.js","sourcesContent":["import { QueryResultCache } from \"./QueryResultCache\"\nimport { QueryResultCacheOptions } from \"./QueryResultCacheOptions\"\nimport { PlatformTools } from \"../platform/PlatformTools\"\nimport { DataSource } from \"../data-source/DataSource\"\nimport { QueryRunner } from \"../query-runner/QueryRunner\"\nimport { TypeORMError } from \"../error/TypeORMError\"\n\n/**\n * Caches query result into Redis database.\n */\nexport class RedisQueryResultCache implements QueryResultCache {\n // -------------------------------------------------------------------------\n // Protected Properties\n // -------------------------------------------------------------------------\n\n /**\n * Redis module instance loaded dynamically.\n */\n protected redis: any\n\n /**\n * Connected redis client.\n */\n protected client: any\n\n /**\n * Type of the Redis Client (redis or ioredis).\n */\n protected clientType: \"redis\" | \"ioredis\" | \"ioredis/cluster\"\n\n /**\n * Redis major version number\n */\n protected redisMajorVersion: number | undefined\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(\n protected connection: DataSource,\n clientType: \"redis\" | \"ioredis\" | \"ioredis/cluster\",\n ) {\n this.clientType = clientType\n this.redis = this.loadRedis()\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates a connection with given cache provider.\n */\n async connect(): Promise<void> {\n const cacheOptions: any = this.connection.options.cache\n if (this.clientType === \"redis\") {\n const clientOptions = {\n ...cacheOptions?.options,\n }\n\n // Create initial client to test Redis version\n let tempClient = this.redis.createClient(clientOptions)\n const isRedis4Plus = typeof tempClient.connect === \"function\"\n\n if (isRedis4Plus) {\n // Redis 4+ detected, recreate with legacyMode for Redis 4.x\n // (Redis 5 will ignore legacyMode if not needed)\n clientOptions.legacyMode = true\n tempClient = this.redis.createClient(clientOptions)\n }\n\n // Set as the main client\n this.client = tempClient\n\n if (\n typeof this.connection.options.cache === \"object\" &&\n this.connection.options.cache.ignoreErrors\n ) {\n this.client.on(\"error\", (err: any) => {\n this.connection.logger.log(\"warn\", err)\n })\n }\n\n // Connect if Redis 4+\n if (typeof this.client.connect === \"function\") {\n await this.client.connect()\n }\n\n // Detect precise version after connection is established\n this.detectRedisVersion()\n } else if (this.clientType === \"ioredis\") {\n if (cacheOptions && cacheOptions.port) {\n if (cacheOptions.options) {\n this.client = new this.redis(\n cacheOptions.port,\n cacheOptions.options,\n )\n } else {\n this.client = new this.redis(cacheOptions.port)\n }\n } else if (cacheOptions && cacheOptions.options) {\n this.client = new this.redis(cacheOptions.options)\n } else {\n this.client = new this.redis()\n }\n } else if (this.clientType === \"ioredis/cluster\") {\n if (\n cacheOptions &&\n cacheOptions.options &&\n Array.isArray(cacheOptions.options)\n ) {\n this.client = new this.redis.Cluster(cacheOptions.options)\n } else if (\n cacheOptions &&\n cacheOptions.options &&\n cacheOptions.options.startupNodes\n ) {\n this.client = new this.redis.Cluster(\n cacheOptions.options.startupNodes,\n cacheOptions.options.options,\n )\n } else {\n throw new TypeORMError(\n `options.startupNodes required for ${this.clientType}.`,\n )\n }\n }\n }\n\n /**\n * Disconnects the connection\n */\n async disconnect(): Promise<void> {\n if (this.isRedis5OrHigher()) {\n // Redis 5+ uses quit() that returns a Promise\n await this.client.quit()\n this.client = undefined\n return\n }\n\n // Redis 3/4 callback style\n return new Promise<void>((ok, fail) => {\n this.client.quit((err: any, result: any) => {\n if (err) return fail(err)\n ok()\n this.client = undefined\n })\n })\n }\n\n /**\n * Creates table for storing cache if it does not exist yet.\n */\n async synchronize(queryRunner: QueryRunner): Promise<void> {}\n\n /**\n * Get data from cache.\n * Returns cache result if found.\n * Returns undefined if result is not cached.\n */\n getFromCache(\n options: QueryResultCacheOptions,\n queryRunner?: QueryRunner,\n ): Promise<QueryResultCacheOptions | undefined> {\n const key = options.identifier || options.query\n if (!key) return Promise.resolve(undefined)\n\n if (this.isRedis5OrHigher()) {\n // Redis 5+ Promise-based API\n return this.client.get(key).then((result: any) => {\n return result ? JSON.parse(result) : undefined\n })\n }\n\n // Redis 3/4 callback-based API\n return new Promise<QueryResultCacheOptions | undefined>((ok, fail) => {\n this.client.get(key, (err: any, result: any) => {\n if (err) return fail(err)\n ok(result ? JSON.parse(result) : undefined)\n })\n })\n }\n\n /**\n * Checks if cache is expired or not.\n */\n isExpired(savedCache: QueryResultCacheOptions): boolean {\n return savedCache.time! + savedCache.duration < Date.now()\n }\n\n /**\n * Stores given query result in the cache.\n */\n async storeInCache(\n options: QueryResultCacheOptions,\n savedCache: QueryResultCacheOptions,\n queryRunner?: QueryRunner,\n ): Promise<void> {\n const key = options.identifier || options.query\n if (!key) return\n\n const value = JSON.stringify(options)\n const duration = options.duration\n\n if (this.isRedis5OrHigher()) {\n // Redis 5+ Promise-based API with PX option\n await this.client.set(key, value, {\n PX: duration,\n })\n return\n }\n\n // Redis 3/4 callback-based API\n return new Promise<void>((ok, fail) => {\n this.client.set(\n key,\n value,\n \"PX\",\n duration,\n (err: any, result: any) => {\n if (err) return fail(err)\n ok()\n },\n )\n })\n }\n\n /**\n * Clears everything stored in the cache.\n */\n async clear(queryRunner?: QueryRunner): Promise<void> {\n if (this.isRedis5OrHigher()) {\n // Redis 5+ Promise-based API\n await this.client.flushDb()\n return\n }\n\n // Redis 3/4 callback-based API\n return new Promise<void>((ok, fail) => {\n this.client.flushdb((err: any, result: any) => {\n if (err) return fail(err)\n ok()\n })\n })\n }\n\n /**\n * Removes all cached results by given identifiers from cache.\n */\n async remove(\n identifiers: string[],\n queryRunner?: QueryRunner,\n ): Promise<void> {\n await Promise.all(\n identifiers.map((identifier) => {\n return this.deleteKey(identifier)\n }),\n )\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Removes a single key from redis database.\n */\n protected async deleteKey(key: string): Promise<void> {\n if (this.isRedis5OrHigher()) {\n // Redis 5+ Promise-based API\n await this.client.del(key)\n return\n }\n\n // Redis 3/4 callback-based API\n return new Promise<void>((ok, fail) => {\n this.client.del(key, (err: any, result: any) => {\n if (err) return fail(err)\n ok()\n })\n })\n }\n\n /**\n * Loads redis dependency.\n */\n protected loadRedis(): any {\n try {\n if (this.clientType === \"ioredis/cluster\") {\n return PlatformTools.load(\"ioredis\")\n } else {\n return PlatformTools.load(this.clientType)\n }\n } catch {\n throw new TypeORMError(\n `Cannot use cache because ${this.clientType} is not installed. Please run \"npm i ${this.clientType}\".`,\n )\n }\n }\n\n /**\n * Detects the Redis package version by reading the installed package.json\n * and sets the appropriate API version (3 for callback-based, 5 for Promise-based).\n */\n private detectRedisVersion(): void {\n if (this.clientType !== \"redis\") return\n const version = PlatformTools.readPackageVersion(\"redis\")\n const major = parseInt(version.split(\".\")[0], 10)\n if (isNaN(major)) {\n throw new TypeORMError(`Invalid Redis version format: ${version}`)\n }\n if (major <= 4) {\n // Redis 3/4 uses callback-based API\n this.redisMajorVersion = 3\n } else {\n // Redis 5+ uses Promise-based API\n this.redisMajorVersion = 5\n }\n }\n\n /**\n * Checks if Redis version is 5.x or higher\n */\n private isRedis5OrHigher(): boolean {\n if (this.clientType !== \"redis\") return false\n return (\n this.redisMajorVersion !== undefined && this.redisMajorVersion >= 5\n )\n }\n}\n"],"sourceRoot":".."}
@@ -1,5 +1,7 @@
1
1
  #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
2
4
  require("ts-node").register();
3
- import "./cli";
5
+ require("./cli");
4
6
 
5
7
  //# sourceMappingURL=cli-ts-node-commonjs.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/cli-ts-node-commonjs.ts"],"names":[],"mappings":";AACA,OAAO,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAA;AAC7B,OAAO,OAAO,CAAA","file":"cli-ts-node-commonjs.js","sourcesContent":["#!/usr/bin/env node\nrequire(\"ts-node\").register()\nimport \"./cli\"\n"],"sourceRoot":"."}
1
+ {"version":3,"sources":["../browser/src/cli-ts-node-commonjs.ts"],"names":[],"mappings":";;;AACA,OAAO,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAA;AAC7B,iBAAc","file":"cli-ts-node-commonjs.js","sourcesContent":["#!/usr/bin/env node\nrequire(\"ts-node\").register()\nimport \"./cli\"\n"],"sourceRoot":"."}
@@ -1,9 +1,11 @@
1
1
  #!/usr/bin/env node
2
- import { spawnSync } from "child_process";
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const child_process_1 = require("child_process");
3
5
  if ((process.env["NODE_OPTIONS"] || "").includes("--loader ts-node"))
4
6
  require("./cli");
5
7
  else {
6
- const childProcess = spawnSync(process.argv[0], process.argv.slice(1), {
8
+ const childProcess = (0, child_process_1.spawnSync)(process.argv[0], process.argv.slice(1), {
7
9
  stdio: "inherit",
8
10
  env: {
9
11
  ...process.env,