typeorm 0.2.42-dev.f3e2b0e → 0.2.43-dev.a5493fb

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 (530) hide show
  1. package/README.md +38 -0
  2. package/browser/cache/RedisQueryResultCache.js +40 -35
  3. package/browser/cache/RedisQueryResultCache.js.map +1 -1
  4. package/browser/common/DeepPartial.d.ts +3 -3
  5. package/browser/common/DeepPartial.js.map +1 -1
  6. package/browser/common/RelationType.d.ts +14 -0
  7. package/browser/common/RelationType.js +3 -0
  8. package/browser/common/RelationType.js.map +1 -0
  9. package/browser/connection/BaseConnectionOptions.d.ts +5 -0
  10. package/browser/connection/BaseConnectionOptions.js.map +1 -1
  11. package/browser/connection/Connection.d.ts +7 -3
  12. package/browser/connection/Connection.js +80 -55
  13. package/browser/connection/Connection.js.map +1 -1
  14. package/browser/connection/ConnectionMetadataBuilder.d.ts +3 -3
  15. package/browser/connection/ConnectionMetadataBuilder.js +54 -22
  16. package/browser/connection/ConnectionMetadataBuilder.js.map +1 -1
  17. package/browser/connection/ConnectionOptionsReader.js +36 -29
  18. package/browser/connection/ConnectionOptionsReader.js.map +1 -1
  19. package/browser/connection/options-reader/ConnectionOptionsEnvReader.js +1 -0
  20. package/browser/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
  21. package/browser/decorator/Unique.d.ts +5 -4
  22. package/browser/decorator/Unique.js +7 -3
  23. package/browser/decorator/Unique.js.map +1 -1
  24. package/browser/decorator/columns/PrimaryGeneratedColumn.d.ts +2 -1
  25. package/browser/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
  26. package/browser/decorator/listeners/AfterRecover.d.ts +4 -0
  27. package/browser/decorator/listeners/AfterRecover.js +16 -0
  28. package/browser/decorator/listeners/AfterRecover.js.map +1 -0
  29. package/browser/decorator/listeners/AfterSoftRemove.d.ts +4 -0
  30. package/browser/decorator/listeners/AfterSoftRemove.js +16 -0
  31. package/browser/decorator/listeners/AfterSoftRemove.js.map +1 -0
  32. package/browser/decorator/listeners/BeforeRecover.d.ts +4 -0
  33. package/browser/decorator/listeners/BeforeRecover.js +16 -0
  34. package/browser/decorator/listeners/BeforeRecover.js.map +1 -0
  35. package/browser/decorator/listeners/BeforeSoftRemove.d.ts +4 -0
  36. package/browser/decorator/listeners/BeforeSoftRemove.js +16 -0
  37. package/browser/decorator/listeners/BeforeSoftRemove.js.map +1 -0
  38. package/browser/decorator/options/ColumnOptions.d.ts +4 -0
  39. package/browser/decorator/options/ColumnOptions.js.map +1 -1
  40. package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.d.ts +22 -0
  41. package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.js +3 -0
  42. package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -0
  43. package/browser/decorator/options/RelationOptions.d.ts +1 -1
  44. package/browser/decorator/options/RelationOptions.js.map +1 -1
  45. package/browser/decorator/options/UniqueOptions.d.ts +10 -0
  46. package/browser/decorator/options/UniqueOptions.js +3 -0
  47. package/browser/decorator/options/UniqueOptions.js.map +1 -0
  48. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js +2 -2
  49. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  50. package/browser/driver/better-sqlite3/BetterSqlite3Driver.d.ts +14 -1
  51. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js +94 -9
  52. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  53. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.d.ts +10 -0
  54. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js +64 -1
  55. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  56. package/browser/driver/capacitor/CapacitorQueryRunner.d.ts +8 -0
  57. package/browser/driver/capacitor/CapacitorQueryRunner.js +30 -0
  58. package/browser/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
  59. package/browser/driver/cockroachdb/CockroachQueryRunner.js +1 -1
  60. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  61. package/browser/driver/cordova/CordovaQueryRunner.d.ts +8 -0
  62. package/browser/driver/cordova/CordovaQueryRunner.js +30 -0
  63. package/browser/driver/cordova/CordovaQueryRunner.js.map +1 -1
  64. package/browser/driver/expo/ExpoQueryRunner.d.ts +8 -0
  65. package/browser/driver/expo/ExpoQueryRunner.js +30 -0
  66. package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
  67. package/browser/driver/mongodb/MongoConnectionOptions.d.ts +1 -1
  68. package/browser/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  69. package/browser/driver/mongodb/MongoQueryRunner.d.ts +8 -0
  70. package/browser/driver/mongodb/MongoQueryRunner.js +20 -0
  71. package/browser/driver/mongodb/MongoQueryRunner.js.map +1 -1
  72. package/browser/driver/mysql/MysqlQueryRunner.js +1 -1
  73. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  74. package/browser/driver/nativescript/NativescriptQueryRunner.d.ts +8 -0
  75. package/browser/driver/nativescript/NativescriptQueryRunner.js +30 -0
  76. package/browser/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  77. package/browser/driver/oracle/OracleQueryRunner.js +1 -1
  78. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  79. package/browser/driver/postgres/PostgresQueryRunner.js +52 -19
  80. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  81. package/browser/driver/react-native/ReactNativeQueryRunner.d.ts +8 -0
  82. package/browser/driver/react-native/ReactNativeQueryRunner.js +30 -0
  83. package/browser/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  84. package/browser/driver/sap/SapQueryRunner.js +1 -1
  85. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  86. package/browser/driver/sqlite/SqliteDriver.d.ts +13 -0
  87. package/browser/driver/sqlite/SqliteDriver.js +95 -11
  88. package/browser/driver/sqlite/SqliteDriver.js.map +1 -1
  89. package/browser/driver/sqlite/SqliteQueryRunner.d.ts +8 -0
  90. package/browser/driver/sqlite/SqliteQueryRunner.js +30 -0
  91. package/browser/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  92. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.d.ts +13 -0
  93. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +25 -2
  94. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  95. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +11 -1
  96. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +119 -58
  97. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  98. package/browser/driver/sqljs/SqljsQueryRunner.d.ts +8 -0
  99. package/browser/driver/sqljs/SqljsQueryRunner.js +30 -0
  100. package/browser/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  101. package/browser/entity-manager/EntityManager.d.ts +2 -2
  102. package/browser/entity-manager/EntityManager.js +2 -12
  103. package/browser/entity-manager/EntityManager.js.map +1 -1
  104. package/browser/entity-manager/MongoEntityManager.d.ts +2 -0
  105. package/browser/entity-manager/MongoEntityManager.js +37 -5
  106. package/browser/entity-manager/MongoEntityManager.js.map +1 -1
  107. package/browser/entity-schema/EntitySchemaOptions.d.ts +6 -0
  108. package/browser/entity-schema/EntitySchemaOptions.js.map +1 -1
  109. package/browser/entity-schema/EntitySchemaRelationOptions.d.ts +7 -1
  110. package/browser/entity-schema/EntitySchemaRelationOptions.js.map +1 -1
  111. package/browser/entity-schema/EntitySchemaTransformer.js +4 -1
  112. package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
  113. package/browser/entity-schema/EntitySchemaUniqueOptions.d.ts +5 -0
  114. package/browser/entity-schema/EntitySchemaUniqueOptions.js.map +1 -1
  115. package/browser/find-options/FindOneOptions.d.ts +6 -0
  116. package/browser/find-options/FindOneOptions.js.map +1 -1
  117. package/browser/find-options/FindOptionsUtils.js +4 -0
  118. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  119. package/browser/find-options/operator/Like.d.ts +1 -1
  120. package/browser/find-options/operator/Like.js +1 -1
  121. package/browser/find-options/operator/Like.js.map +1 -1
  122. package/browser/find-options/operator/Not.d.ts +1 -1
  123. package/browser/find-options/operator/Not.js +1 -1
  124. package/browser/find-options/operator/Not.js.map +1 -1
  125. package/browser/globals.js +34 -7
  126. package/browser/globals.js.map +1 -1
  127. package/browser/index.d.ts +6 -0
  128. package/browser/index.js +6 -0
  129. package/browser/index.js.map +1 -1
  130. package/browser/metadata/ColumnMetadata.d.ts +4 -0
  131. package/browser/metadata/ColumnMetadata.js +2 -0
  132. package/browser/metadata/ColumnMetadata.js.map +1 -1
  133. package/browser/metadata/EntityMetadata.d.ts +16 -0
  134. package/browser/metadata/EntityMetadata.js +16 -0
  135. package/browser/metadata/EntityMetadata.js.map +1 -1
  136. package/browser/metadata/RelationMetadata.d.ts +1 -1
  137. package/browser/metadata/RelationMetadata.js.map +1 -1
  138. package/browser/metadata/UniqueMetadata.d.ts +5 -0
  139. package/browser/metadata/UniqueMetadata.js +1 -0
  140. package/browser/metadata/UniqueMetadata.js.map +1 -1
  141. package/browser/metadata/types/EventListenerTypes.d.ts +5 -1
  142. package/browser/metadata/types/EventListenerTypes.js +4 -0
  143. package/browser/metadata/types/EventListenerTypes.js.map +1 -1
  144. package/browser/metadata-args/UniqueMetadataArgs.d.ts +5 -0
  145. package/browser/metadata-args/UniqueMetadataArgs.js.map +1 -1
  146. package/browser/metadata-builder/EntityMetadataBuilder.js +4 -0
  147. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  148. package/browser/metadata-builder/EntityMetadataValidator.js +2 -1
  149. package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
  150. package/browser/migration/MigrationExecutor.js +38 -26
  151. package/browser/migration/MigrationExecutor.js.map +1 -1
  152. package/browser/persistence/SubjectExecutor.d.ts +4 -2
  153. package/browser/persistence/SubjectExecutor.js +105 -13
  154. package/browser/persistence/SubjectExecutor.js.map +1 -1
  155. package/browser/persistence/subject-builder/OneToManySubjectBuilder.js +3 -0
  156. package/browser/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  157. package/browser/persistence/tree/MaterializedPathSubjectExecutor.js +1 -1
  158. package/browser/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  159. package/browser/platform/PlatformTools.d.ts +1 -0
  160. package/browser/platform/PlatformTools.js +5 -0
  161. package/browser/platform/PlatformTools.js.map +1 -1
  162. package/browser/query-builder/DeleteQueryBuilder.d.ts +4 -2
  163. package/browser/query-builder/DeleteQueryBuilder.js +4 -2
  164. package/browser/query-builder/DeleteQueryBuilder.js.map +1 -1
  165. package/browser/query-builder/InsertQueryBuilder.d.ts +1 -1
  166. package/browser/query-builder/InsertQueryBuilder.js +12 -3
  167. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  168. package/browser/query-builder/NotBrackets.d.ts +7 -0
  169. package/browser/query-builder/NotBrackets.js +16 -0
  170. package/browser/query-builder/NotBrackets.js.map +1 -0
  171. package/browser/query-builder/QueryBuilder.d.ts +3 -2
  172. package/browser/query-builder/QueryBuilder.js +2 -1
  173. package/browser/query-builder/QueryBuilder.js.map +1 -1
  174. package/browser/query-builder/RelationLoader.js +11 -6
  175. package/browser/query-builder/RelationLoader.js.map +1 -1
  176. package/browser/query-builder/RelationQueryBuilder.d.ts +1 -1
  177. package/browser/query-builder/RelationQueryBuilder.js +1 -1
  178. package/browser/query-builder/RelationQueryBuilder.js.map +1 -1
  179. package/browser/query-builder/SelectQueryBuilder.d.ts +10 -1
  180. package/browser/query-builder/SelectQueryBuilder.js +28 -21
  181. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  182. package/browser/query-builder/SoftDeleteQueryBuilder.d.ts +1 -1
  183. package/browser/query-builder/SoftDeleteQueryBuilder.js +45 -31
  184. package/browser/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  185. package/browser/query-builder/UpdateQueryBuilder.d.ts +4 -2
  186. package/browser/query-builder/UpdateQueryBuilder.js +11 -6
  187. package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
  188. package/browser/query-builder/WhereExpressionBuilder.d.ts +3 -1
  189. package/browser/query-builder/WhereExpressionBuilder.js.map +1 -1
  190. package/browser/query-builder/relation-id/RelationIdLoader.js +9 -9
  191. package/browser/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  192. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.d.ts +13 -0
  193. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js +94 -50
  194. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  195. package/browser/query-runner/BaseQueryRunner.d.ts +10 -2
  196. package/browser/query-runner/BaseQueryRunner.js +23 -3
  197. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  198. package/browser/query-runner/QueryRunner.d.ts +8 -0
  199. package/browser/query-runner/QueryRunner.js.map +1 -1
  200. package/browser/repository/AbstractRepository.d.ts +2 -2
  201. package/browser/repository/AbstractRepository.js +2 -2
  202. package/browser/repository/AbstractRepository.js.map +1 -1
  203. package/browser/repository/BaseEntity.d.ts +1 -1
  204. package/browser/repository/BaseEntity.js +1 -1
  205. package/browser/repository/BaseEntity.js.map +1 -1
  206. package/browser/repository/Repository.d.ts +1 -1
  207. package/browser/repository/Repository.js +1 -1
  208. package/browser/repository/Repository.js.map +1 -1
  209. package/browser/repository/TreeRepository.js +3 -2
  210. package/browser/repository/TreeRepository.js.map +1 -1
  211. package/browser/schema-builder/RdbmsSchemaBuilder.js +37 -31
  212. package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  213. package/browser/schema-builder/options/TableColumnOptions.d.ts +4 -0
  214. package/browser/schema-builder/options/TableColumnOptions.js.map +1 -1
  215. package/browser/schema-builder/options/TableUniqueOptions.d.ts +5 -0
  216. package/browser/schema-builder/options/TableUniqueOptions.js.map +1 -1
  217. package/browser/schema-builder/table/TableColumn.d.ts +4 -0
  218. package/browser/schema-builder/table/TableColumn.js +2 -0
  219. package/browser/schema-builder/table/TableColumn.js.map +1 -1
  220. package/browser/schema-builder/table/TableUnique.d.ts +5 -0
  221. package/browser/schema-builder/table/TableUnique.js +5 -2
  222. package/browser/schema-builder/table/TableUnique.js.map +1 -1
  223. package/browser/schema-builder/util/TableUtils.js +1 -0
  224. package/browser/schema-builder/util/TableUtils.js.map +1 -1
  225. package/browser/subscriber/Broadcaster.d.ts +40 -0
  226. package/browser/subscriber/Broadcaster.js +191 -31
  227. package/browser/subscriber/Broadcaster.js.map +1 -1
  228. package/browser/subscriber/EntitySubscriberInterface.d.ts +18 -0
  229. package/browser/subscriber/EntitySubscriberInterface.js.map +1 -1
  230. package/browser/subscriber/event/RecoverEvent.d.ts +6 -0
  231. package/browser/subscriber/event/RecoverEvent.js +3 -0
  232. package/browser/subscriber/event/RecoverEvent.js.map +1 -0
  233. package/browser/subscriber/event/SoftRemoveEvent.d.ts +6 -0
  234. package/browser/subscriber/event/SoftRemoveEvent.js +3 -0
  235. package/browser/subscriber/event/SoftRemoveEvent.js.map +1 -0
  236. package/browser/util/DirectoryExportedClassesLoader.d.ts +1 -1
  237. package/browser/util/DirectoryExportedClassesLoader.js +55 -31
  238. package/browser/util/DirectoryExportedClassesLoader.js.map +1 -1
  239. package/browser/util/ImportUtils.d.ts +1 -0
  240. package/browser/util/ImportUtils.js +90 -0
  241. package/browser/util/ImportUtils.js.map +1 -0
  242. package/browser/util/PathUtils.d.ts +10 -0
  243. package/browser/util/PathUtils.js +28 -0
  244. package/browser/util/PathUtils.js.map +1 -0
  245. package/browser/util/RandomGenerator.d.ts +0 -4
  246. package/browser/util/RandomGenerator.js +0 -9
  247. package/browser/util/RandomGenerator.js.map +1 -1
  248. package/cache/RedisQueryResultCache.js +39 -34
  249. package/cache/RedisQueryResultCache.js.map +1 -1
  250. package/commands/CacheClearCommand.js +3 -3
  251. package/commands/CacheClearCommand.js.map +1 -1
  252. package/commands/CommandUtils.d.ts +4 -0
  253. package/commands/CommandUtils.js +10 -0
  254. package/commands/CommandUtils.js.map +1 -1
  255. package/commands/EntityCreateCommand.js +2 -2
  256. package/commands/EntityCreateCommand.js.map +1 -1
  257. package/commands/InitCommand.d.ts +9 -7
  258. package/commands/InitCommand.js +74 -45
  259. package/commands/InitCommand.js.map +1 -1
  260. package/commands/MigrationCreateCommand.d.ts +2 -0
  261. package/commands/MigrationCreateCommand.js +9 -3
  262. package/commands/MigrationCreateCommand.js.map +1 -1
  263. package/commands/MigrationGenerateCommand.d.ts +2 -0
  264. package/commands/MigrationGenerateCommand.js +9 -3
  265. package/commands/MigrationGenerateCommand.js.map +1 -1
  266. package/commands/MigrationRevertCommand.js +2 -3
  267. package/commands/MigrationRevertCommand.js.map +1 -1
  268. package/commands/MigrationRunCommand.js +2 -3
  269. package/commands/MigrationRunCommand.js.map +1 -1
  270. package/commands/MigrationShowCommand.js +5 -7
  271. package/commands/MigrationShowCommand.js.map +1 -1
  272. package/commands/QueryCommand.d.ts +1 -1
  273. package/commands/QueryCommand.js +2 -3
  274. package/commands/QueryCommand.js.map +1 -1
  275. package/commands/SchemaDropCommand.js +2 -2
  276. package/commands/SchemaDropCommand.js.map +1 -1
  277. package/commands/SchemaLogCommand.js +2 -2
  278. package/commands/SchemaLogCommand.js.map +1 -1
  279. package/commands/SchemaSyncCommand.js +2 -2
  280. package/commands/SchemaSyncCommand.js.map +1 -1
  281. package/commands/SubscriberCreateCommand.js +3 -3
  282. package/commands/SubscriberCreateCommand.js.map +1 -1
  283. package/common/DeepPartial.d.ts +3 -3
  284. package/common/DeepPartial.js.map +1 -1
  285. package/common/RelationType.d.ts +14 -0
  286. package/common/RelationType.js +4 -0
  287. package/common/RelationType.js.map +1 -0
  288. package/connection/BaseConnectionOptions.d.ts +5 -0
  289. package/connection/BaseConnectionOptions.js.map +1 -1
  290. package/connection/Connection.d.ts +7 -3
  291. package/connection/Connection.js +80 -55
  292. package/connection/Connection.js.map +1 -1
  293. package/connection/ConnectionMetadataBuilder.d.ts +3 -3
  294. package/connection/ConnectionMetadataBuilder.js +53 -21
  295. package/connection/ConnectionMetadataBuilder.js.map +1 -1
  296. package/connection/ConnectionOptionsReader.js +35 -28
  297. package/connection/ConnectionOptionsReader.js.map +1 -1
  298. package/connection/options-reader/ConnectionOptionsEnvReader.js +1 -0
  299. package/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
  300. package/decorator/Unique.d.ts +5 -4
  301. package/decorator/Unique.js +7 -3
  302. package/decorator/Unique.js.map +1 -1
  303. package/decorator/columns/PrimaryGeneratedColumn.d.ts +2 -1
  304. package/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
  305. package/decorator/listeners/AfterRecover.d.ts +4 -0
  306. package/decorator/listeners/AfterRecover.js +20 -0
  307. package/decorator/listeners/AfterRecover.js.map +1 -0
  308. package/decorator/listeners/AfterSoftRemove.d.ts +4 -0
  309. package/decorator/listeners/AfterSoftRemove.js +20 -0
  310. package/decorator/listeners/AfterSoftRemove.js.map +1 -0
  311. package/decorator/listeners/BeforeRecover.d.ts +4 -0
  312. package/decorator/listeners/BeforeRecover.js +20 -0
  313. package/decorator/listeners/BeforeRecover.js.map +1 -0
  314. package/decorator/listeners/BeforeSoftRemove.d.ts +4 -0
  315. package/decorator/listeners/BeforeSoftRemove.js +20 -0
  316. package/decorator/listeners/BeforeSoftRemove.js.map +1 -0
  317. package/decorator/options/ColumnOptions.d.ts +4 -0
  318. package/decorator/options/ColumnOptions.js.map +1 -1
  319. package/decorator/options/PrimaryGeneratedColumnIdentityOptions.d.ts +22 -0
  320. package/decorator/options/PrimaryGeneratedColumnIdentityOptions.js +4 -0
  321. package/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -0
  322. package/decorator/options/RelationOptions.d.ts +1 -1
  323. package/decorator/options/RelationOptions.js.map +1 -1
  324. package/decorator/options/UniqueOptions.d.ts +10 -0
  325. package/decorator/options/UniqueOptions.js +4 -0
  326. package/decorator/options/UniqueOptions.js.map +1 -0
  327. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js +2 -2
  328. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  329. package/driver/better-sqlite3/BetterSqlite3Driver.d.ts +14 -1
  330. package/driver/better-sqlite3/BetterSqlite3Driver.js +93 -8
  331. package/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  332. package/driver/better-sqlite3/BetterSqlite3QueryRunner.d.ts +10 -0
  333. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js +63 -0
  334. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  335. package/driver/capacitor/CapacitorQueryRunner.d.ts +8 -0
  336. package/driver/capacitor/CapacitorQueryRunner.js +30 -0
  337. package/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
  338. package/driver/cockroachdb/CockroachQueryRunner.js +1 -1
  339. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  340. package/driver/cordova/CordovaQueryRunner.d.ts +8 -0
  341. package/driver/cordova/CordovaQueryRunner.js +30 -0
  342. package/driver/cordova/CordovaQueryRunner.js.map +1 -1
  343. package/driver/expo/ExpoQueryRunner.d.ts +8 -0
  344. package/driver/expo/ExpoQueryRunner.js +30 -0
  345. package/driver/expo/ExpoQueryRunner.js.map +1 -1
  346. package/driver/mongodb/MongoConnectionOptions.d.ts +1 -1
  347. package/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  348. package/driver/mongodb/MongoQueryRunner.d.ts +8 -0
  349. package/driver/mongodb/MongoQueryRunner.js +20 -0
  350. package/driver/mongodb/MongoQueryRunner.js.map +1 -1
  351. package/driver/mysql/MysqlQueryRunner.js +1 -1
  352. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  353. package/driver/nativescript/NativescriptQueryRunner.d.ts +8 -0
  354. package/driver/nativescript/NativescriptQueryRunner.js +30 -0
  355. package/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  356. package/driver/oracle/OracleQueryRunner.js +1 -1
  357. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  358. package/driver/postgres/PostgresQueryRunner.js +52 -19
  359. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  360. package/driver/react-native/ReactNativeQueryRunner.d.ts +8 -0
  361. package/driver/react-native/ReactNativeQueryRunner.js +30 -0
  362. package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  363. package/driver/sap/SapQueryRunner.js +1 -1
  364. package/driver/sap/SapQueryRunner.js.map +1 -1
  365. package/driver/sqlite/SqliteDriver.d.ts +13 -0
  366. package/driver/sqlite/SqliteDriver.js +94 -10
  367. package/driver/sqlite/SqliteDriver.js.map +1 -1
  368. package/driver/sqlite/SqliteQueryRunner.d.ts +8 -0
  369. package/driver/sqlite/SqliteQueryRunner.js +30 -0
  370. package/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  371. package/driver/sqlite-abstract/AbstractSqliteDriver.d.ts +13 -0
  372. package/driver/sqlite-abstract/AbstractSqliteDriver.js +25 -2
  373. package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  374. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +11 -1
  375. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +119 -58
  376. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  377. package/driver/sqljs/SqljsQueryRunner.d.ts +8 -0
  378. package/driver/sqljs/SqljsQueryRunner.js +30 -0
  379. package/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  380. package/entity-manager/EntityManager.d.ts +2 -2
  381. package/entity-manager/EntityManager.js +2 -12
  382. package/entity-manager/EntityManager.js.map +1 -1
  383. package/entity-manager/MongoEntityManager.d.ts +2 -0
  384. package/entity-manager/MongoEntityManager.js +37 -5
  385. package/entity-manager/MongoEntityManager.js.map +1 -1
  386. package/entity-schema/EntitySchemaOptions.d.ts +6 -0
  387. package/entity-schema/EntitySchemaOptions.js.map +1 -1
  388. package/entity-schema/EntitySchemaRelationOptions.d.ts +7 -1
  389. package/entity-schema/EntitySchemaRelationOptions.js.map +1 -1
  390. package/entity-schema/EntitySchemaTransformer.js +4 -1
  391. package/entity-schema/EntitySchemaTransformer.js.map +1 -1
  392. package/entity-schema/EntitySchemaUniqueOptions.d.ts +5 -0
  393. package/entity-schema/EntitySchemaUniqueOptions.js.map +1 -1
  394. package/find-options/FindOneOptions.d.ts +6 -0
  395. package/find-options/FindOneOptions.js.map +1 -1
  396. package/find-options/FindOptionsUtils.js +4 -0
  397. package/find-options/FindOptionsUtils.js.map +1 -1
  398. package/find-options/operator/Like.d.ts +1 -1
  399. package/find-options/operator/Like.js +1 -1
  400. package/find-options/operator/Like.js.map +1 -1
  401. package/find-options/operator/Not.d.ts +1 -1
  402. package/find-options/operator/Not.js +1 -1
  403. package/find-options/operator/Not.js.map +1 -1
  404. package/globals.js +33 -6
  405. package/globals.js.map +1 -1
  406. package/index.d.ts +6 -0
  407. package/index.js +8 -1
  408. package/index.js.map +1 -1
  409. package/index.mjs +360 -0
  410. package/metadata/ColumnMetadata.d.ts +4 -0
  411. package/metadata/ColumnMetadata.js +2 -0
  412. package/metadata/ColumnMetadata.js.map +1 -1
  413. package/metadata/EntityMetadata.d.ts +16 -0
  414. package/metadata/EntityMetadata.js +16 -0
  415. package/metadata/EntityMetadata.js.map +1 -1
  416. package/metadata/RelationMetadata.d.ts +1 -1
  417. package/metadata/RelationMetadata.js.map +1 -1
  418. package/metadata/UniqueMetadata.d.ts +5 -0
  419. package/metadata/UniqueMetadata.js +1 -0
  420. package/metadata/UniqueMetadata.js.map +1 -1
  421. package/metadata/types/EventListenerTypes.d.ts +5 -1
  422. package/metadata/types/EventListenerTypes.js +4 -0
  423. package/metadata/types/EventListenerTypes.js.map +1 -1
  424. package/metadata-args/UniqueMetadataArgs.d.ts +5 -0
  425. package/metadata-args/UniqueMetadataArgs.js.map +1 -1
  426. package/metadata-builder/EntityMetadataBuilder.js +4 -0
  427. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  428. package/metadata-builder/EntityMetadataValidator.js +2 -1
  429. package/metadata-builder/EntityMetadataValidator.js.map +1 -1
  430. package/migration/MigrationExecutor.js +38 -26
  431. package/migration/MigrationExecutor.js.map +1 -1
  432. package/package.json +1 -1
  433. package/persistence/SubjectExecutor.d.ts +4 -2
  434. package/persistence/SubjectExecutor.js +105 -13
  435. package/persistence/SubjectExecutor.js.map +1 -1
  436. package/persistence/subject-builder/OneToManySubjectBuilder.js +3 -0
  437. package/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  438. package/persistence/tree/MaterializedPathSubjectExecutor.js +1 -1
  439. package/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  440. package/platform/PlatformTools.d.ts +1 -0
  441. package/platform/PlatformTools.js +5 -0
  442. package/platform/PlatformTools.js.map +1 -1
  443. package/query-builder/DeleteQueryBuilder.d.ts +4 -2
  444. package/query-builder/DeleteQueryBuilder.js +4 -2
  445. package/query-builder/DeleteQueryBuilder.js.map +1 -1
  446. package/query-builder/InsertQueryBuilder.d.ts +1 -1
  447. package/query-builder/InsertQueryBuilder.js +12 -3
  448. package/query-builder/InsertQueryBuilder.js.map +1 -1
  449. package/query-builder/NotBrackets.d.ts +7 -0
  450. package/query-builder/NotBrackets.js +19 -0
  451. package/query-builder/NotBrackets.js.map +1 -0
  452. package/query-builder/QueryBuilder.d.ts +3 -2
  453. package/query-builder/QueryBuilder.js +2 -1
  454. package/query-builder/QueryBuilder.js.map +1 -1
  455. package/query-builder/RelationLoader.js +11 -6
  456. package/query-builder/RelationLoader.js.map +1 -1
  457. package/query-builder/RelationQueryBuilder.d.ts +1 -1
  458. package/query-builder/RelationQueryBuilder.js +1 -1
  459. package/query-builder/RelationQueryBuilder.js.map +1 -1
  460. package/query-builder/SelectQueryBuilder.d.ts +10 -1
  461. package/query-builder/SelectQueryBuilder.js +28 -21
  462. package/query-builder/SelectQueryBuilder.js.map +1 -1
  463. package/query-builder/SoftDeleteQueryBuilder.d.ts +1 -1
  464. package/query-builder/SoftDeleteQueryBuilder.js +45 -31
  465. package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  466. package/query-builder/UpdateQueryBuilder.d.ts +4 -2
  467. package/query-builder/UpdateQueryBuilder.js +11 -6
  468. package/query-builder/UpdateQueryBuilder.js.map +1 -1
  469. package/query-builder/WhereExpressionBuilder.d.ts +3 -1
  470. package/query-builder/WhereExpressionBuilder.js.map +1 -1
  471. package/query-builder/relation-id/RelationIdLoader.js +9 -9
  472. package/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  473. package/query-builder/transformer/RawSqlResultsToEntityTransformer.d.ts +13 -0
  474. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js +94 -50
  475. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  476. package/query-runner/BaseQueryRunner.d.ts +10 -2
  477. package/query-runner/BaseQueryRunner.js +23 -3
  478. package/query-runner/BaseQueryRunner.js.map +1 -1
  479. package/query-runner/QueryRunner.d.ts +8 -0
  480. package/query-runner/QueryRunner.js.map +1 -1
  481. package/repository/AbstractRepository.d.ts +2 -2
  482. package/repository/AbstractRepository.js +2 -2
  483. package/repository/AbstractRepository.js.map +1 -1
  484. package/repository/BaseEntity.d.ts +1 -1
  485. package/repository/BaseEntity.js +1 -1
  486. package/repository/BaseEntity.js.map +1 -1
  487. package/repository/Repository.d.ts +1 -1
  488. package/repository/Repository.js +1 -1
  489. package/repository/Repository.js.map +1 -1
  490. package/repository/TreeRepository.js +3 -2
  491. package/repository/TreeRepository.js.map +1 -1
  492. package/schema-builder/RdbmsSchemaBuilder.js +37 -31
  493. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  494. package/schema-builder/options/TableColumnOptions.d.ts +4 -0
  495. package/schema-builder/options/TableColumnOptions.js.map +1 -1
  496. package/schema-builder/options/TableUniqueOptions.d.ts +5 -0
  497. package/schema-builder/options/TableUniqueOptions.js.map +1 -1
  498. package/schema-builder/table/TableColumn.d.ts +4 -0
  499. package/schema-builder/table/TableColumn.js +2 -0
  500. package/schema-builder/table/TableColumn.js.map +1 -1
  501. package/schema-builder/table/TableUnique.d.ts +5 -0
  502. package/schema-builder/table/TableUnique.js +5 -2
  503. package/schema-builder/table/TableUnique.js.map +1 -1
  504. package/schema-builder/util/TableUtils.js +1 -0
  505. package/schema-builder/util/TableUtils.js.map +1 -1
  506. package/subscriber/Broadcaster.d.ts +40 -0
  507. package/subscriber/Broadcaster.js +191 -31
  508. package/subscriber/Broadcaster.js.map +1 -1
  509. package/subscriber/EntitySubscriberInterface.d.ts +18 -0
  510. package/subscriber/EntitySubscriberInterface.js.map +1 -1
  511. package/subscriber/event/RecoverEvent.d.ts +6 -0
  512. package/subscriber/event/RecoverEvent.js +4 -0
  513. package/subscriber/event/RecoverEvent.js.map +1 -0
  514. package/subscriber/event/SoftRemoveEvent.d.ts +6 -0
  515. package/subscriber/event/SoftRemoveEvent.js +4 -0
  516. package/subscriber/event/SoftRemoveEvent.js.map +1 -0
  517. package/typeorm-class-transformer-shim.js +20 -0
  518. package/typeorm-model-shim.js +20 -0
  519. package/util/DirectoryExportedClassesLoader.d.ts +1 -1
  520. package/util/DirectoryExportedClassesLoader.js +54 -31
  521. package/util/DirectoryExportedClassesLoader.js.map +1 -1
  522. package/util/ImportUtils.d.ts +1 -0
  523. package/util/ImportUtils.js +94 -0
  524. package/util/ImportUtils.js.map +1 -0
  525. package/util/PathUtils.d.ts +10 -0
  526. package/util/PathUtils.js +34 -0
  527. package/util/PathUtils.js.map +1 -0
  528. package/util/RandomGenerator.d.ts +0 -4
  529. package/util/RandomGenerator.js +0 -9
  530. package/util/RandomGenerator.js.map +1 -1
package/README.md CHANGED
@@ -71,6 +71,7 @@ TypeORM is highly influenced by other ORMs, such as [Hibernate](http://hibernate
71
71
  * Supports MongoDB NoSQL database.
72
72
  * Works in NodeJS / Browser / Ionic / Cordova / React Native / NativeScript / Expo / Electron platforms.
73
73
  * TypeScript and JavaScript support.
74
+ * ESM and CommonJS support.
74
75
  * Produced code is performant, flexible, clean and maintainable.
75
76
  * Follows all possible best practices.
76
77
  * CLI.
@@ -321,6 +322,9 @@ That's it, your application should successfully run and insert a new user into t
321
322
  You can continue to work with this project and integrate other modules you need and start
322
323
  creating more entities.
323
324
 
325
+ > You can generate an ESM project by running
326
+ `typeorm init --name MyProject --database postgres --module esm` command.
327
+
324
328
  > You can generate an even more advanced project with express installed by running
325
329
  `typeorm init --name MyProject --database mysql --express` command.
326
330
 
@@ -950,6 +954,40 @@ Note that we should use the `@JoinColumn` decorator only on one side of a relati
950
954
  Whichever side you put this decorator on will be the owning side of the relationship.
951
955
  The owning side of a relationship contains a column with a foreign key in the database.
952
956
 
957
+ ### Relations in ESM projects
958
+
959
+ If you use ESM in your TypeScript project, you should use the `Relation` wrapper type in relation properties to avoid circular dependency issues.
960
+ Let's modify our entities:
961
+
962
+ ```javascript
963
+ import { Entity, Column, PrimaryGeneratedColumn, OneToOne, JoinColumn, Relation } from "typeorm";
964
+ import { Photo } from "./Photo";
965
+
966
+ @Entity()
967
+ export class PhotoMetadata {
968
+
969
+ /* ... other columns */
970
+
971
+ @OneToOne(type => Photo, photo => photo.metadata)
972
+ @JoinColumn()
973
+ photo: Relation<Photo>;
974
+ }
975
+ ```
976
+
977
+ ```javascript
978
+ import { Entity, Column, PrimaryGeneratedColumn, OneToOne, Relation } from "typeorm";
979
+ import { PhotoMetadata } from "./PhotoMetadata";
980
+
981
+ @Entity()
982
+ export class Photo {
983
+
984
+ /* ... other columns */
985
+
986
+ @OneToOne(type => PhotoMetadata, photoMetadata => photoMetadata.photo)
987
+ metadata: Relation<PhotoMetadata>;
988
+ }
989
+ ```
990
+
953
991
  ### Loading objects with their relations
954
992
 
955
993
  Now let's load our photo and its photo metadata in a single query.
@@ -1,4 +1,4 @@
1
- import { __awaiter, __generator } from "tslib";
1
+ import { __assign, __awaiter, __generator } from "tslib";
2
2
  import { PlatformTools } from "../platform/PlatformTools";
3
3
  import { TypeORMError } from "../error/TypeORMError";
4
4
  /**
@@ -23,43 +23,48 @@ var RedisQueryResultCache = /** @class */ (function () {
23
23
  return __awaiter(this, void 0, void 0, function () {
24
24
  var cacheOptions;
25
25
  return __generator(this, function (_a) {
26
- cacheOptions = this.connection.options.cache;
27
- if (this.clientType === "redis") {
28
- if (cacheOptions && cacheOptions.options) {
29
- this.client = this.redis.createClient(cacheOptions.options);
30
- }
31
- else {
32
- this.client = this.redis.createClient();
33
- }
34
- }
35
- else if (this.clientType === "ioredis") {
36
- if (cacheOptions && cacheOptions.port) {
37
- if (cacheOptions.options) {
38
- this.client = new this.redis(cacheOptions.port, cacheOptions.options);
26
+ switch (_a.label) {
27
+ case 0:
28
+ cacheOptions = this.connection.options.cache;
29
+ if (!(this.clientType === "redis")) return [3 /*break*/, 3];
30
+ this.client = this.redis.createClient(__assign(__assign({}, cacheOptions === null || cacheOptions === void 0 ? void 0 : cacheOptions.options), { legacyMode: true }));
31
+ if (!("connect" in this.client)) return [3 /*break*/, 2];
32
+ return [4 /*yield*/, this.client.connect()];
33
+ case 1:
34
+ _a.sent();
35
+ _a.label = 2;
36
+ case 2: return [3 /*break*/, 4];
37
+ case 3:
38
+ if (this.clientType === "ioredis") {
39
+ if (cacheOptions && cacheOptions.port) {
40
+ if (cacheOptions.options) {
41
+ this.client = new this.redis(cacheOptions.port, cacheOptions.options);
42
+ }
43
+ else {
44
+ this.client = new this.redis(cacheOptions.port);
45
+ }
46
+ }
47
+ else if (cacheOptions && cacheOptions.options) {
48
+ this.client = new this.redis(cacheOptions.options);
49
+ }
50
+ else {
51
+ this.client = new this.redis();
52
+ }
39
53
  }
40
- else {
41
- this.client = new this.redis(cacheOptions.port);
54
+ else if (this.clientType === "ioredis/cluster") {
55
+ if (cacheOptions && cacheOptions.options && Array.isArray(cacheOptions.options)) {
56
+ this.client = new this.redis.Cluster(cacheOptions.options);
57
+ }
58
+ else if (cacheOptions && cacheOptions.options && cacheOptions.options.startupNodes) {
59
+ this.client = new this.redis.Cluster(cacheOptions.options.startupNodes, cacheOptions.options.options);
60
+ }
61
+ else {
62
+ throw new TypeORMError("options.startupNodes required for " + this.clientType + ".");
63
+ }
42
64
  }
43
- }
44
- else if (cacheOptions && cacheOptions.options) {
45
- this.client = new this.redis(cacheOptions.options);
46
- }
47
- else {
48
- this.client = new this.redis();
49
- }
50
- }
51
- else if (this.clientType === "ioredis/cluster") {
52
- if (cacheOptions && cacheOptions.options && Array.isArray(cacheOptions.options)) {
53
- this.client = new this.redis.Cluster(cacheOptions.options);
54
- }
55
- else if (cacheOptions && cacheOptions.options && cacheOptions.options.startupNodes) {
56
- this.client = new this.redis.Cluster(cacheOptions.options.startupNodes, cacheOptions.options.options);
57
- }
58
- else {
59
- throw new TypeORMError("options.startupNodes required for " + this.clientType + ".");
60
- }
65
+ _a.label = 4;
66
+ case 4: return [2 /*return*/];
61
67
  }
62
- return [2 /*return*/];
63
68
  });
64
69
  });
65
70
  };
@@ -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 {Connection} from \"../connection/Connection\";\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 // -------------------------------------------------------------------------\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 // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected connection: Connection, clientType: \"redis\" | \"ioredis\" | \"ioredis/cluster\") {\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\n\n async connect(): Promise<void> {\n const cacheOptions: any = this.connection.options.cache;\n if (this.clientType === \"redis\") {\n if (cacheOptions && cacheOptions.options) {\n this.client = this.redis.createClient(cacheOptions.options);\n } else {\n this.client = this.redis.createClient();\n }\n } else if (this.clientType === \"ioredis\") {\n if (cacheOptions && cacheOptions.port) {\n if (cacheOptions.options) {\n this.client = new this.redis( cacheOptions.port, cacheOptions.options );\n } else {\n this.client = new this.redis( cacheOptions.port );\n }\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 (cacheOptions && cacheOptions.options && Array.isArray(cacheOptions.options)) {\n this.client = new this.redis.Cluster(cacheOptions.options);\n } else if (cacheOptions && cacheOptions.options && cacheOptions.options.startupNodes) {\n this.client = new this.redis.Cluster(cacheOptions.options.startupNodes, cacheOptions.options.options);\n } else {\n throw new TypeORMError(`options.startupNodes required for ${this.clientType}.`);\n }\n }\n }\n\n /**\n * Disconnects the connection\n */\n async disconnect(): Promise<void> {\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 /**\n * Caches given query result.\n * Returns cache result if found.\n * Returns undefined if result is not cached.\n */\n getFromCache(options: QueryResultCacheOptions, queryRunner?: QueryRunner): Promise<QueryResultCacheOptions|undefined> {\n return new Promise<QueryResultCacheOptions|undefined>((ok, fail) => {\n\n if (options.identifier) {\n this.client.get(options.identifier, (err: any, result: any) => {\n if (err) return fail(err);\n ok(JSON.parse(result));\n });\n\n } else if (options.query) {\n this.client.get(options.query, (err: any, result: any) => {\n if (err) return fail(err);\n ok(JSON.parse(result));\n });\n\n } else {\n ok(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) < new Date().getTime();\n }\n\n /**\n * Stores given query result in the cache.\n */\n async storeInCache(options: QueryResultCacheOptions, savedCache: QueryResultCacheOptions, queryRunner?: QueryRunner): Promise<void> {\n return new Promise<void>((ok, fail) => {\n if (options.identifier) {\n this.client.set(options.identifier, JSON.stringify(options), \"PX\", options.duration, (err: any, result: any) => {\n if (err) return fail(err);\n ok();\n });\n\n } else if (options.query) {\n this.client.set(options.query, JSON.stringify(options), \"PX\", options.duration, (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 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(identifiers: string[], queryRunner?: QueryRunner): Promise<void> {\n await Promise.all(identifiers.map(identifier => {\n return this.deleteKey(identifier);\n }));\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Removes a single key from redis database.\n */\n protected deleteKey(key: string): Promise<void> {\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 (e) {\n throw new TypeORMError(`Cannot use cache because ${this.clientType} is not installed. Please run \"npm i ${this.clientType} --save\".`);\n }\n }\n\n\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/cache/RedisQueryResultCache.ts"],"names":[],"mappings":";AAEA,OAAO,EAAC,aAAa,EAAC,MAAM,2BAA2B,CAAC;AAGxD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD;;GAEG;AACH;IAqBI,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,+BAAsB,UAAsB,EAAE,UAAmD;QAA3E,eAAU,GAAV,UAAU,CAAY;QACxC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAClC,CAAC;IAED,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E;;OAEG;IAGG,uCAAO,GAAb;;;;;;wBACU,YAAY,GAAQ,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;6BACpD,CAAA,IAAI,CAAC,UAAU,KAAK,OAAO,CAAA,EAA3B,wBAA2B;wBAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,uBAC9B,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,OAAO,KACxB,UAAU,EAAE,IAAI,IAClB,CAAC;6BACC,CAAA,SAAS,IAAI,IAAI,CAAC,MAAM,CAAA,EAAxB,wBAAwB;wBACxB,qBAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAA;;wBAA3B,SAA2B,CAAC;;;;wBAE7B,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;4BACtC,IAAI,YAAY,IAAI,YAAY,CAAC,IAAI,EAAE;gCACnC,IAAI,YAAY,CAAC,OAAO,EAAE;oCACtB,IAAI,CAAC,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAE,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,CAAE,CAAC;iCAC3E;qCAAM;oCACH,IAAI,CAAC,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAE,YAAY,CAAC,IAAI,CAAE,CAAC;iCACrD;6BACJ;iCACI,IAAI,YAAY,IAAI,YAAY,CAAC,OAAO,EAAE;gCAC3C,IAAI,CAAC,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;6BACtD;iCAAM;gCACH,IAAI,CAAC,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;6BAClC;yBACJ;6BAAM,IAAI,IAAI,CAAC,UAAU,KAAK,iBAAiB,EAAE;4BAC9C,IAAI,YAAY,IAAI,YAAY,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;gCAC7E,IAAI,CAAC,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;6BAC9D;iCAAM,IAAI,YAAY,IAAI,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE;gCAClF,IAAI,CAAC,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;6BACzG;iCAAM;gCACH,MAAM,IAAI,YAAY,CAAC,uCAAqC,IAAI,CAAC,UAAU,MAAG,CAAC,CAAC;6BACnF;yBACJ;;;;;;KACJ;IAED;;OAEG;IACG,0CAAU,GAAhB;;;;gBACI,sBAAO,IAAI,OAAO,CAAO,UAAC,EAAE,EAAE,IAAI;wBAC9B,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAC,GAAQ,EAAE,MAAW;4BACnC,IAAI,GAAG;gCAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;4BAC1B,EAAE,EAAE,CAAC;4BACL,KAAI,CAAC,MAAM,GAAG,SAAS,CAAC;wBAC5B,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,EAAC;;;KACN;IAED;;OAEG;IACG,2CAAW,GAAjB,UAAkB,WAAwB;;;;;;KACzC;IAED;;;;OAIG;IACH,4CAAY,GAAZ,UAAa,OAAgC,EAAE,WAAyB;QAAxE,iBAmBC;QAlBG,OAAO,IAAI,OAAO,CAAoC,UAAC,EAAE,EAAE,IAAI;YAE3D,IAAI,OAAO,CAAC,UAAU,EAAE;gBACpB,KAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,UAAC,GAAQ,EAAE,MAAW;oBACtD,IAAI,GAAG;wBAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC3B,CAAC,CAAC,CAAC;aAEN;iBAAM,IAAI,OAAO,CAAC,KAAK,EAAE;gBACtB,KAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,UAAC,GAAQ,EAAE,MAAW;oBACjD,IAAI,GAAG;wBAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC3B,CAAC,CAAC,CAAC;aAEN;iBAAM;gBACH,EAAE,CAAC,SAAS,CAAC,CAAC;aACjB;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,yCAAS,GAAT,UAAU,UAAmC;QACzC,OAAO,CAAC,UAAU,CAAC,IAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IAC3E,CAAC;IAED;;OAEG;IACG,4CAAY,GAAlB,UAAmB,OAAgC,EAAE,UAAmC,EAAE,WAAyB;;;;gBAC/G,sBAAO,IAAI,OAAO,CAAO,UAAC,EAAE,EAAE,IAAI;wBAC9B,IAAI,OAAO,CAAC,UAAU,EAAE;4BACpB,KAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,UAAC,GAAQ,EAAE,MAAW;gCACvG,IAAI,GAAG;oCAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;gCAC1B,EAAE,EAAE,CAAC;4BACT,CAAC,CAAC,CAAC;yBAEN;6BAAM,IAAI,OAAO,CAAC,KAAK,EAAE;4BACtB,KAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,UAAC,GAAQ,EAAE,MAAW;gCAClG,IAAI,GAAG;oCAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;gCAC1B,EAAE,EAAE,CAAC;4BACT,CAAC,CAAC,CAAC;yBACN;oBACL,CAAC,CAAC,EAAC;;;KACN;IAED;;OAEG;IACG,qCAAK,GAAX,UAAY,WAAyB;;;;gBACjC,sBAAO,IAAI,OAAO,CAAO,UAAC,EAAE,EAAE,IAAI;wBAC9B,KAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAC,GAAQ,EAAE,MAAW;4BACtC,IAAI,GAAG;gCAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;4BAC1B,EAAE,EAAE,CAAC;wBACT,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,EAAC;;;KACN;IAED;;OAEG;IACG,sCAAM,GAAZ,UAAa,WAAqB,EAAE,WAAyB;;;;;4BACzD,qBAAM,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,UAAA,UAAU;4BACxC,OAAO,KAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;wBACtC,CAAC,CAAC,CAAC,EAAA;;wBAFH,SAEG,CAAC;;;;;KACP;IAED,4EAA4E;IAC5E,oBAAoB;IACpB,4EAA4E;IAE5E;;OAEG;IACO,yCAAS,GAAnB,UAAoB,GAAW;QAA/B,iBAOC;QANG,OAAO,IAAI,OAAO,CAAO,UAAC,EAAE,EAAE,IAAI;YAC9B,KAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,UAAC,GAAQ,EAAE,MAAW;gBACvC,IAAI,GAAG;oBAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC1B,EAAE,EAAE,CAAC;YACT,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACO,yCAAS,GAAnB;QACI,IAAI;YACA,IAAI,IAAI,CAAC,UAAU,KAAK,iBAAiB,EAAE;gBACvC,OAAO,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACxC;iBAAM;gBACH,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAC9C;SACJ;QAAC,OAAO,CAAC,EAAE;YACR,MAAM,IAAI,YAAY,CAAC,8BAA4B,IAAI,CAAC,UAAU,8CAAwC,IAAI,CAAC,UAAU,eAAW,CAAC,CAAC;SACzI;IACL,CAAC;IAGL,4BAAC;AAAD,CAtMA,AAsMC,IAAA","file":"RedisQueryResultCache.js","sourcesContent":["import {QueryResultCache} from \"./QueryResultCache\";\nimport {QueryResultCacheOptions} from \"./QueryResultCacheOptions\";\nimport {PlatformTools} from \"../platform/PlatformTools\";\nimport {Connection} from \"../connection/Connection\";\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 // -------------------------------------------------------------------------\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 // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected connection: Connection, clientType: \"redis\" | \"ioredis\" | \"ioredis/cluster\") {\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\n\n async connect(): Promise<void> {\n const cacheOptions: any = this.connection.options.cache;\n if (this.clientType === \"redis\") {\n this.client = this.redis.createClient({\n ...cacheOptions?.options,\n legacyMode: true\n });\n if (\"connect\" in this.client) {\n await this.client.connect();\n }\n } else if (this.clientType === \"ioredis\") {\n if (cacheOptions && cacheOptions.port) {\n if (cacheOptions.options) {\n this.client = new this.redis( cacheOptions.port, cacheOptions.options );\n } else {\n this.client = new this.redis( cacheOptions.port );\n }\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 (cacheOptions && cacheOptions.options && Array.isArray(cacheOptions.options)) {\n this.client = new this.redis.Cluster(cacheOptions.options);\n } else if (cacheOptions && cacheOptions.options && cacheOptions.options.startupNodes) {\n this.client = new this.redis.Cluster(cacheOptions.options.startupNodes, cacheOptions.options.options);\n } else {\n throw new TypeORMError(`options.startupNodes required for ${this.clientType}.`);\n }\n }\n }\n\n /**\n * Disconnects the connection\n */\n async disconnect(): Promise<void> {\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 /**\n * Caches given query result.\n * Returns cache result if found.\n * Returns undefined if result is not cached.\n */\n getFromCache(options: QueryResultCacheOptions, queryRunner?: QueryRunner): Promise<QueryResultCacheOptions|undefined> {\n return new Promise<QueryResultCacheOptions|undefined>((ok, fail) => {\n\n if (options.identifier) {\n this.client.get(options.identifier, (err: any, result: any) => {\n if (err) return fail(err);\n ok(JSON.parse(result));\n });\n\n } else if (options.query) {\n this.client.get(options.query, (err: any, result: any) => {\n if (err) return fail(err);\n ok(JSON.parse(result));\n });\n\n } else {\n ok(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) < new Date().getTime();\n }\n\n /**\n * Stores given query result in the cache.\n */\n async storeInCache(options: QueryResultCacheOptions, savedCache: QueryResultCacheOptions, queryRunner?: QueryRunner): Promise<void> {\n return new Promise<void>((ok, fail) => {\n if (options.identifier) {\n this.client.set(options.identifier, JSON.stringify(options), \"PX\", options.duration, (err: any, result: any) => {\n if (err) return fail(err);\n ok();\n });\n\n } else if (options.query) {\n this.client.set(options.query, JSON.stringify(options), \"PX\", options.duration, (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 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(identifiers: string[], queryRunner?: QueryRunner): Promise<void> {\n await Promise.all(identifiers.map(identifier => {\n return this.deleteKey(identifier);\n }));\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Removes a single key from redis database.\n */\n protected deleteKey(key: string): Promise<void> {\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 (e) {\n throw new TypeORMError(`Cannot use cache because ${this.clientType} is not installed. Please run \"npm i ${this.clientType} --save\".`);\n }\n }\n\n\n}\n"],"sourceRoot":".."}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Same as Partial<T> but goes deeper and makes Partial<T> all its properties and sub-properties.
3
3
  */
4
- export declare type DeepPartial<T> = {
5
- [P in keyof T]?: T[P] extends Array<infer U> ? Array<DeepPartial<U>> : T[P] extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : DeepPartial<T[P]> | T[P];
6
- };
4
+ export declare type DeepPartial<T> = T extends object ? {
5
+ [P in keyof T]?: DeepPartial<T[P]>;
6
+ } : T;
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/common/DeepPartial.ts"],"names":[],"mappings":"","file":"DeepPartial.js","sourcesContent":["/**\n * Same as Partial<T> but goes deeper and makes Partial<T> all its properties and sub-properties.\n */\nexport type DeepPartial<T> = {\n [P in keyof T]?:\n T[P] extends Array<infer U> ? Array<DeepPartial<U>> :\n T[P] extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> :\n DeepPartial<T[P]> | T[P]\n};\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/common/DeepPartial.ts"],"names":[],"mappings":"","file":"DeepPartial.js","sourcesContent":["/**\n * Same as Partial<T> but goes deeper and makes Partial<T> all its properties and sub-properties.\n */\nexport type DeepPartial<T> = T extends object ? {\n [P in keyof T]?: DeepPartial<T[P]>;\n} : T;\n"],"sourceRoot":".."}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Wrapper type for relation type definitions in entities.
3
+ * Used to circumvent ESM modules circular dependency issue caused by reflection metadata saving the type of the property.
4
+ *
5
+ * Usage example:
6
+ * @Entity()
7
+ * export default class User {
8
+ *
9
+ * @OneToOne(() => Profile, profile => profile.user)
10
+ * profile: Relation<Profile>;
11
+ *
12
+ * }
13
+ */
14
+ export declare type Relation<T> = T;
@@ -0,0 +1,3 @@
1
+ export {};
2
+
3
+ //# sourceMappingURL=RelationType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../browser/src/common/RelationType.ts"],"names":[],"mappings":"","file":"RelationType.js","sourcesContent":["/**\n * Wrapper type for relation type definitions in entities.\n * Used to circumvent ESM modules circular dependency issue caused by reflection metadata saving the type of the property.\n *\n * Usage example:\n * @Entity()\n * export default class User {\n *\n * @OneToOne(() => Profile, profile => profile.user)\n * profile: Relation<Profile>;\n *\n * }\n */\nexport type Relation<T> = T;\n"],"sourceRoot":".."}
@@ -45,6 +45,11 @@ export interface BaseConnectionOptions {
45
45
  * Transaction mode for migrations to run in
46
46
  */
47
47
  readonly migrationsTransactionMode?: "all" | "none" | "each";
48
+ /**
49
+ * Typeorm metadata table name, in case of different name from "typeorm_metadata".
50
+ * Accepts single string name.
51
+ */
52
+ readonly metadataTableName?: string;
48
53
  /**
49
54
  * Naming strategy to be used to name tables and columns in the database.
50
55
  */
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/connection/BaseConnectionOptions.ts"],"names":[],"mappings":"","file":"BaseConnectionOptions.js","sourcesContent":["import {EntitySchema} from \"../entity-schema/EntitySchema\";\nimport {LoggerOptions} from \"../logger/LoggerOptions\";\nimport {NamingStrategyInterface} from \"../naming-strategy/NamingStrategyInterface\";\nimport {DatabaseType} from \"../driver/types/DatabaseType\";\nimport {Logger} from \"../logger/Logger\";\nimport {Connection} from \"./Connection\";\nimport {QueryResultCache} from \"../cache/QueryResultCache\";\n\n/**\n * BaseConnectionOptions is set of connection options shared by all database types.\n */\nexport interface BaseConnectionOptions {\n\n /**\n * Database type. This value is required.\n */\n readonly type: DatabaseType;\n\n /**\n * Connection name. If connection name is not given then it will be called \"default\".\n * Different connections must have different names.\n */\n readonly name?: string;\n\n /**\n * Entities to be loaded for this connection.\n * Accepts both entity classes and directories where from entities need to be loaded.\n * Directories support glob patterns.\n */\n readonly entities?: ((Function|string|EntitySchema<any>))[];\n\n /**\n * Subscribers to be loaded for this connection.\n * Accepts both subscriber classes and directories where from subscribers need to be loaded.\n * Directories support glob patterns.\n */\n readonly subscribers?: (Function|string)[];\n\n /**\n * Migrations to be loaded for this connection.\n * Accepts both migration classes and directories where from migrations need to be loaded.\n * Directories support glob patterns.\n */\n readonly migrations?: (Function|string)[];\n\n /**\n * Migrations table name, in case of different name from \"migrations\".\n * Accepts single string name.\n */\n readonly migrationsTableName?: string;\n\n /**\n * Transaction mode for migrations to run in\n */\n readonly migrationsTransactionMode?: \"all\" | \"none\" | \"each\";\n\n /**\n * Naming strategy to be used to name tables and columns in the database.\n */\n readonly namingStrategy?: NamingStrategyInterface;\n\n /**\n * Logging options.\n */\n readonly logging?: LoggerOptions;\n\n /**\n * Logger instance used to log queries and events in the ORM.\n */\n readonly logger?: \"advanced-console\"|\"simple-console\"|\"file\"|\"debug\"|Logger;\n\n /**\n * Maximum number of milliseconds query should be executed before logger log a warning.\n */\n readonly maxQueryExecutionTime?: number;\n\n /**\n * Indicates if database schema should be auto created on every application launch.\n * Be careful with this option and don't use this in production - otherwise you can lose production data.\n * This option is useful during debug and development.\n * Alternative to it, you can use CLI and run schema:sync command.\n *\n * Note that for MongoDB database it does not create schema, because MongoDB is schemaless.\n * Instead, it syncs just by creating indices.\n */\n readonly synchronize?: boolean;\n\n /**\n * Indicates if migrations should be auto run on every application launch.\n * Alternative to it, you can use CLI and run migrations:run command.\n */\n readonly migrationsRun?: boolean;\n\n /**\n * Drops the schema each time connection is being established.\n * Be careful with this option and don't use this in production - otherwise you'll lose all production data.\n * This option is useful during debug and development.\n */\n readonly dropSchema?: boolean;\n\n /**\n * Prefix to use on all tables (collections) of this connection in the database.\n */\n readonly entityPrefix?: string;\n\n /**\n * When creating new Entity instances, skip all constructors when true.\n */\n readonly entitySkipConstructor?: boolean;\n\n /**\n * Extra connection options to be passed to the underlying driver.\n *\n * todo: deprecate this and move all database-specific types into hts own connection options object.\n */\n readonly extra?: any;\n\n /**\n * Allows to setup cache options.\n */\n readonly cache?: boolean|{\n\n /**\n * Type of caching.\n *\n * - \"database\" means cached values will be stored in the separate table in database. This is default value.\n * - \"redis\" means cached values will be stored inside redis. You must provide redis connection options.\n */\n readonly type?: \"database\" | \"redis\" | \"ioredis\" | \"ioredis/cluster\"; // todo: add mongodb and other cache providers as well in the future\n\n /**\n * Factory function for custom cache providers that implement QueryResultCache.\n */\n readonly provider?: (connection: Connection) => QueryResultCache;\n\n /**\n * Configurable table name for \"database\" type cache.\n * Default value is \"query-result-cache\"\n */\n readonly tableName?: string;\n\n /**\n * Used to provide redis connection options.\n */\n readonly options?: any;\n\n /**\n * If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.\n */\n readonly alwaysEnabled?: boolean;\n\n /**\n * Time in milliseconds in which cache will expire.\n * This can be setup per-query.\n * Default value is 1000 which is equivalent to 1 second.\n */\n readonly duration?: number;\n\n /**\n * Used to specify if cache errors should be ignored, and pass through the call to the Database.\n */\n readonly ignoreErrors?: boolean;\n };\n\n /**\n * CLI settings.\n */\n readonly cli?: {\n\n /**\n * Directory where entities should be created by default.\n */\n readonly entitiesDir?: string;\n\n /**\n * Directory where migrations should be created by default.\n */\n readonly migrationsDir?: string;\n\n /**\n * Directory where subscribers should be created by default.\n */\n readonly subscribersDir?: string;\n\n };\n\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/connection/BaseConnectionOptions.ts"],"names":[],"mappings":"","file":"BaseConnectionOptions.js","sourcesContent":["import {EntitySchema} from \"../entity-schema/EntitySchema\";\nimport {LoggerOptions} from \"../logger/LoggerOptions\";\nimport {NamingStrategyInterface} from \"../naming-strategy/NamingStrategyInterface\";\nimport {DatabaseType} from \"../driver/types/DatabaseType\";\nimport {Logger} from \"../logger/Logger\";\nimport {Connection} from \"./Connection\";\nimport {QueryResultCache} from \"../cache/QueryResultCache\";\n\n/**\n * BaseConnectionOptions is set of connection options shared by all database types.\n */\nexport interface BaseConnectionOptions {\n\n /**\n * Database type. This value is required.\n */\n readonly type: DatabaseType;\n\n /**\n * Connection name. If connection name is not given then it will be called \"default\".\n * Different connections must have different names.\n */\n readonly name?: string;\n\n /**\n * Entities to be loaded for this connection.\n * Accepts both entity classes and directories where from entities need to be loaded.\n * Directories support glob patterns.\n */\n readonly entities?: ((Function|string|EntitySchema<any>))[];\n\n /**\n * Subscribers to be loaded for this connection.\n * Accepts both subscriber classes and directories where from subscribers need to be loaded.\n * Directories support glob patterns.\n */\n readonly subscribers?: (Function|string)[];\n\n /**\n * Migrations to be loaded for this connection.\n * Accepts both migration classes and directories where from migrations need to be loaded.\n * Directories support glob patterns.\n */\n readonly migrations?: (Function|string)[];\n\n /**\n * Migrations table name, in case of different name from \"migrations\".\n * Accepts single string name.\n */\n readonly migrationsTableName?: string;\n\n /**\n * Transaction mode for migrations to run in\n */\n readonly migrationsTransactionMode?: \"all\" | \"none\" | \"each\";\n\n /**\n * Typeorm metadata table name, in case of different name from \"typeorm_metadata\".\n * Accepts single string name.\n */\n readonly metadataTableName?: string;\n\n /**\n * Naming strategy to be used to name tables and columns in the database.\n */\n readonly namingStrategy?: NamingStrategyInterface;\n\n /**\n * Logging options.\n */\n readonly logging?: LoggerOptions;\n\n /**\n * Logger instance used to log queries and events in the ORM.\n */\n readonly logger?: \"advanced-console\"|\"simple-console\"|\"file\"|\"debug\"|Logger;\n\n /**\n * Maximum number of milliseconds query should be executed before logger log a warning.\n */\n readonly maxQueryExecutionTime?: number;\n\n /**\n * Indicates if database schema should be auto created on every application launch.\n * Be careful with this option and don't use this in production - otherwise you can lose production data.\n * This option is useful during debug and development.\n * Alternative to it, you can use CLI and run schema:sync command.\n *\n * Note that for MongoDB database it does not create schema, because MongoDB is schemaless.\n * Instead, it syncs just by creating indices.\n */\n readonly synchronize?: boolean;\n\n /**\n * Indicates if migrations should be auto run on every application launch.\n * Alternative to it, you can use CLI and run migrations:run command.\n */\n readonly migrationsRun?: boolean;\n\n /**\n * Drops the schema each time connection is being established.\n * Be careful with this option and don't use this in production - otherwise you'll lose all production data.\n * This option is useful during debug and development.\n */\n readonly dropSchema?: boolean;\n\n /**\n * Prefix to use on all tables (collections) of this connection in the database.\n */\n readonly entityPrefix?: string;\n\n /**\n * When creating new Entity instances, skip all constructors when true.\n */\n readonly entitySkipConstructor?: boolean;\n\n /**\n * Extra connection options to be passed to the underlying driver.\n *\n * todo: deprecate this and move all database-specific types into hts own connection options object.\n */\n readonly extra?: any;\n\n /**\n * Holds reference to the baseDirectory where configuration file are expected\n * @internal\n */\n baseDirectory?: string;\n\n /**\n * Allows to setup cache options.\n */\n readonly cache?: boolean|{\n\n /**\n * Type of caching.\n *\n * - \"database\" means cached values will be stored in the separate table in database. This is default value.\n * - \"redis\" means cached values will be stored inside redis. You must provide redis connection options.\n */\n readonly type?: \"database\" | \"redis\" | \"ioredis\" | \"ioredis/cluster\"; // todo: add mongodb and other cache providers as well in the future\n\n /**\n * Factory function for custom cache providers that implement QueryResultCache.\n */\n readonly provider?: (connection: Connection) => QueryResultCache;\n\n /**\n * Configurable table name for \"database\" type cache.\n * Default value is \"query-result-cache\"\n */\n readonly tableName?: string;\n\n /**\n * Used to provide redis connection options.\n */\n readonly options?: any;\n\n /**\n * If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.\n */\n readonly alwaysEnabled?: boolean;\n\n /**\n * Time in milliseconds in which cache will expire.\n * This can be setup per-query.\n * Default value is 1000 which is equivalent to 1 second.\n */\n readonly duration?: number;\n\n /**\n * Used to specify if cache errors should be ignored, and pass through the call to the Database.\n */\n readonly ignoreErrors?: boolean;\n };\n\n /**\n * CLI settings.\n */\n readonly cli?: {\n\n /**\n * Directory where entities should be created by default.\n */\n readonly entitiesDir?: string;\n\n /**\n * Directory where migrations should be created by default.\n */\n readonly migrationsDir?: string;\n\n /**\n * Directory where subscribers should be created by default.\n */\n readonly subscribersDir?: string;\n\n };\n\n}\n"],"sourceRoot":".."}
@@ -50,6 +50,10 @@ export declare class Connection {
50
50
  * Naming strategy used in the connection.
51
51
  */
52
52
  readonly namingStrategy: NamingStrategyInterface;
53
+ /**
54
+ * Name for the metadata table
55
+ */
56
+ readonly metadataTableName: string;
53
57
  /**
54
58
  * Logger used to log orm events.
55
59
  */
@@ -169,11 +173,11 @@ export declare class Connection {
169
173
  */
170
174
  query(query: string, parameters?: any[], queryRunner?: QueryRunner): Promise<any>;
171
175
  /**
172
- * Creates a new query builder that can be used to build a sql query.
176
+ * Creates a new query builder that can be used to build a SQL query.
173
177
  */
174
178
  createQueryBuilder<Entity>(entityClass: EntityTarget<Entity>, alias: string, queryRunner?: QueryRunner): SelectQueryBuilder<Entity>;
175
179
  /**
176
- * Creates a new query builder that can be used to build a sql query.
180
+ * Creates a new query builder that can be used to build a SQL query.
177
181
  */
178
182
  createQueryBuilder(queryRunner?: QueryRunner): SelectQueryBuilder<any>;
179
183
  /**
@@ -202,5 +206,5 @@ export declare class Connection {
202
206
  /**
203
207
  * Builds metadatas for all registered classes inside this connection.
204
208
  */
205
- protected buildMetadatas(): void;
209
+ protected buildMetadatas(): Promise<void>;
206
210
  }
@@ -18,6 +18,7 @@ import { SqljsEntityManager } from "../entity-manager/SqljsEntityManager";
18
18
  import { RelationLoader } from "../query-builder/RelationLoader";
19
19
  import { EntitySchema } from "../entity-schema/EntitySchema";
20
20
  import { SqlServerDriver } from "../driver/sqlserver/SqlServerDriver";
21
+ import { AbstractSqliteDriver } from "../driver/sqlite-abstract/AbstractSqliteDriver";
21
22
  import { MysqlDriver } from "../driver/mysql/MysqlDriver";
22
23
  import { ObjectUtils } from "../util/ObjectUtils";
23
24
  import { AuroraDataApiDriver } from "../driver/aurora-data-api/AuroraDataApiDriver";
@@ -50,6 +51,7 @@ var Connection = /** @class */ (function () {
50
51
  this.driver = new DriverFactory().create(this);
51
52
  this.manager = this.createEntityManager();
52
53
  this.namingStrategy = options.namingStrategy || new DefaultNamingStrategy();
54
+ this.metadataTableName = options.metadataTableName || "typeorm_metadata";
53
55
  this.queryResultCache = options.cache ? new QueryResultCacheFactory(this).create() : undefined;
54
56
  this.relationLoader = new RelationLoader(this);
55
57
  this.isConnected = false;
@@ -118,41 +120,44 @@ var Connection = /** @class */ (function () {
118
120
  ObjectUtils.assign(this, { isConnected: true });
119
121
  _a.label = 4;
120
122
  case 4:
121
- _a.trys.push([4, 12, , 14]);
123
+ _a.trys.push([4, 13, , 15]);
122
124
  // build all metadatas registered in the current connection
123
- this.buildMetadatas();
124
- return [4 /*yield*/, this.driver.afterConnect()];
125
+ return [4 /*yield*/, this.buildMetadatas()];
125
126
  case 5:
127
+ // build all metadatas registered in the current connection
126
128
  _a.sent();
127
- if (!this.options.dropSchema) return [3 /*break*/, 7];
128
- return [4 /*yield*/, this.dropDatabase()];
129
+ return [4 /*yield*/, this.driver.afterConnect()];
129
130
  case 6:
130
131
  _a.sent();
131
- _a.label = 7;
132
+ if (!this.options.dropSchema) return [3 /*break*/, 8];
133
+ return [4 /*yield*/, this.dropDatabase()];
132
134
  case 7:
133
- if (!this.options.synchronize) return [3 /*break*/, 9];
134
- return [4 /*yield*/, this.synchronize()];
135
- case 8:
136
135
  _a.sent();
137
- _a.label = 9;
136
+ _a.label = 8;
137
+ case 8:
138
+ if (!this.options.synchronize) return [3 /*break*/, 10];
139
+ return [4 /*yield*/, this.synchronize()];
138
140
  case 9:
139
- if (!this.options.migrationsRun) return [3 /*break*/, 11];
140
- return [4 /*yield*/, this.runMigrations({ transaction: this.options.migrationsTransactionMode })];
141
+ _a.sent();
142
+ _a.label = 10;
141
143
  case 10:
144
+ if (!this.options.migrationsRun) return [3 /*break*/, 12];
145
+ return [4 /*yield*/, this.runMigrations({ transaction: this.options.migrationsTransactionMode })];
146
+ case 11:
142
147
  _a.sent();
143
- _a.label = 11;
144
- case 11: return [3 /*break*/, 14];
145
- case 12:
148
+ _a.label = 12;
149
+ case 12: return [3 /*break*/, 15];
150
+ case 13:
146
151
  error_1 = _a.sent();
147
152
  // if for some reason build metadata fail (for example validation error during entity metadata check)
148
153
  // connection needs to be closed
149
154
  return [4 /*yield*/, this.close()];
150
- case 13:
155
+ case 14:
151
156
  // if for some reason build metadata fail (for example validation error during entity metadata check)
152
157
  // connection needs to be closed
153
158
  _a.sent();
154
159
  throw error_1;
155
- case 14: return [2 /*return*/, this];
160
+ case 15: return [2 /*return*/, this];
156
161
  }
157
162
  });
158
163
  });
@@ -229,50 +234,58 @@ var Connection = /** @class */ (function () {
229
234
  queryRunner = this.createQueryRunner();
230
235
  _b.label = 1;
231
236
  case 1:
232
- _b.trys.push([1, , 13, 15]);
233
- if (!(this.driver instanceof SqlServerDriver || this.driver instanceof MysqlDriver || this.driver instanceof AuroraDataApiDriver)) return [3 /*break*/, 10];
234
- databases_2 = this.driver.database ? [this.driver.database] : [];
237
+ _b.trys.push([1, , 14, 16]);
238
+ if (!(this.driver instanceof SqlServerDriver || this.driver instanceof MysqlDriver || this.driver instanceof AuroraDataApiDriver || this.driver instanceof AbstractSqliteDriver)) return [3 /*break*/, 11];
239
+ databases_2 = [];
235
240
  this.entityMetadatas.forEach(function (metadata) {
236
241
  if (metadata.database && databases_2.indexOf(metadata.database) === -1)
237
242
  databases_2.push(metadata.database);
238
243
  });
239
- _b.label = 2;
244
+ if (databases_2.length === 0 && this.driver.database) {
245
+ databases_2.push(this.driver.database);
246
+ }
247
+ ;
248
+ if (!(databases_2.length === 0)) return [3 /*break*/, 3];
249
+ return [4 /*yield*/, queryRunner.clearDatabase()];
240
250
  case 2:
241
- _b.trys.push([2, 7, 8, 9]);
242
- databases_1 = __values(databases_2), databases_1_1 = databases_1.next();
243
- _b.label = 3;
251
+ _b.sent();
252
+ return [3 /*break*/, 10];
244
253
  case 3:
245
- if (!!databases_1_1.done) return [3 /*break*/, 6];
254
+ _b.trys.push([3, 8, 9, 10]);
255
+ databases_1 = __values(databases_2), databases_1_1 = databases_1.next();
256
+ _b.label = 4;
257
+ case 4:
258
+ if (!!databases_1_1.done) return [3 /*break*/, 7];
246
259
  database = databases_1_1.value;
247
260
  return [4 /*yield*/, queryRunner.clearDatabase(database)];
248
- case 4:
249
- _b.sent();
250
- _b.label = 5;
251
261
  case 5:
262
+ _b.sent();
263
+ _b.label = 6;
264
+ case 6:
252
265
  databases_1_1 = databases_1.next();
253
- return [3 /*break*/, 3];
254
- case 6: return [3 /*break*/, 9];
255
- case 7:
266
+ return [3 /*break*/, 4];
267
+ case 7: return [3 /*break*/, 10];
268
+ case 8:
256
269
  e_1_1 = _b.sent();
257
270
  e_1 = { error: e_1_1 };
258
- return [3 /*break*/, 9];
259
- case 8:
271
+ return [3 /*break*/, 10];
272
+ case 9:
260
273
  try {
261
274
  if (databases_1_1 && !databases_1_1.done && (_a = databases_1.return)) _a.call(databases_1);
262
275
  }
263
276
  finally { if (e_1) throw e_1.error; }
264
277
  return [7 /*endfinally*/];
265
- case 9: return [3 /*break*/, 12];
266
- case 10: return [4 /*yield*/, queryRunner.clearDatabase()];
267
- case 11:
278
+ case 10: return [3 /*break*/, 13];
279
+ case 11: return [4 /*yield*/, queryRunner.clearDatabase()];
280
+ case 12:
268
281
  _b.sent();
269
- _b.label = 12;
270
- case 12: return [3 /*break*/, 15];
271
- case 13: return [4 /*yield*/, queryRunner.release()];
272
- case 14:
282
+ _b.label = 13;
283
+ case 13: return [3 /*break*/, 16];
284
+ case 14: return [4 /*yield*/, queryRunner.release()];
285
+ case 15:
273
286
  _b.sent();
274
287
  return [7 /*endfinally*/];
275
- case 15: return [2 /*return*/];
288
+ case 16: return [2 /*return*/];
276
289
  }
277
290
  });
278
291
  });
@@ -423,7 +436,7 @@ var Connection = /** @class */ (function () {
423
436
  });
424
437
  };
425
438
  /**
426
- * Creates a new query builder that can be used to build a sql query.
439
+ * Creates a new query builder that can be used to build a SQL query.
427
440
  */
428
441
  Connection.prototype.createQueryBuilder = function (entityOrRunner, alias, queryRunner) {
429
442
  if (this instanceof MongoEntityManager)
@@ -501,19 +514,31 @@ var Connection = /** @class */ (function () {
501
514
  * Builds metadatas for all registered classes inside this connection.
502
515
  */
503
516
  Connection.prototype.buildMetadatas = function () {
504
- var connectionMetadataBuilder = new ConnectionMetadataBuilder(this);
505
- var entityMetadataValidator = new EntityMetadataValidator();
506
- // create subscribers instances if they are not disallowed from high-level (for example they can disallowed from migrations run process)
507
- var subscribers = connectionMetadataBuilder.buildSubscribers(this.options.subscribers || []);
508
- ObjectUtils.assign(this, { subscribers: subscribers });
509
- // build entity metadatas
510
- var entityMetadatas = connectionMetadataBuilder.buildEntityMetadatas(this.options.entities || []);
511
- ObjectUtils.assign(this, { entityMetadatas: entityMetadatas });
512
- // create migration instances
513
- var migrations = connectionMetadataBuilder.buildMigrations(this.options.migrations || []);
514
- ObjectUtils.assign(this, { migrations: migrations });
515
- // validate all created entity metadatas to make sure user created entities are valid and correct
516
- entityMetadataValidator.validateMany(this.entityMetadatas.filter(function (metadata) { return metadata.tableType !== "view"; }), this.driver);
517
+ return __awaiter(this, void 0, void 0, function () {
518
+ var connectionMetadataBuilder, entityMetadataValidator, subscribers, entityMetadatas, migrations;
519
+ return __generator(this, function (_a) {
520
+ switch (_a.label) {
521
+ case 0:
522
+ connectionMetadataBuilder = new ConnectionMetadataBuilder(this);
523
+ entityMetadataValidator = new EntityMetadataValidator();
524
+ return [4 /*yield*/, connectionMetadataBuilder.buildSubscribers(this.options.subscribers || [])];
525
+ case 1:
526
+ subscribers = _a.sent();
527
+ ObjectUtils.assign(this, { subscribers: subscribers });
528
+ return [4 /*yield*/, connectionMetadataBuilder.buildEntityMetadatas(this.options.entities || [])];
529
+ case 2:
530
+ entityMetadatas = _a.sent();
531
+ ObjectUtils.assign(this, { entityMetadatas: entityMetadatas });
532
+ return [4 /*yield*/, connectionMetadataBuilder.buildMigrations(this.options.migrations || [])];
533
+ case 3:
534
+ migrations = _a.sent();
535
+ ObjectUtils.assign(this, { migrations: migrations });
536
+ // validate all created entity metadatas to make sure user created entities are valid and correct
537
+ entityMetadataValidator.validateMany(this.entityMetadatas.filter(function (metadata) { return metadata.tableType !== "view"; }), this.driver);
538
+ return [2 /*return*/];
539
+ }
540
+ });
541
+ });
517
542
  };
518
543
  return Connection;
519
544
  }());