typeorm 0.3.20-dev.fa86f6f → 0.3.21-dev.0d08246

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 (710) hide show
  1. package/README.md +11 -14
  2. package/browser/cache/DbQueryResultCache.js +1 -1
  3. package/browser/cache/DbQueryResultCache.js.map +1 -1
  4. package/browser/cache/QueryResultCache.d.ts +4 -2
  5. package/browser/cache/QueryResultCache.js.map +1 -1
  6. package/browser/cache/QueryResultCacheFactory.js.map +1 -1
  7. package/browser/cache/RedisQueryResultCache.js +1 -1
  8. package/browser/cache/RedisQueryResultCache.js.map +1 -1
  9. package/browser/cli-ts-node-esm.js.map +1 -1
  10. package/browser/connection/ConnectionManager.js.map +1 -1
  11. package/browser/connection/ConnectionMetadataBuilder.js.map +1 -1
  12. package/browser/connection/ConnectionOptionsReader.d.ts +4 -4
  13. package/browser/connection/ConnectionOptionsReader.js.map +1 -1
  14. package/browser/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
  15. package/browser/container.js.map +1 -1
  16. package/browser/data-source/DataSource.d.ts +2 -0
  17. package/browser/data-source/DataSource.js +5 -1
  18. package/browser/data-source/DataSource.js.map +1 -1
  19. package/browser/decorator/Unique.js.map +1 -1
  20. package/browser/decorator/columns/Column.js.map +1 -1
  21. package/browser/decorator/columns/PrimaryColumn.js.map +1 -1
  22. package/browser/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
  23. package/browser/decorator/columns/VirtualColumn.js +1 -1
  24. package/browser/decorator/columns/VirtualColumn.js.map +1 -1
  25. package/browser/decorator/entity/ChildEntity.js.map +1 -1
  26. package/browser/decorator/relations/ManyToMany.js.map +1 -1
  27. package/browser/decorator/relations/ManyToOne.js.map +1 -1
  28. package/browser/decorator/relations/OneToMany.js.map +1 -1
  29. package/browser/decorator/relations/OneToOne.d.ts +4 -4
  30. package/browser/decorator/relations/OneToOne.js +2 -2
  31. package/browser/decorator/relations/OneToOne.js.map +1 -1
  32. package/browser/driver/DriverFactory.js.map +1 -1
  33. package/browser/driver/DriverUtils.js.map +1 -1
  34. package/browser/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.d.ts +1 -1
  35. package/browser/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.js.map +1 -1
  36. package/browser/driver/aurora-mysql/AuroraMysqlDriver.js +10 -10
  37. package/browser/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  38. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts +0 -1
  39. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js +2 -2
  40. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
  41. package/browser/driver/aurora-postgres/AuroraPostgresDriver.js.map +1 -1
  42. package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.js +2 -2
  43. package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
  44. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js +2 -2
  45. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  46. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js +4 -0
  47. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  48. package/browser/driver/capacitor/CapacitorDriver.js.map +1 -1
  49. package/browser/driver/capacitor/CapacitorQueryRunner.js +2 -2
  50. package/browser/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
  51. package/browser/driver/cockroachdb/CockroachConnectionCredentialsOptions.d.ts +1 -2
  52. package/browser/driver/cockroachdb/CockroachConnectionCredentialsOptions.js.map +1 -1
  53. package/browser/driver/cockroachdb/CockroachConnectionOptions.d.ts +1 -1
  54. package/browser/driver/cockroachdb/CockroachConnectionOptions.js.map +1 -1
  55. package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
  56. package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +0 -1
  57. package/browser/driver/cockroachdb/CockroachQueryRunner.js +8 -6
  58. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  59. package/browser/driver/cordova/CordovaDriver.js.map +1 -1
  60. package/browser/driver/cordova/CordovaQueryRunner.js.map +1 -1
  61. package/browser/driver/expo/ExpoDriver.js.map +1 -1
  62. package/browser/driver/expo/ExpoQueryRunner.js +2 -2
  63. package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
  64. package/browser/driver/mongodb/MongoConnectionOptions.d.ts +1 -2
  65. package/browser/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  66. package/browser/driver/mongodb/MongoDriver.js.map +1 -1
  67. package/browser/driver/mongodb/MongoQueryRunner.d.ts +0 -1
  68. package/browser/driver/mongodb/typings.d.ts +0 -8
  69. package/browser/driver/mongodb/typings.js +0 -1
  70. package/browser/driver/mongodb/typings.js.map +1 -1
  71. package/browser/driver/mysql/MysqlConnectionCredentialsOptions.d.ts +1 -1
  72. package/browser/driver/mysql/MysqlConnectionCredentialsOptions.js.map +1 -1
  73. package/browser/driver/mysql/MysqlConnectionOptions.d.ts +1 -1
  74. package/browser/driver/mysql/MysqlConnectionOptions.js.map +1 -1
  75. package/browser/driver/mysql/MysqlDriver.js +12 -14
  76. package/browser/driver/mysql/MysqlDriver.js.map +1 -1
  77. package/browser/driver/mysql/MysqlQueryRunner.d.ts +0 -1
  78. package/browser/driver/mysql/MysqlQueryRunner.js +1 -1
  79. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  80. package/browser/driver/nativescript/NativescriptDriver.js.map +1 -1
  81. package/browser/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  82. package/browser/driver/oracle/OracleConnectionCredentialsOptions.d.ts +1 -1
  83. package/browser/driver/oracle/OracleConnectionCredentialsOptions.js.map +1 -1
  84. package/browser/driver/oracle/OracleConnectionOptions.d.ts +1 -1
  85. package/browser/driver/oracle/OracleConnectionOptions.js.map +1 -1
  86. package/browser/driver/oracle/OracleDriver.js +18 -10
  87. package/browser/driver/oracle/OracleDriver.js.map +1 -1
  88. package/browser/driver/oracle/OracleQueryRunner.d.ts +0 -1
  89. package/browser/driver/oracle/OracleQueryRunner.js +8 -10
  90. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  91. package/browser/driver/postgres/PostgresConnectionCredentialsOptions.d.ts +1 -2
  92. package/browser/driver/postgres/PostgresConnectionCredentialsOptions.js.map +1 -1
  93. package/browser/driver/postgres/PostgresConnectionOptions.d.ts +1 -1
  94. package/browser/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  95. package/browser/driver/postgres/PostgresDriver.js +11 -6
  96. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  97. package/browser/driver/postgres/PostgresQueryRunner.d.ts +1 -2
  98. package/browser/driver/postgres/PostgresQueryRunner.js +35 -12
  99. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  100. package/browser/driver/react-native/ReactNativeDriver.js +4 -6
  101. package/browser/driver/react-native/ReactNativeDriver.js.map +1 -1
  102. package/browser/driver/react-native/ReactNativeQueryRunner.js +2 -2
  103. package/browser/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  104. package/browser/driver/sap/SapDriver.js.map +1 -1
  105. package/browser/driver/sap/SapQueryRunner.d.ts +0 -1
  106. package/browser/driver/sap/SapQueryRunner.js +4 -4
  107. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  108. package/browser/driver/spanner/SpannerConnectionCredentialsOptions.d.ts +1 -1
  109. package/browser/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -1
  110. package/browser/driver/spanner/SpannerConnectionOptions.d.ts +1 -1
  111. package/browser/driver/spanner/SpannerConnectionOptions.js.map +1 -1
  112. package/browser/driver/spanner/SpannerDriver.js.map +1 -1
  113. package/browser/driver/spanner/SpannerQueryRunner.d.ts +0 -1
  114. package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -1
  115. package/browser/driver/sqlite/SqliteDriver.js +2 -2
  116. package/browser/driver/sqlite/SqliteDriver.js.map +1 -1
  117. package/browser/driver/sqlite/SqliteQueryRunner.js +3 -2
  118. package/browser/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  119. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +4 -6
  120. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  121. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +0 -1
  122. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +4 -4
  123. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  124. package/browser/driver/sqljs/SqljsDriver.js +1 -2
  125. package/browser/driver/sqljs/SqljsDriver.js.map +1 -1
  126. package/browser/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  127. package/browser/driver/sqlserver/SqlServerConnectionCredentialsOptions.d.ts +1 -1
  128. package/browser/driver/sqlserver/SqlServerConnectionCredentialsOptions.js.map +1 -1
  129. package/browser/driver/sqlserver/SqlServerConnectionOptions.d.ts +1 -1
  130. package/browser/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
  131. package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
  132. package/browser/driver/sqlserver/SqlServerQueryRunner.d.ts +0 -1
  133. package/browser/driver/sqlserver/SqlServerQueryRunner.js +9 -7
  134. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  135. package/browser/driver/types/ColumnTypes.d.ts +1 -1
  136. package/browser/driver/types/ColumnTypes.js.map +1 -1
  137. package/browser/entity-manager/EntityManager.d.ts +4 -2
  138. package/browser/entity-manager/EntityManager.js +4 -2
  139. package/browser/entity-manager/EntityManager.js.map +1 -1
  140. package/browser/entity-manager/MongoEntityManager.js +1 -1
  141. package/browser/entity-manager/MongoEntityManager.js.map +1 -1
  142. package/browser/entity-schema/EntitySchemaTransformer.js +2 -3
  143. package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
  144. package/browser/error/EntityMetadataNotFoundError.js.map +1 -1
  145. package/browser/error/EntityNotFoundError.js.map +1 -1
  146. package/browser/error/FindRelationsNotFoundError.js.map +1 -1
  147. package/browser/error/MissingJoinColumnError.js.map +1 -1
  148. package/browser/error/MissingJoinTableError.js.map +1 -1
  149. package/browser/error/QueryFailedError.js.map +1 -1
  150. package/browser/error/RepositoryNotTreeError.js.map +1 -1
  151. package/browser/error/TypeORMError.js.map +1 -1
  152. package/browser/find-options/FindOperator.js.map +1 -1
  153. package/browser/find-options/FindOptionsOrder.d.ts +0 -1
  154. package/browser/find-options/FindOptionsRelations.d.ts +0 -1
  155. package/browser/find-options/FindOptionsSelect.d.ts +0 -1
  156. package/browser/find-options/FindOptionsUtils.js +1 -1
  157. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  158. package/browser/find-options/FindOptionsWhere.d.ts +0 -1
  159. package/browser/find-options/operator/Raw.js.map +1 -1
  160. package/browser/globals.js.map +1 -1
  161. package/browser/logger/AbstractLogger.js.map +1 -1
  162. package/browser/logger/AdvancedConsoleLogger.js +1 -2
  163. package/browser/logger/AdvancedConsoleLogger.js.map +1 -1
  164. package/browser/logger/DebugLogger.js +1 -2
  165. package/browser/logger/DebugLogger.js.map +1 -1
  166. package/browser/logger/FileLogger.js +2 -3
  167. package/browser/logger/FileLogger.js.map +1 -1
  168. package/browser/logger/LoggerFactory.js.map +1 -1
  169. package/browser/logger/SimpleConsoleLogger.js +1 -2
  170. package/browser/logger/SimpleConsoleLogger.js.map +1 -1
  171. package/browser/metadata/CheckMetadata.js.map +1 -1
  172. package/browser/metadata/ColumnMetadata.js +19 -15
  173. package/browser/metadata/ColumnMetadata.js.map +1 -1
  174. package/browser/metadata/EmbeddedMetadata.js +1 -1
  175. package/browser/metadata/EmbeddedMetadata.js.map +1 -1
  176. package/browser/metadata/EntityListenerMetadata.js.map +1 -1
  177. package/browser/metadata/EntityMetadata.js +3 -7
  178. package/browser/metadata/EntityMetadata.js.map +1 -1
  179. package/browser/metadata/ExclusionMetadata.js.map +1 -1
  180. package/browser/metadata/IndexMetadata.js.map +1 -1
  181. package/browser/metadata/RelationIdMetadata.js.map +1 -1
  182. package/browser/metadata/RelationMetadata.js.map +1 -1
  183. package/browser/metadata/UniqueMetadata.js.map +1 -1
  184. package/browser/metadata-args/MetadataArgsStorage.js.map +1 -1
  185. package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
  186. package/browser/metadata-builder/EntityMetadataBuilder.js +5 -8
  187. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  188. package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
  189. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +7 -8
  190. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  191. package/browser/metadata-builder/MetadataUtils.js.map +1 -1
  192. package/browser/metadata-builder/RelationJoinColumnBuilder.js +2 -3
  193. package/browser/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  194. package/browser/migration/MigrationExecutor.js +2 -2
  195. package/browser/migration/MigrationExecutor.js.map +1 -1
  196. package/browser/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  197. package/browser/naming-strategy/LegacyOracleNamingStrategy.js.map +1 -1
  198. package/browser/persistence/EntityPersistExecutor.js.map +1 -1
  199. package/browser/persistence/Subject.js.map +1 -1
  200. package/browser/persistence/SubjectChangedColumnsComputer.js.map +1 -1
  201. package/browser/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  202. package/browser/persistence/SubjectExecutor.js +3 -3
  203. package/browser/persistence/SubjectExecutor.js.map +1 -1
  204. package/browser/persistence/{SubjectTopoligicalSorter.d.ts → SubjectTopologicalSorter.d.ts} +1 -1
  205. package/browser/persistence/{SubjectTopoligicalSorter.js → SubjectTopologicalSorter.js} +2 -2
  206. package/browser/persistence/SubjectTopologicalSorter.js.map +1 -0
  207. package/browser/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  208. package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  209. package/browser/persistence/subject-builder/OneToManySubjectBuilder.js +1 -2
  210. package/browser/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  211. package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
  212. package/browser/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  213. package/browser/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  214. package/browser/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
  215. package/browser/platform/BrowserPlatformTools.js.map +1 -1
  216. package/browser/platform/PlatformTools.d.ts +0 -1
  217. package/browser/platform/PlatformTools.js +3 -9
  218. package/browser/platform/PlatformTools.js.map +1 -1
  219. package/browser/query-builder/DeleteQueryBuilder.js.map +1 -1
  220. package/browser/query-builder/InsertQueryBuilder.js +15 -15
  221. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  222. package/browser/query-builder/JoinAttribute.js.map +1 -1
  223. package/browser/query-builder/QueryBuilder.d.ts +1 -1
  224. package/browser/query-builder/QueryBuilder.js +12 -14
  225. package/browser/query-builder/QueryBuilder.js.map +1 -1
  226. package/browser/query-builder/QueryExpressionMap.js +2 -2
  227. package/browser/query-builder/QueryExpressionMap.js.map +1 -1
  228. package/browser/query-builder/RelationIdLoader.js.map +1 -1
  229. package/browser/query-builder/RelationLoader.js.map +1 -1
  230. package/browser/query-builder/RelationQueryBuilder.js.map +1 -1
  231. package/browser/query-builder/RelationRemover.js.map +1 -1
  232. package/browser/query-builder/RelationUpdater.js.map +1 -1
  233. package/browser/query-builder/ReturningResultsEntityUpdator.js +5 -2
  234. package/browser/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
  235. package/browser/query-builder/SelectQueryBuilder.d.ts +4 -5
  236. package/browser/query-builder/SelectQueryBuilder.js +23 -22
  237. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  238. package/browser/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  239. package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
  240. package/browser/query-builder/relation-count/RelationCountLoader.js.map +1 -1
  241. package/browser/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js +2 -2
  242. package/browser/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js.map +1 -1
  243. package/browser/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  244. package/browser/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js +2 -2
  245. package/browser/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js.map +1 -1
  246. package/browser/query-builder/transformer/DocumentToEntityTransformer.js.map +1 -1
  247. package/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
  248. package/browser/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
  249. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.d.ts +9 -9
  250. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js +94 -88
  251. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  252. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  253. package/browser/query-runner/QueryLock.js.map +1 -1
  254. package/browser/query-runner/QueryRunner.d.ts +0 -1
  255. package/browser/repository/BaseEntity.js.map +1 -1
  256. package/browser/repository/Repository.d.ts +2 -0
  257. package/browser/repository/Repository.js +2 -0
  258. package/browser/repository/Repository.js.map +1 -1
  259. package/browser/repository/TreeRepository.js.map +1 -1
  260. package/browser/schema-builder/RdbmsSchemaBuilder.js +2 -1
  261. package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  262. package/browser/schema-builder/table/Table.js +2 -2
  263. package/browser/schema-builder/table/Table.js.map +1 -1
  264. package/browser/schema-builder/table/TableColumn.js.map +1 -1
  265. package/browser/schema-builder/util/ViewUtils.js.map +1 -1
  266. package/browser/schema-builder/view/View.js.map +1 -1
  267. package/browser/subscriber/Broadcaster.js +6 -6
  268. package/browser/subscriber/Broadcaster.js.map +1 -1
  269. package/browser/subscriber/BroadcasterResult.js.map +1 -1
  270. package/browser/util/ApplyValueTransformers.js.map +1 -1
  271. package/browser/util/DateUtils.js.map +1 -1
  272. package/browser/util/DepGraph.js +2 -2
  273. package/browser/util/DepGraph.js.map +1 -1
  274. package/browser/util/DirectoryExportedClassesLoader.js.map +1 -1
  275. package/browser/util/ImportUtils.js +23 -35
  276. package/browser/util/ImportUtils.js.map +1 -1
  277. package/browser/util/ObjectUtils.js.map +1 -1
  278. package/browser/util/OrmUtils.js.map +1 -1
  279. package/browser/util/PathUtils.js +1 -1
  280. package/browser/util/PathUtils.js.map +1 -1
  281. package/browser/util/RandomGenerator.js.map +1 -1
  282. package/browser/util/StringUtils.js.map +1 -1
  283. package/browser/util/TreeRepositoryUtils.js +3 -6
  284. package/browser/util/TreeRepositoryUtils.js.map +1 -1
  285. package/cache/DbQueryResultCache.js +1 -1
  286. package/cache/DbQueryResultCache.js.map +1 -1
  287. package/cache/QueryResultCache.d.ts +4 -2
  288. package/cache/QueryResultCache.js.map +1 -1
  289. package/cache/QueryResultCacheFactory.js.map +1 -1
  290. package/cache/RedisQueryResultCache.js +1 -1
  291. package/cache/RedisQueryResultCache.js.map +1 -1
  292. package/cli-ts-node-esm.js.map +1 -1
  293. package/commands/CacheClearCommand.js.map +1 -1
  294. package/commands/CommandUtils.d.ts +1 -1
  295. package/commands/CommandUtils.js +18 -16
  296. package/commands/CommandUtils.js.map +1 -1
  297. package/commands/EntityCreateCommand.js.map +1 -1
  298. package/commands/InitCommand.js +2 -2
  299. package/commands/InitCommand.js.map +1 -1
  300. package/commands/MigrationCreateCommand.js.map +1 -1
  301. package/commands/MigrationGenerateCommand.js.map +1 -1
  302. package/commands/MigrationRevertCommand.js +2 -2
  303. package/commands/MigrationRevertCommand.js.map +1 -1
  304. package/commands/MigrationRunCommand.js +2 -2
  305. package/commands/MigrationRunCommand.js.map +1 -1
  306. package/commands/MigrationShowCommand.js.map +1 -1
  307. package/commands/QueryCommand.js.map +1 -1
  308. package/commands/SchemaDropCommand.js.map +1 -1
  309. package/commands/SchemaLogCommand.js.map +1 -1
  310. package/commands/SchemaSyncCommand.js.map +1 -1
  311. package/commands/SubscriberCreateCommand.js.map +1 -1
  312. package/commands/VersionCommand.js.map +1 -1
  313. package/connection/ConnectionManager.js.map +1 -1
  314. package/connection/ConnectionMetadataBuilder.js.map +1 -1
  315. package/connection/ConnectionOptionsReader.d.ts +4 -4
  316. package/connection/ConnectionOptionsReader.js.map +1 -1
  317. package/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
  318. package/container.js +2 -3
  319. package/container.js.map +1 -1
  320. package/data-source/DataSource.d.ts +2 -0
  321. package/data-source/DataSource.js +5 -1
  322. package/data-source/DataSource.js.map +1 -1
  323. package/decorator/Check.js +1 -2
  324. package/decorator/Check.js.map +1 -1
  325. package/decorator/EntityRepository.js +1 -2
  326. package/decorator/EntityRepository.js.map +1 -1
  327. package/decorator/Exclusion.js +1 -2
  328. package/decorator/Exclusion.js.map +1 -1
  329. package/decorator/Generated.js +1 -2
  330. package/decorator/Generated.js.map +1 -1
  331. package/decorator/Index.js +1 -2
  332. package/decorator/Index.js.map +1 -1
  333. package/decorator/Unique.js +1 -2
  334. package/decorator/Unique.js.map +1 -1
  335. package/decorator/columns/Column.js +1 -2
  336. package/decorator/columns/Column.js.map +1 -1
  337. package/decorator/columns/CreateDateColumn.js +1 -2
  338. package/decorator/columns/CreateDateColumn.js.map +1 -1
  339. package/decorator/columns/DeleteDateColumn.js +1 -2
  340. package/decorator/columns/DeleteDateColumn.js.map +1 -1
  341. package/decorator/columns/ObjectIdColumn.js +1 -2
  342. package/decorator/columns/ObjectIdColumn.js.map +1 -1
  343. package/decorator/columns/PrimaryColumn.js +1 -2
  344. package/decorator/columns/PrimaryColumn.js.map +1 -1
  345. package/decorator/columns/PrimaryGeneratedColumn.js +1 -2
  346. package/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
  347. package/decorator/columns/UpdateDateColumn.js +1 -2
  348. package/decorator/columns/UpdateDateColumn.js.map +1 -1
  349. package/decorator/columns/VersionColumn.js +1 -2
  350. package/decorator/columns/VersionColumn.js.map +1 -1
  351. package/decorator/columns/ViewColumn.js +1 -2
  352. package/decorator/columns/ViewColumn.js.map +1 -1
  353. package/decorator/columns/VirtualColumn.js +2 -3
  354. package/decorator/columns/VirtualColumn.js.map +1 -1
  355. package/decorator/entity/ChildEntity.js +1 -2
  356. package/decorator/entity/ChildEntity.js.map +1 -1
  357. package/decorator/entity/Entity.js +1 -2
  358. package/decorator/entity/Entity.js.map +1 -1
  359. package/decorator/entity/TableInheritance.js +1 -2
  360. package/decorator/entity/TableInheritance.js.map +1 -1
  361. package/decorator/entity-view/ViewEntity.js +1 -2
  362. package/decorator/entity-view/ViewEntity.js.map +1 -1
  363. package/decorator/listeners/AfterInsert.js +1 -2
  364. package/decorator/listeners/AfterInsert.js.map +1 -1
  365. package/decorator/listeners/AfterLoad.js +1 -2
  366. package/decorator/listeners/AfterLoad.js.map +1 -1
  367. package/decorator/listeners/AfterRecover.js +1 -2
  368. package/decorator/listeners/AfterRecover.js.map +1 -1
  369. package/decorator/listeners/AfterRemove.js +1 -2
  370. package/decorator/listeners/AfterRemove.js.map +1 -1
  371. package/decorator/listeners/AfterSoftRemove.js +1 -2
  372. package/decorator/listeners/AfterSoftRemove.js.map +1 -1
  373. package/decorator/listeners/AfterUpdate.js +1 -2
  374. package/decorator/listeners/AfterUpdate.js.map +1 -1
  375. package/decorator/listeners/BeforeInsert.js +1 -2
  376. package/decorator/listeners/BeforeInsert.js.map +1 -1
  377. package/decorator/listeners/BeforeRecover.js +1 -2
  378. package/decorator/listeners/BeforeRecover.js.map +1 -1
  379. package/decorator/listeners/BeforeRemove.js +1 -2
  380. package/decorator/listeners/BeforeRemove.js.map +1 -1
  381. package/decorator/listeners/BeforeSoftRemove.js +1 -2
  382. package/decorator/listeners/BeforeSoftRemove.js.map +1 -1
  383. package/decorator/listeners/BeforeUpdate.js +1 -2
  384. package/decorator/listeners/BeforeUpdate.js.map +1 -1
  385. package/decorator/listeners/EventSubscriber.js +1 -2
  386. package/decorator/listeners/EventSubscriber.js.map +1 -1
  387. package/decorator/relations/JoinColumn.js +1 -2
  388. package/decorator/relations/JoinColumn.js.map +1 -1
  389. package/decorator/relations/JoinTable.js +1 -2
  390. package/decorator/relations/JoinTable.js.map +1 -1
  391. package/decorator/relations/ManyToMany.js +1 -2
  392. package/decorator/relations/ManyToMany.js.map +1 -1
  393. package/decorator/relations/ManyToOne.js +1 -2
  394. package/decorator/relations/ManyToOne.js.map +1 -1
  395. package/decorator/relations/OneToMany.js +1 -2
  396. package/decorator/relations/OneToMany.js.map +1 -1
  397. package/decorator/relations/OneToOne.d.ts +4 -4
  398. package/decorator/relations/OneToOne.js +3 -4
  399. package/decorator/relations/OneToOne.js.map +1 -1
  400. package/decorator/relations/RelationCount.js +1 -2
  401. package/decorator/relations/RelationCount.js.map +1 -1
  402. package/decorator/relations/RelationId.js +1 -2
  403. package/decorator/relations/RelationId.js.map +1 -1
  404. package/decorator/tree/Tree.js +1 -2
  405. package/decorator/tree/Tree.js.map +1 -1
  406. package/decorator/tree/TreeChildren.js +1 -2
  407. package/decorator/tree/TreeChildren.js.map +1 -1
  408. package/decorator/tree/TreeLevelColumn.js +1 -2
  409. package/decorator/tree/TreeLevelColumn.js.map +1 -1
  410. package/decorator/tree/TreeParent.js +1 -2
  411. package/decorator/tree/TreeParent.js.map +1 -1
  412. package/driver/DriverFactory.js.map +1 -1
  413. package/driver/DriverUtils.js.map +1 -1
  414. package/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.d.ts +1 -1
  415. package/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.js.map +1 -1
  416. package/driver/aurora-mysql/AuroraMysqlDriver.js +10 -10
  417. package/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  418. package/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts +0 -1
  419. package/driver/aurora-mysql/AuroraMysqlQueryRunner.js +2 -2
  420. package/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
  421. package/driver/aurora-postgres/AuroraPostgresDriver.js.map +1 -1
  422. package/driver/aurora-postgres/AuroraPostgresQueryRunner.js +2 -2
  423. package/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
  424. package/driver/better-sqlite3/BetterSqlite3Driver.js +2 -2
  425. package/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  426. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js +4 -0
  427. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  428. package/driver/capacitor/CapacitorDriver.js.map +1 -1
  429. package/driver/capacitor/CapacitorQueryRunner.js +2 -2
  430. package/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
  431. package/driver/cockroachdb/CockroachConnectionCredentialsOptions.d.ts +1 -2
  432. package/driver/cockroachdb/CockroachConnectionCredentialsOptions.js.map +1 -1
  433. package/driver/cockroachdb/CockroachConnectionOptions.d.ts +1 -1
  434. package/driver/cockroachdb/CockroachConnectionOptions.js.map +1 -1
  435. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  436. package/driver/cockroachdb/CockroachQueryRunner.d.ts +0 -1
  437. package/driver/cockroachdb/CockroachQueryRunner.js +8 -6
  438. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  439. package/driver/cordova/CordovaDriver.js.map +1 -1
  440. package/driver/cordova/CordovaQueryRunner.js.map +1 -1
  441. package/driver/expo/ExpoDriver.js.map +1 -1
  442. package/driver/expo/ExpoQueryRunner.js +2 -2
  443. package/driver/expo/ExpoQueryRunner.js.map +1 -1
  444. package/driver/mongodb/MongoConnectionOptions.d.ts +1 -2
  445. package/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  446. package/driver/mongodb/MongoDriver.js.map +1 -1
  447. package/driver/mongodb/MongoQueryRunner.d.ts +0 -1
  448. package/driver/mongodb/typings.d.ts +0 -8
  449. package/driver/mongodb/typings.js +0 -1
  450. package/driver/mongodb/typings.js.map +1 -1
  451. package/driver/mysql/MysqlConnectionCredentialsOptions.d.ts +1 -1
  452. package/driver/mysql/MysqlConnectionCredentialsOptions.js.map +1 -1
  453. package/driver/mysql/MysqlConnectionOptions.d.ts +1 -1
  454. package/driver/mysql/MysqlConnectionOptions.js.map +1 -1
  455. package/driver/mysql/MysqlDriver.js +12 -14
  456. package/driver/mysql/MysqlDriver.js.map +1 -1
  457. package/driver/mysql/MysqlQueryRunner.d.ts +0 -1
  458. package/driver/mysql/MysqlQueryRunner.js +1 -1
  459. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  460. package/driver/nativescript/NativescriptDriver.js.map +1 -1
  461. package/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  462. package/driver/oracle/OracleConnectionCredentialsOptions.d.ts +1 -1
  463. package/driver/oracle/OracleConnectionCredentialsOptions.js.map +1 -1
  464. package/driver/oracle/OracleConnectionOptions.d.ts +1 -1
  465. package/driver/oracle/OracleConnectionOptions.js.map +1 -1
  466. package/driver/oracle/OracleDriver.js +18 -10
  467. package/driver/oracle/OracleDriver.js.map +1 -1
  468. package/driver/oracle/OracleQueryRunner.d.ts +0 -1
  469. package/driver/oracle/OracleQueryRunner.js +8 -10
  470. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  471. package/driver/postgres/PostgresConnectionCredentialsOptions.d.ts +1 -2
  472. package/driver/postgres/PostgresConnectionCredentialsOptions.js.map +1 -1
  473. package/driver/postgres/PostgresConnectionOptions.d.ts +1 -1
  474. package/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  475. package/driver/postgres/PostgresDriver.js +11 -6
  476. package/driver/postgres/PostgresDriver.js.map +1 -1
  477. package/driver/postgres/PostgresQueryRunner.d.ts +1 -2
  478. package/driver/postgres/PostgresQueryRunner.js +35 -12
  479. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  480. package/driver/react-native/ReactNativeDriver.js +4 -6
  481. package/driver/react-native/ReactNativeDriver.js.map +1 -1
  482. package/driver/react-native/ReactNativeQueryRunner.js +2 -2
  483. package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  484. package/driver/sap/SapDriver.js.map +1 -1
  485. package/driver/sap/SapQueryRunner.d.ts +0 -1
  486. package/driver/sap/SapQueryRunner.js +4 -4
  487. package/driver/sap/SapQueryRunner.js.map +1 -1
  488. package/driver/spanner/SpannerConnectionCredentialsOptions.d.ts +1 -1
  489. package/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -1
  490. package/driver/spanner/SpannerConnectionOptions.d.ts +1 -1
  491. package/driver/spanner/SpannerConnectionOptions.js.map +1 -1
  492. package/driver/spanner/SpannerDriver.js.map +1 -1
  493. package/driver/spanner/SpannerQueryRunner.d.ts +0 -1
  494. package/driver/spanner/SpannerQueryRunner.js.map +1 -1
  495. package/driver/sqlite/SqliteDriver.js +2 -2
  496. package/driver/sqlite/SqliteDriver.js.map +1 -1
  497. package/driver/sqlite/SqliteQueryRunner.js +3 -2
  498. package/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  499. package/driver/sqlite-abstract/AbstractSqliteDriver.js +4 -6
  500. package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  501. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +0 -1
  502. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +4 -4
  503. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  504. package/driver/sqljs/SqljsDriver.js +1 -2
  505. package/driver/sqljs/SqljsDriver.js.map +1 -1
  506. package/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  507. package/driver/sqlserver/SqlServerConnectionCredentialsOptions.d.ts +1 -1
  508. package/driver/sqlserver/SqlServerConnectionCredentialsOptions.js.map +1 -1
  509. package/driver/sqlserver/SqlServerConnectionOptions.d.ts +1 -1
  510. package/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
  511. package/driver/sqlserver/SqlServerDriver.js.map +1 -1
  512. package/driver/sqlserver/SqlServerQueryRunner.d.ts +0 -1
  513. package/driver/sqlserver/SqlServerQueryRunner.js +9 -7
  514. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  515. package/driver/types/ColumnTypes.d.ts +1 -1
  516. package/driver/types/ColumnTypes.js.map +1 -1
  517. package/driver/types/MetadataTableType.js +1 -1
  518. package/driver/types/MetadataTableType.js.map +1 -1
  519. package/entity-manager/EntityManager.d.ts +4 -2
  520. package/entity-manager/EntityManager.js +4 -2
  521. package/entity-manager/EntityManager.js.map +1 -1
  522. package/entity-manager/MongoEntityManager.js +1 -1
  523. package/entity-manager/MongoEntityManager.js.map +1 -1
  524. package/entity-schema/EntitySchemaTransformer.js +2 -3
  525. package/entity-schema/EntitySchemaTransformer.js.map +1 -1
  526. package/error/EntityMetadataNotFoundError.js.map +1 -1
  527. package/error/EntityNotFoundError.js.map +1 -1
  528. package/error/FindRelationsNotFoundError.js.map +1 -1
  529. package/error/MissingJoinColumnError.js.map +1 -1
  530. package/error/MissingJoinTableError.js.map +1 -1
  531. package/error/QueryFailedError.js.map +1 -1
  532. package/error/RepositoryNotTreeError.js.map +1 -1
  533. package/error/TypeORMError.js.map +1 -1
  534. package/find-options/FindOperator.js.map +1 -1
  535. package/find-options/FindOptionsOrder.d.ts +0 -1
  536. package/find-options/FindOptionsRelations.d.ts +0 -1
  537. package/find-options/FindOptionsSelect.d.ts +0 -1
  538. package/find-options/FindOptionsUtils.js +1 -1
  539. package/find-options/FindOptionsUtils.js.map +1 -1
  540. package/find-options/FindOptionsWhere.d.ts +0 -1
  541. package/find-options/operator/And.js +1 -2
  542. package/find-options/operator/And.js.map +1 -1
  543. package/find-options/operator/Any.js +1 -2
  544. package/find-options/operator/Any.js.map +1 -1
  545. package/find-options/operator/ArrayContainedBy.js +1 -2
  546. package/find-options/operator/ArrayContainedBy.js.map +1 -1
  547. package/find-options/operator/ArrayContains.js +1 -2
  548. package/find-options/operator/ArrayContains.js.map +1 -1
  549. package/find-options/operator/ArrayOverlap.js +1 -2
  550. package/find-options/operator/ArrayOverlap.js.map +1 -1
  551. package/find-options/operator/Between.js +1 -2
  552. package/find-options/operator/Between.js.map +1 -1
  553. package/find-options/operator/Equal.js +1 -2
  554. package/find-options/operator/Equal.js.map +1 -1
  555. package/find-options/operator/ILike.js +1 -2
  556. package/find-options/operator/ILike.js.map +1 -1
  557. package/find-options/operator/In.js +1 -2
  558. package/find-options/operator/In.js.map +1 -1
  559. package/find-options/operator/IsNull.js +1 -2
  560. package/find-options/operator/IsNull.js.map +1 -1
  561. package/find-options/operator/JsonContains.js +1 -2
  562. package/find-options/operator/JsonContains.js.map +1 -1
  563. package/find-options/operator/LessThan.js +1 -2
  564. package/find-options/operator/LessThan.js.map +1 -1
  565. package/find-options/operator/LessThanOrEqual.js +1 -2
  566. package/find-options/operator/LessThanOrEqual.js.map +1 -1
  567. package/find-options/operator/Like.js +1 -2
  568. package/find-options/operator/Like.js.map +1 -1
  569. package/find-options/operator/MoreThan.js +1 -2
  570. package/find-options/operator/MoreThan.js.map +1 -1
  571. package/find-options/operator/MoreThanOrEqual.js +1 -2
  572. package/find-options/operator/MoreThanOrEqual.js.map +1 -1
  573. package/find-options/operator/Not.js +1 -2
  574. package/find-options/operator/Not.js.map +1 -1
  575. package/find-options/operator/Or.js +1 -2
  576. package/find-options/operator/Or.js.map +1 -1
  577. package/find-options/operator/Raw.js +1 -2
  578. package/find-options/operator/Raw.js.map +1 -1
  579. package/globals.js +14 -15
  580. package/globals.js.map +1 -1
  581. package/logger/AbstractLogger.js.map +1 -1
  582. package/logger/AdvancedConsoleLogger.js +1 -2
  583. package/logger/AdvancedConsoleLogger.js.map +1 -1
  584. package/logger/DebugLogger.js +1 -2
  585. package/logger/DebugLogger.js.map +1 -1
  586. package/logger/FileLogger.js +2 -3
  587. package/logger/FileLogger.js.map +1 -1
  588. package/logger/LoggerFactory.js.map +1 -1
  589. package/logger/SimpleConsoleLogger.js +1 -2
  590. package/logger/SimpleConsoleLogger.js.map +1 -1
  591. package/metadata/CheckMetadata.js.map +1 -1
  592. package/metadata/ColumnMetadata.js +19 -15
  593. package/metadata/ColumnMetadata.js.map +1 -1
  594. package/metadata/EmbeddedMetadata.js +1 -1
  595. package/metadata/EmbeddedMetadata.js.map +1 -1
  596. package/metadata/EntityListenerMetadata.js.map +1 -1
  597. package/metadata/EntityMetadata.js +3 -7
  598. package/metadata/EntityMetadata.js.map +1 -1
  599. package/metadata/ExclusionMetadata.js.map +1 -1
  600. package/metadata/IndexMetadata.js.map +1 -1
  601. package/metadata/RelationIdMetadata.js.map +1 -1
  602. package/metadata/RelationMetadata.js.map +1 -1
  603. package/metadata/UniqueMetadata.js.map +1 -1
  604. package/metadata-args/MetadataArgsStorage.js.map +1 -1
  605. package/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
  606. package/metadata-builder/EntityMetadataBuilder.js +5 -8
  607. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  608. package/metadata-builder/EntityMetadataValidator.js.map +1 -1
  609. package/metadata-builder/JunctionEntityMetadataBuilder.js +7 -8
  610. package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  611. package/metadata-builder/MetadataUtils.js.map +1 -1
  612. package/metadata-builder/RelationJoinColumnBuilder.js +2 -3
  613. package/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  614. package/migration/MigrationExecutor.js +2 -2
  615. package/migration/MigrationExecutor.js.map +1 -1
  616. package/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  617. package/naming-strategy/LegacyOracleNamingStrategy.js.map +1 -1
  618. package/package.json +1 -1
  619. package/persistence/EntityPersistExecutor.js.map +1 -1
  620. package/persistence/Subject.js.map +1 -1
  621. package/persistence/SubjectChangedColumnsComputer.js.map +1 -1
  622. package/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  623. package/persistence/SubjectExecutor.js +3 -3
  624. package/persistence/SubjectExecutor.js.map +1 -1
  625. package/persistence/{SubjectTopoligicalSorter.d.ts → SubjectTopologicalSorter.d.ts} +1 -1
  626. package/persistence/{SubjectTopoligicalSorter.js → SubjectTopologicalSorter.js} +4 -4
  627. package/persistence/SubjectTopologicalSorter.js.map +1 -0
  628. package/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  629. package/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  630. package/persistence/subject-builder/OneToManySubjectBuilder.js +1 -2
  631. package/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  632. package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
  633. package/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  634. package/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  635. package/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
  636. package/platform/PlatformTools.d.ts +0 -1
  637. package/platform/PlatformTools.js +12 -18
  638. package/platform/PlatformTools.js.map +1 -1
  639. package/query-builder/DeleteQueryBuilder.js.map +1 -1
  640. package/query-builder/InsertQueryBuilder.js +15 -15
  641. package/query-builder/InsertQueryBuilder.js.map +1 -1
  642. package/query-builder/JoinAttribute.js.map +1 -1
  643. package/query-builder/QueryBuilder.d.ts +1 -1
  644. package/query-builder/QueryBuilder.js +12 -14
  645. package/query-builder/QueryBuilder.js.map +1 -1
  646. package/query-builder/QueryExpressionMap.js +2 -2
  647. package/query-builder/QueryExpressionMap.js.map +1 -1
  648. package/query-builder/RelationIdLoader.js.map +1 -1
  649. package/query-builder/RelationLoader.js.map +1 -1
  650. package/query-builder/RelationQueryBuilder.js.map +1 -1
  651. package/query-builder/RelationRemover.js.map +1 -1
  652. package/query-builder/RelationUpdater.js.map +1 -1
  653. package/query-builder/ReturningResultsEntityUpdator.js +5 -2
  654. package/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
  655. package/query-builder/SelectQueryBuilder.d.ts +4 -5
  656. package/query-builder/SelectQueryBuilder.js +23 -22
  657. package/query-builder/SelectQueryBuilder.js.map +1 -1
  658. package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  659. package/query-builder/UpdateQueryBuilder.js.map +1 -1
  660. package/query-builder/index.js +1 -2
  661. package/query-builder/index.js.map +1 -1
  662. package/query-builder/relation-count/RelationCountLoader.js.map +1 -1
  663. package/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js +2 -2
  664. package/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js.map +1 -1
  665. package/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  666. package/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js +2 -2
  667. package/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js.map +1 -1
  668. package/query-builder/transformer/DocumentToEntityTransformer.js.map +1 -1
  669. package/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
  670. package/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
  671. package/query-builder/transformer/RawSqlResultsToEntityTransformer.d.ts +9 -9
  672. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js +94 -88
  673. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  674. package/query-runner/BaseQueryRunner.js.map +1 -1
  675. package/query-runner/QueryLock.js.map +1 -1
  676. package/query-runner/QueryRunner.d.ts +0 -1
  677. package/repository/BaseEntity.js.map +1 -1
  678. package/repository/Repository.d.ts +2 -0
  679. package/repository/Repository.js +2 -0
  680. package/repository/Repository.js.map +1 -1
  681. package/repository/TreeRepository.js.map +1 -1
  682. package/schema-builder/RdbmsSchemaBuilder.js +2 -1
  683. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  684. package/schema-builder/table/Table.js +2 -2
  685. package/schema-builder/table/Table.js.map +1 -1
  686. package/schema-builder/table/TableColumn.js.map +1 -1
  687. package/schema-builder/util/ViewUtils.js.map +1 -1
  688. package/schema-builder/view/View.js.map +1 -1
  689. package/subscriber/Broadcaster.js +6 -6
  690. package/subscriber/Broadcaster.js.map +1 -1
  691. package/subscriber/BroadcasterResult.js.map +1 -1
  692. package/util/ApplyValueTransformers.js.map +1 -1
  693. package/util/DateUtils.js.map +1 -1
  694. package/util/DepGraph.js +2 -2
  695. package/util/DepGraph.js.map +1 -1
  696. package/util/DirectoryExportedClassesLoader.js +2 -3
  697. package/util/DirectoryExportedClassesLoader.js.map +1 -1
  698. package/util/ImportUtils.js +24 -37
  699. package/util/ImportUtils.js.map +1 -1
  700. package/util/ObjectUtils.js.map +1 -1
  701. package/util/OrmUtils.js.map +1 -1
  702. package/util/PathUtils.js +4 -5
  703. package/util/PathUtils.js.map +1 -1
  704. package/util/RandomGenerator.js.map +1 -1
  705. package/util/StringUtils.js +6 -7
  706. package/util/StringUtils.js.map +1 -1
  707. package/util/TreeRepositoryUtils.js +3 -6
  708. package/util/TreeRepositoryUtils.js.map +1 -1
  709. package/browser/persistence/SubjectTopoligicalSorter.js.map +0 -1
  710. package/persistence/SubjectTopoligicalSorter.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/query-builder/relation-id/RelationIdLoader.ts"],"names":[],"mappings":"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","file":"RelationIdLoader.js","sourcesContent":["import { RelationIdAttribute } from \"./RelationIdAttribute\"\nimport { DataSource } from \"../../data-source/DataSource\"\nimport { RelationIdLoadResult } from \"./RelationIdLoadResult\"\nimport { ObjectLiteral } from \"../../common/ObjectLiteral\"\nimport { QueryRunner } from \"../../query-runner/QueryRunner\"\nimport { DriverUtils } from \"../../driver/DriverUtils\"\nimport { TypeORMError } from \"../../error/TypeORMError\"\nimport { OrmUtils } from \"../../util/OrmUtils\"\n\nexport class RelationIdLoader {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(\n protected connection: DataSource,\n protected queryRunner: QueryRunner | undefined,\n protected relationIdAttributes: RelationIdAttribute[],\n ) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n async load(rawEntities: any[]): Promise<RelationIdLoadResult[]> {\n const promises = this.relationIdAttributes.map(\n async (relationIdAttr) => {\n if (\n relationIdAttr.relation.isManyToOne ||\n relationIdAttr.relation.isOneToOneOwner\n ) {\n // example: Post and Tag\n // loadRelationIdAndMap(\"post.tagId\", \"post.tag\")\n // we expect it to load id of tag\n\n if (relationIdAttr.queryBuilderFactory)\n throw new TypeORMError(\n \"Additional condition can not be used with ManyToOne or OneToOne owner relations.\",\n )\n\n const duplicates: { [duplicateKey: string]: boolean } = {}\n const results = rawEntities\n .map((rawEntity) => {\n const result: ObjectLiteral = {}\n const duplicateParts: Array<string> = []\n relationIdAttr.relation.joinColumns.forEach(\n (joinColumn) => {\n result[joinColumn.databaseName] =\n this.connection.driver.prepareHydratedValue(\n rawEntity[\n DriverUtils.buildAlias(\n this.connection.driver,\n undefined,\n relationIdAttr.parentAlias,\n joinColumn.databaseName,\n )\n ],\n joinColumn.referencedColumn!,\n )\n const duplicatePart = `${\n joinColumn.databaseName\n }:${result[joinColumn.databaseName]}`\n if (\n duplicateParts.indexOf(\n duplicatePart,\n ) === -1\n ) {\n duplicateParts.push(duplicatePart)\n }\n },\n )\n\n relationIdAttr.relation.entityMetadata.primaryColumns.forEach(\n (primaryColumn) => {\n result[primaryColumn.databaseName] =\n this.connection.driver.prepareHydratedValue(\n rawEntity[\n DriverUtils.buildAlias(\n this.connection.driver,\n undefined,\n relationIdAttr.parentAlias,\n primaryColumn.databaseName,\n )\n ],\n primaryColumn,\n )\n const duplicatePart = `${\n primaryColumn.databaseName\n }:${result[primaryColumn.databaseName]}`\n if (\n duplicateParts.indexOf(\n duplicatePart,\n ) === -1\n ) {\n duplicateParts.push(duplicatePart)\n }\n },\n )\n\n duplicateParts.sort()\n const duplicate = duplicateParts.join(\"::\")\n if (duplicates[duplicate]) {\n return null\n }\n duplicates[duplicate] = true\n return result\n })\n .filter((v) => v)\n\n return {\n relationIdAttribute: relationIdAttr,\n results: results,\n }\n } else if (\n relationIdAttr.relation.isOneToMany ||\n relationIdAttr.relation.isOneToOneNotOwner\n ) {\n // example: Post and Category\n // loadRelationIdAndMap(\"post.categoryIds\", \"post.categories\")\n // we expect it to load array of category ids\n\n const relation = relationIdAttr.relation // \"post.categories\"\n const joinColumns = relation.isOwning\n ? relation.joinColumns\n : relation.inverseRelation!.joinColumns\n const table = relation.inverseEntityMetadata.target // category\n const tableName = relation.inverseEntityMetadata.tableName // category\n const tableAlias = relationIdAttr.alias || tableName // if condition (custom query builder factory) is set then relationIdAttr.alias defined\n\n const duplicates: { [duplicateKey: string]: boolean } = {}\n const parameters: ObjectLiteral = {}\n const condition = rawEntities\n .map((rawEntity, index) => {\n const duplicateParts: Array<string> = []\n const parameterParts: ObjectLiteral = {}\n const queryPart = joinColumns\n .map((joinColumn) => {\n const parameterName =\n joinColumn.databaseName + index\n const parameterValue =\n rawEntity[\n DriverUtils.buildAlias(\n this.connection.driver,\n undefined,\n relationIdAttr.parentAlias,\n joinColumn.referencedColumn!\n .databaseName,\n )\n ]\n const duplicatePart = `${tableAlias}:${joinColumn.propertyPath}:${parameterValue}`\n if (\n duplicateParts.indexOf(\n duplicatePart,\n ) !== -1\n ) {\n return \"\"\n }\n duplicateParts.push(duplicatePart)\n parameterParts[parameterName] =\n parameterValue\n return (\n tableAlias +\n \".\" +\n joinColumn.propertyPath +\n \" = :\" +\n parameterName\n )\n })\n .filter((v) => v)\n .join(\" AND \")\n duplicateParts.sort()\n const duplicate = duplicateParts.join(\"::\")\n if (duplicates[duplicate]) {\n return \"\"\n }\n duplicates[duplicate] = true\n Object.assign(parameters, parameterParts)\n return queryPart\n })\n .filter((v) => v)\n .map((condition) => \"(\" + condition + \")\")\n .join(\" OR \")\n\n // ensure we won't perform redundant queries for joined data which was not found in selection\n // example: if post.category was not found in db then no need to execute query for category.imageIds\n if (!condition)\n return {\n relationIdAttribute: relationIdAttr,\n results: [],\n }\n\n // generate query:\n // SELECT category.id, category.postId FROM category category ON category.postId = :postId\n const qb = this.connection.createQueryBuilder(\n this.queryRunner,\n )\n\n const columns = OrmUtils.uniq(\n [\n ...joinColumns,\n ...relation.inverseRelation!.entityMetadata\n .primaryColumns,\n ],\n (column) => column.propertyPath,\n )\n\n columns.forEach((joinColumn) => {\n qb.addSelect(\n tableAlias + \".\" + joinColumn.propertyPath,\n joinColumn.databaseName,\n )\n })\n\n qb.from(table, tableAlias)\n .where(\"(\" + condition + \")\") // need brackets because if we have additional condition and no brackets, it looks like (a = 1) OR (a = 2) AND b = 1, that is incorrect\n .setParameters(parameters)\n\n // apply condition (custom query builder factory)\n if (relationIdAttr.queryBuilderFactory)\n relationIdAttr.queryBuilderFactory(qb)\n\n const results = await qb.getRawMany()\n results.forEach((result) => {\n joinColumns.forEach((column) => {\n result[column.databaseName] =\n this.connection.driver.prepareHydratedValue(\n result[column.databaseName],\n column.referencedColumn!,\n )\n })\n relation.inverseRelation!.entityMetadata.primaryColumns.forEach(\n (column) => {\n result[column.databaseName] =\n this.connection.driver.prepareHydratedValue(\n result[column.databaseName],\n column,\n )\n },\n )\n })\n\n return {\n relationIdAttribute: relationIdAttr,\n results,\n }\n } else {\n // many-to-many\n // example: Post and Category\n // owner side: loadRelationIdAndMap(\"post.categoryIds\", \"post.categories\")\n // inverse side: loadRelationIdAndMap(\"category.postIds\", \"category.posts\")\n // we expect it to load array of post ids\n\n const relation = relationIdAttr.relation\n const joinColumns = relation.isOwning\n ? relation.joinColumns\n : relation.inverseRelation!.inverseJoinColumns\n const inverseJoinColumns = relation.isOwning\n ? relation.inverseJoinColumns\n : relation.inverseRelation!.joinColumns\n const junctionAlias = relationIdAttr.junctionAlias\n const inverseSideTableName =\n relationIdAttr.joinInverseSideMetadata.tableName\n const inverseSideTableAlias =\n relationIdAttr.alias || inverseSideTableName\n const junctionTableName = relation.isOwning\n ? relation.junctionEntityMetadata!.tableName\n : relation.inverseRelation!.junctionEntityMetadata!\n .tableName\n\n const mappedColumns = rawEntities.map((rawEntity) => {\n return joinColumns.reduce((map, joinColumn) => {\n map[joinColumn.propertyPath] =\n rawEntity[\n DriverUtils.buildAlias(\n this.connection.driver,\n undefined,\n relationIdAttr.parentAlias,\n joinColumn.referencedColumn!\n .databaseName,\n )\n ]\n return map\n }, {} as ObjectLiteral)\n })\n\n // ensure we won't perform redundant queries for joined data which was not found in selection\n // example: if post.category was not found in db then no need to execute query for category.imageIds\n if (mappedColumns.length === 0)\n return {\n relationIdAttribute: relationIdAttr,\n results: [],\n }\n\n const parameters: ObjectLiteral = {}\n const duplicates: { [duplicateKey: string]: boolean } = {}\n const joinColumnConditions = mappedColumns\n .map((mappedColumn, index) => {\n const duplicateParts: Array<string> = []\n const parameterParts: ObjectLiteral = {}\n const queryPart = Object.keys(mappedColumn)\n .map((key) => {\n const parameterName = key + index\n const parameterValue = mappedColumn[key]\n const duplicatePart = `${junctionAlias}:${key}:${parameterValue}`\n if (\n duplicateParts.indexOf(\n duplicatePart,\n ) !== -1\n ) {\n return \"\"\n }\n duplicateParts.push(duplicatePart)\n parameterParts[parameterName] =\n parameterValue\n return (\n junctionAlias +\n \".\" +\n key +\n \" = :\" +\n parameterName\n )\n })\n .filter((s) => s)\n .join(\" AND \")\n duplicateParts.sort()\n const duplicate = duplicateParts.join(\"::\")\n if (duplicates[duplicate]) {\n return \"\"\n }\n duplicates[duplicate] = true\n Object.assign(parameters, parameterParts)\n return queryPart\n })\n .filter((s) => s)\n\n const inverseJoinColumnCondition = inverseJoinColumns\n .map((joinColumn) => {\n return (\n junctionAlias +\n \".\" +\n joinColumn.propertyPath +\n \" = \" +\n inverseSideTableAlias +\n \".\" +\n joinColumn.referencedColumn!.propertyPath\n )\n })\n .join(\" AND \")\n\n const condition = joinColumnConditions\n .map((condition) => {\n return (\n \"(\" +\n condition +\n \" AND \" +\n inverseJoinColumnCondition +\n \")\"\n )\n })\n .join(\" OR \")\n\n const qb = this.connection.createQueryBuilder(\n this.queryRunner,\n )\n\n inverseJoinColumns.forEach((joinColumn) => {\n qb.addSelect(\n junctionAlias + \".\" + joinColumn.propertyPath,\n joinColumn.databaseName,\n ).addOrderBy(\n junctionAlias + \".\" + joinColumn.propertyPath,\n )\n })\n\n joinColumns.forEach((joinColumn) => {\n qb.addSelect(\n junctionAlias + \".\" + joinColumn.propertyPath,\n joinColumn.databaseName,\n ).addOrderBy(\n junctionAlias + \".\" + joinColumn.propertyPath,\n )\n })\n\n qb.from(inverseSideTableName, inverseSideTableAlias)\n .innerJoin(junctionTableName, junctionAlias, condition)\n .setParameters(parameters)\n\n // apply condition (custom query builder factory)\n if (relationIdAttr.queryBuilderFactory)\n relationIdAttr.queryBuilderFactory(qb)\n\n const results = await qb.getRawMany()\n results.forEach((result) => {\n ;[...joinColumns, ...inverseJoinColumns].forEach(\n (column) => {\n result[column.databaseName] =\n this.connection.driver.prepareHydratedValue(\n result[column.databaseName],\n column.referencedColumn!,\n )\n },\n )\n })\n\n return {\n relationIdAttribute: relationIdAttr,\n results,\n }\n }\n },\n )\n\n return Promise.all(promises)\n }\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../browser/src/query-builder/relation-id/RelationIdLoader.ts"],"names":[],"mappings":"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","file":"RelationIdLoader.js","sourcesContent":["import { RelationIdAttribute } from \"./RelationIdAttribute\"\nimport { DataSource } from \"../../data-source/DataSource\"\nimport { RelationIdLoadResult } from \"./RelationIdLoadResult\"\nimport { ObjectLiteral } from \"../../common/ObjectLiteral\"\nimport { QueryRunner } from \"../../query-runner/QueryRunner\"\nimport { DriverUtils } from \"../../driver/DriverUtils\"\nimport { TypeORMError } from \"../../error/TypeORMError\"\nimport { OrmUtils } from \"../../util/OrmUtils\"\n\nexport class RelationIdLoader {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(\n protected connection: DataSource,\n protected queryRunner: QueryRunner | undefined,\n protected relationIdAttributes: RelationIdAttribute[],\n ) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n async load(rawEntities: any[]): Promise<RelationIdLoadResult[]> {\n const promises = this.relationIdAttributes.map(\n async (relationIdAttr) => {\n if (\n relationIdAttr.relation.isManyToOne ||\n relationIdAttr.relation.isOneToOneOwner\n ) {\n // example: Post and Tag\n // loadRelationIdAndMap(\"post.tagId\", \"post.tag\")\n // we expect it to load id of tag\n\n if (relationIdAttr.queryBuilderFactory)\n throw new TypeORMError(\n \"Additional condition can not be used with ManyToOne or OneToOne owner relations.\",\n )\n\n const duplicates: { [duplicateKey: string]: boolean } = {}\n const results = rawEntities\n .map((rawEntity) => {\n const result: ObjectLiteral = {}\n const duplicateParts: Array<string> = []\n relationIdAttr.relation.joinColumns.forEach(\n (joinColumn) => {\n result[joinColumn.databaseName] =\n this.connection.driver.prepareHydratedValue(\n rawEntity[\n DriverUtils.buildAlias(\n this.connection.driver,\n undefined,\n relationIdAttr.parentAlias,\n joinColumn.databaseName,\n )\n ],\n joinColumn.referencedColumn!,\n )\n const duplicatePart = `${\n joinColumn.databaseName\n }:${result[joinColumn.databaseName]}`\n if (\n duplicateParts.indexOf(\n duplicatePart,\n ) === -1\n ) {\n duplicateParts.push(duplicatePart)\n }\n },\n )\n\n relationIdAttr.relation.entityMetadata.primaryColumns.forEach(\n (primaryColumn) => {\n result[primaryColumn.databaseName] =\n this.connection.driver.prepareHydratedValue(\n rawEntity[\n DriverUtils.buildAlias(\n this.connection.driver,\n undefined,\n relationIdAttr.parentAlias,\n primaryColumn.databaseName,\n )\n ],\n primaryColumn,\n )\n const duplicatePart = `${\n primaryColumn.databaseName\n }:${result[primaryColumn.databaseName]}`\n if (\n duplicateParts.indexOf(\n duplicatePart,\n ) === -1\n ) {\n duplicateParts.push(duplicatePart)\n }\n },\n )\n\n duplicateParts.sort()\n const duplicate = duplicateParts.join(\"::\")\n if (duplicates[duplicate]) {\n return null\n }\n duplicates[duplicate] = true\n return result\n })\n .filter((v) => v)\n\n return {\n relationIdAttribute: relationIdAttr,\n results: results,\n }\n } else if (\n relationIdAttr.relation.isOneToMany ||\n relationIdAttr.relation.isOneToOneNotOwner\n ) {\n // example: Post and Category\n // loadRelationIdAndMap(\"post.categoryIds\", \"post.categories\")\n // we expect it to load array of category ids\n\n const relation = relationIdAttr.relation // \"post.categories\"\n const joinColumns = relation.isOwning\n ? relation.joinColumns\n : relation.inverseRelation!.joinColumns\n const table = relation.inverseEntityMetadata.target // category\n const tableName = relation.inverseEntityMetadata.tableName // category\n const tableAlias = relationIdAttr.alias || tableName // if condition (custom query builder factory) is set then relationIdAttr.alias defined\n\n const duplicates: { [duplicateKey: string]: boolean } = {}\n const parameters: ObjectLiteral = {}\n const condition = rawEntities\n .map((rawEntity, index) => {\n const duplicateParts: Array<string> = []\n const parameterParts: ObjectLiteral = {}\n const queryPart = joinColumns\n .map((joinColumn) => {\n const parameterName =\n joinColumn.databaseName + index\n const parameterValue =\n rawEntity[\n DriverUtils.buildAlias(\n this.connection.driver,\n undefined,\n relationIdAttr.parentAlias,\n joinColumn.referencedColumn!\n .databaseName,\n )\n ]\n const duplicatePart = `${tableAlias}:${joinColumn.propertyPath}:${parameterValue}`\n if (\n duplicateParts.indexOf(\n duplicatePart,\n ) !== -1\n ) {\n return \"\"\n }\n duplicateParts.push(duplicatePart)\n parameterParts[parameterName] =\n parameterValue\n return (\n tableAlias +\n \".\" +\n joinColumn.propertyPath +\n \" = :\" +\n parameterName\n )\n })\n .filter((v) => v)\n .join(\" AND \")\n duplicateParts.sort()\n const duplicate = duplicateParts.join(\"::\")\n if (duplicates[duplicate]) {\n return \"\"\n }\n duplicates[duplicate] = true\n Object.assign(parameters, parameterParts)\n return queryPart\n })\n .filter((v) => v)\n .map((condition) => \"(\" + condition + \")\")\n .join(\" OR \")\n\n // ensure we won't perform redundant queries for joined data which was not found in selection\n // example: if post.category was not found in db then no need to execute query for category.imageIds\n if (!condition)\n return {\n relationIdAttribute: relationIdAttr,\n results: [],\n }\n\n // generate query:\n // SELECT category.id, category.postId FROM category category ON category.postId = :postId\n const qb = this.connection.createQueryBuilder(\n this.queryRunner,\n )\n\n const columns = OrmUtils.uniq(\n [\n ...joinColumns,\n ...relation.inverseRelation!.entityMetadata\n .primaryColumns,\n ],\n (column) => column.propertyPath,\n )\n\n columns.forEach((joinColumn) => {\n qb.addSelect(\n tableAlias + \".\" + joinColumn.propertyPath,\n joinColumn.databaseName,\n )\n })\n\n qb.from(table, tableAlias)\n .where(\"(\" + condition + \")\") // need brackets because if we have additional condition and no brackets, it looks like (a = 1) OR (a = 2) AND b = 1, that is incorrect\n .setParameters(parameters)\n\n // apply condition (custom query builder factory)\n if (relationIdAttr.queryBuilderFactory)\n relationIdAttr.queryBuilderFactory(qb)\n\n const results = await qb.getRawMany()\n results.forEach((result) => {\n joinColumns.forEach((column) => {\n result[column.databaseName] =\n this.connection.driver.prepareHydratedValue(\n result[column.databaseName],\n column.referencedColumn!,\n )\n })\n relation.inverseRelation!.entityMetadata.primaryColumns.forEach(\n (column) => {\n result[column.databaseName] =\n this.connection.driver.prepareHydratedValue(\n result[column.databaseName],\n column,\n )\n },\n )\n })\n\n return {\n relationIdAttribute: relationIdAttr,\n results,\n }\n } else {\n // many-to-many\n // example: Post and Category\n // owner side: loadRelationIdAndMap(\"post.categoryIds\", \"post.categories\")\n // inverse side: loadRelationIdAndMap(\"category.postIds\", \"category.posts\")\n // we expect it to load array of post ids\n\n const relation = relationIdAttr.relation\n const joinColumns = relation.isOwning\n ? relation.joinColumns\n : relation.inverseRelation!.inverseJoinColumns\n const inverseJoinColumns = relation.isOwning\n ? relation.inverseJoinColumns\n : relation.inverseRelation!.joinColumns\n const junctionAlias = relationIdAttr.junctionAlias\n const inverseSideTableName =\n relationIdAttr.joinInverseSideMetadata.tableName\n const inverseSideTableAlias =\n relationIdAttr.alias || inverseSideTableName\n const junctionTableName = relation.isOwning\n ? relation.junctionEntityMetadata!.tableName\n : relation.inverseRelation!.junctionEntityMetadata!\n .tableName\n\n const mappedColumns = rawEntities.map((rawEntity) => {\n return joinColumns.reduce((map, joinColumn) => {\n map[joinColumn.propertyPath] =\n rawEntity[\n DriverUtils.buildAlias(\n this.connection.driver,\n undefined,\n relationIdAttr.parentAlias,\n joinColumn.referencedColumn!\n .databaseName,\n )\n ]\n return map\n }, {} as ObjectLiteral)\n })\n\n // ensure we won't perform redundant queries for joined data which was not found in selection\n // example: if post.category was not found in db then no need to execute query for category.imageIds\n if (mappedColumns.length === 0)\n return {\n relationIdAttribute: relationIdAttr,\n results: [],\n }\n\n const parameters: ObjectLiteral = {}\n const duplicates: { [duplicateKey: string]: boolean } = {}\n const joinColumnConditions = mappedColumns\n .map((mappedColumn, index) => {\n const duplicateParts: Array<string> = []\n const parameterParts: ObjectLiteral = {}\n const queryPart = Object.keys(mappedColumn)\n .map((key) => {\n const parameterName = key + index\n const parameterValue = mappedColumn[key]\n const duplicatePart = `${junctionAlias}:${key}:${parameterValue}`\n if (\n duplicateParts.indexOf(\n duplicatePart,\n ) !== -1\n ) {\n return \"\"\n }\n duplicateParts.push(duplicatePart)\n parameterParts[parameterName] =\n parameterValue\n return (\n junctionAlias +\n \".\" +\n key +\n \" = :\" +\n parameterName\n )\n })\n .filter((s) => s)\n .join(\" AND \")\n duplicateParts.sort()\n const duplicate = duplicateParts.join(\"::\")\n if (duplicates[duplicate]) {\n return \"\"\n }\n duplicates[duplicate] = true\n Object.assign(parameters, parameterParts)\n return queryPart\n })\n .filter((s) => s)\n\n const inverseJoinColumnCondition = inverseJoinColumns\n .map((joinColumn) => {\n return (\n junctionAlias +\n \".\" +\n joinColumn.propertyPath +\n \" = \" +\n inverseSideTableAlias +\n \".\" +\n joinColumn.referencedColumn!.propertyPath\n )\n })\n .join(\" AND \")\n\n const condition = joinColumnConditions\n .map((condition) => {\n return (\n \"(\" +\n condition +\n \" AND \" +\n inverseJoinColumnCondition +\n \")\"\n )\n })\n .join(\" OR \")\n\n const qb = this.connection.createQueryBuilder(\n this.queryRunner,\n )\n\n inverseJoinColumns.forEach((joinColumn) => {\n qb.addSelect(\n junctionAlias + \".\" + joinColumn.propertyPath,\n joinColumn.databaseName,\n ).addOrderBy(\n junctionAlias + \".\" + joinColumn.propertyPath,\n )\n })\n\n joinColumns.forEach((joinColumn) => {\n qb.addSelect(\n junctionAlias + \".\" + joinColumn.propertyPath,\n joinColumn.databaseName,\n ).addOrderBy(\n junctionAlias + \".\" + joinColumn.propertyPath,\n )\n })\n\n qb.from(inverseSideTableName, inverseSideTableAlias)\n .innerJoin(junctionTableName, junctionAlias, condition)\n .setParameters(parameters)\n\n // apply condition (custom query builder factory)\n if (relationIdAttr.queryBuilderFactory)\n relationIdAttr.queryBuilderFactory(qb)\n\n const results = await qb.getRawMany()\n results.forEach((result) => {\n ;[...joinColumns, ...inverseJoinColumns].forEach(\n (column) => {\n result[column.databaseName] =\n this.connection.driver.prepareHydratedValue(\n result[column.databaseName],\n column.referencedColumn!,\n )\n },\n )\n })\n\n return {\n relationIdAttribute: relationIdAttr,\n results,\n }\n }\n },\n )\n\n return Promise.all(promises)\n }\n}\n"],"sourceRoot":"../.."}
@@ -40,8 +40,8 @@ export class RelationIdMetadataToAttributeTransformer {
40
40
  // -------------------------------------------------------------------------
41
41
  metadataToAttribute(parentAliasName, relationId) {
42
42
  return new RelationIdAttribute(this.expressionMap, {
43
- relationName: parentAliasName + "." + relationId.relation.propertyName,
44
- mapToProperty: parentAliasName + "." + relationId.propertyName,
43
+ relationName: parentAliasName + "." + relationId.relation.propertyName, // category.images
44
+ mapToProperty: parentAliasName + "." + relationId.propertyName, // category.imageIds
45
45
  alias: relationId.alias,
46
46
  queryBuilderFactory: relationId.queryBuilderFactory,
47
47
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAI3D,MAAM,OAAO,wCAAwC;IACjD,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,YAAsB,aAAiC;QAAjC,kBAAa,GAAb,aAAa,CAAoB;IAAG,CAAC;IAE3D,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E,SAAS;QACL,cAAc;QACd,wBAAwB;QACxB,mDAAmD;QACnD,2BAA2B;QAC3B,oDAAoD;QACpD,iCAAiC;QACjC,6EAA6E;QAE7E,oHAAoH;QACpH,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;YAC9B,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CACrD,CAAC,UAAU,EAAE,EAAE;gBACX,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CACtC,IAAI,CAAC,aAAa,CAAC,SAAU,CAAC,IAAI,EAClC,UAAU,CACb,CAAA;gBACD,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAC3D,CAAC,CACJ,CAAA;SACJ;QAED,mHAAmH;QACnH,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC/C,2FAA2F;YAC3F,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU;gBAAE,OAAM;YAEtD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;gBAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CACtC,IAAI,CAAC,KAAK,CAAC,IAAI,EACf,UAAU,CACb,CAAA;gBACD,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAC3D,CAAC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACN,CAAC;IAED,4EAA4E;IAC5E,kBAAkB;IAClB,4EAA4E;IAEpE,mBAAmB,CACvB,eAAuB,EACvB,UAA8B;QAE9B,OAAO,IAAI,mBAAmB,CAAC,IAAI,CAAC,aAAa,EAAE;YAC/C,YAAY,EACR,eAAe,GAAG,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,YAAY;YAC5D,aAAa,EAAE,eAAe,GAAG,GAAG,GAAG,UAAU,CAAC,YAAY;YAC9D,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,mBAAmB,EAAE,UAAU,CAAC,mBAAmB;SACtD,CAAC,CAAA;IACN,CAAC;CACJ","file":"RelationIdMetadataToAttributeTransformer.js","sourcesContent":["import { RelationIdAttribute } from \"./RelationIdAttribute\"\nimport { QueryExpressionMap } from \"../QueryExpressionMap\"\nimport { RelationIdMetadata } from \"../../metadata/RelationIdMetadata\"\n\nexport class RelationIdMetadataToAttributeTransformer {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected expressionMap: QueryExpressionMap) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n transform() {\n // by example:\n // post has relation id:\n // @RelationId(post => post.categories) categoryIds\n // category has relation id\n // @RelationId(category => category.images) imageIds\n // we load post and join category\n // we expect post.categoryIds and post.category.imageIds to have relation ids\n\n // first create relation id attributes for all relation id metadatas of the main selected object (post from example)\n if (this.expressionMap.mainAlias) {\n this.expressionMap.mainAlias.metadata.relationIds.forEach(\n (relationId) => {\n const attribute = this.metadataToAttribute(\n this.expressionMap.mainAlias!.name,\n relationId,\n )\n this.expressionMap.relationIdAttributes.push(attribute)\n },\n )\n }\n\n // second create relation id attributes for all relation id metadatas of all joined objects (category from example)\n this.expressionMap.joinAttributes.forEach((join) => {\n // ensure this join has a metadata, because relation id can only work for real orm entities\n if (!join.metadata || join.metadata.isJunction) return\n\n join.metadata.relationIds.forEach((relationId) => {\n const attribute = this.metadataToAttribute(\n join.alias.name,\n relationId,\n )\n this.expressionMap.relationIdAttributes.push(attribute)\n })\n })\n }\n\n // -------------------------------------------------------------------------\n // Private Methods\n // -------------------------------------------------------------------------\n\n private metadataToAttribute(\n parentAliasName: string,\n relationId: RelationIdMetadata,\n ): RelationIdAttribute {\n return new RelationIdAttribute(this.expressionMap, {\n relationName:\n parentAliasName + \".\" + relationId.relation.propertyName, // category.images\n mapToProperty: parentAliasName + \".\" + relationId.propertyName, // category.imageIds\n alias: relationId.alias,\n queryBuilderFactory: relationId.queryBuilderFactory,\n })\n }\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../browser/src/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAI3D,MAAM,OAAO,wCAAwC;IACjD,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,YAAsB,aAAiC;QAAjC,kBAAa,GAAb,aAAa,CAAoB;IAAG,CAAC;IAE3D,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E,SAAS;QACL,cAAc;QACd,wBAAwB;QACxB,mDAAmD;QACnD,2BAA2B;QAC3B,oDAAoD;QACpD,iCAAiC;QACjC,6EAA6E;QAE7E,oHAAoH;QACpH,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CACrD,CAAC,UAAU,EAAE,EAAE;gBACX,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CACtC,IAAI,CAAC,aAAa,CAAC,SAAU,CAAC,IAAI,EAClC,UAAU,CACb,CAAA;gBACD,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAC3D,CAAC,CACJ,CAAA;QACL,CAAC;QAED,mHAAmH;QACnH,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC/C,2FAA2F;YAC3F,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU;gBAAE,OAAM;YAEtD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;gBAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CACtC,IAAI,CAAC,KAAK,CAAC,IAAI,EACf,UAAU,CACb,CAAA;gBACD,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAC3D,CAAC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACN,CAAC;IAED,4EAA4E;IAC5E,kBAAkB;IAClB,4EAA4E;IAEpE,mBAAmB,CACvB,eAAuB,EACvB,UAA8B;QAE9B,OAAO,IAAI,mBAAmB,CAAC,IAAI,CAAC,aAAa,EAAE;YAC/C,YAAY,EACR,eAAe,GAAG,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,YAAY,EAAE,kBAAkB;YAChF,aAAa,EAAE,eAAe,GAAG,GAAG,GAAG,UAAU,CAAC,YAAY,EAAE,oBAAoB;YACpF,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,mBAAmB,EAAE,UAAU,CAAC,mBAAmB;SACtD,CAAC,CAAA;IACN,CAAC;CACJ","file":"RelationIdMetadataToAttributeTransformer.js","sourcesContent":["import { RelationIdAttribute } from \"./RelationIdAttribute\"\nimport { QueryExpressionMap } from \"../QueryExpressionMap\"\nimport { RelationIdMetadata } from \"../../metadata/RelationIdMetadata\"\n\nexport class RelationIdMetadataToAttributeTransformer {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected expressionMap: QueryExpressionMap) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n transform() {\n // by example:\n // post has relation id:\n // @RelationId(post => post.categories) categoryIds\n // category has relation id\n // @RelationId(category => category.images) imageIds\n // we load post and join category\n // we expect post.categoryIds and post.category.imageIds to have relation ids\n\n // first create relation id attributes for all relation id metadatas of the main selected object (post from example)\n if (this.expressionMap.mainAlias) {\n this.expressionMap.mainAlias.metadata.relationIds.forEach(\n (relationId) => {\n const attribute = this.metadataToAttribute(\n this.expressionMap.mainAlias!.name,\n relationId,\n )\n this.expressionMap.relationIdAttributes.push(attribute)\n },\n )\n }\n\n // second create relation id attributes for all relation id metadatas of all joined objects (category from example)\n this.expressionMap.joinAttributes.forEach((join) => {\n // ensure this join has a metadata, because relation id can only work for real orm entities\n if (!join.metadata || join.metadata.isJunction) return\n\n join.metadata.relationIds.forEach((relationId) => {\n const attribute = this.metadataToAttribute(\n join.alias.name,\n relationId,\n )\n this.expressionMap.relationIdAttributes.push(attribute)\n })\n })\n }\n\n // -------------------------------------------------------------------------\n // Private Methods\n // -------------------------------------------------------------------------\n\n private metadataToAttribute(\n parentAliasName: string,\n relationId: RelationIdMetadata,\n ): RelationIdAttribute {\n return new RelationIdAttribute(this.expressionMap, {\n relationName:\n parentAliasName + \".\" + relationId.relation.propertyName, // category.images\n mapToProperty: parentAliasName + \".\" + relationId.propertyName, // category.imageIds\n alias: relationId.alias,\n queryBuilderFactory: relationId.queryBuilderFactory,\n })\n }\n}\n"],"sourceRoot":"../.."}
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/query-builder/transformer/DocumentToEntityTransformer.ts"],"names":[],"mappings":"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","file":"DocumentToEntityTransformer.js","sourcesContent":["import { EntityMetadata } from \"../../metadata/EntityMetadata\"\nimport { ObjectLiteral } from \"../../common/ObjectLiteral\"\nimport { EmbeddedMetadata } from \"../../metadata/EmbeddedMetadata\"\n\n/**\n * Transforms raw document into entity object.\n * Entity is constructed based on its entity metadata.\n */\nexport class DocumentToEntityTransformer {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(\n // private selectionMap: AliasMap,\n // private joinMappings: JoinMapping[],\n // private relationCountMetas: RelationCountAttribute[],\n private enableRelationIdValues: boolean = false,\n ) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n transformAll(documents: ObjectLiteral[], metadata: EntityMetadata) {\n return documents.map((document) => this.transform(document, metadata))\n }\n\n transform(document: any, metadata: EntityMetadata) {\n const entity: any = metadata.create(undefined, {\n fromDeserializer: true,\n })\n let hasData = false\n\n // handle _id property the special way\n if (metadata.objectIdColumn) {\n // todo: we can't use driver in this class\n // do we really need prepare hydrated value here? If no then no problem. If yes then think maybe prepareHydratedValue process should be extracted out of driver class?\n // entity[metadata.ObjectIdColumn.propertyName] = this.driver.prepareHydratedValue(document[metadata.ObjectIdColumn.name\"], metadata.ObjectIdColumn);\n const { databaseNameWithoutPrefixes, propertyName } =\n metadata.objectIdColumn\n\n const documentIdWithoutPrefixes =\n document[databaseNameWithoutPrefixes]\n const documentIdWithPropertyName = document[propertyName]\n\n if (documentIdWithoutPrefixes) {\n entity[propertyName] = documentIdWithoutPrefixes\n hasData = true\n } else if (documentIdWithPropertyName) {\n entity[propertyName] = documentIdWithPropertyName\n hasData = true\n }\n }\n\n // add special columns that contains relation ids\n if (this.enableRelationIdValues) {\n metadata.columns\n .filter((column) => !!column.relationMetadata)\n .forEach((column) => {\n const valueInObject =\n document[column.databaseNameWithoutPrefixes]\n if (\n valueInObject !== undefined &&\n valueInObject !== null &&\n column.propertyName\n ) {\n // todo: we can't use driver in this class\n // const value = this.driver.prepareHydratedValue(valueInObject, column);\n entity[column.propertyName] = valueInObject\n hasData = true\n }\n })\n }\n\n /*this.joinMappings\n .filter(joinMapping => joinMapping.parentName === alias.name && !joinMapping.alias.relationOwnerSelection && joinMapping.alias.target)\n .map(joinMapping => {\n const relatedEntities = this.transformRawResultsGroup(rawSqlResults, joinMapping.alias);\n const isResultArray = joinMapping.isMany;\n const result = !isResultArray ? relatedEntities[0] : relatedEntities;\n\n if (result && (!isResultArray || result.length > 0)) {\n entity[joinMapping.propertyName] = result;\n hasData = true;\n }\n });*/\n\n // get value from columns selections and put them into object\n metadata.ownColumns.forEach((column) => {\n const valueInObject = document[column.databaseNameWithoutPrefixes]\n if (\n valueInObject !== undefined &&\n column.propertyName &&\n !column.isVirtual\n ) {\n // const value = this.driver.prepareHydratedValue(valueInObject, column);\n\n entity[column.propertyName] = valueInObject\n hasData = true\n }\n })\n\n const addEmbeddedValuesRecursively = (\n entity: any,\n document: any,\n embeddeds: EmbeddedMetadata[],\n ) => {\n embeddeds.forEach((embedded) => {\n if (!document[embedded.prefix]) return\n\n if (embedded.isArray) {\n entity[embedded.propertyName] = (\n document[embedded.prefix] as any[]\n ).map((subValue: any, index: number) => {\n const newItem = embedded.create({\n fromDeserializer: true,\n })\n embedded.columns.forEach((column) => {\n newItem[column.propertyName] =\n subValue[column.databaseNameWithoutPrefixes]\n })\n addEmbeddedValuesRecursively(\n newItem,\n document[embedded.prefix][index],\n embedded.embeddeds,\n )\n return newItem\n })\n } else {\n if (\n embedded.embeddeds.length &&\n !entity[embedded.propertyName]\n )\n entity[embedded.propertyName] = embedded.create({\n fromDeserializer: true,\n })\n\n embedded.columns.forEach((column) => {\n const value =\n document[embedded.prefix][\n column.databaseNameWithoutPrefixes\n ]\n if (value === undefined) return\n\n if (!entity[embedded.propertyName])\n entity[embedded.propertyName] = embedded.create({\n fromDeserializer: true,\n })\n\n entity[embedded.propertyName][column.propertyName] =\n value\n })\n\n addEmbeddedValuesRecursively(\n entity[embedded.propertyName],\n document[embedded.prefix],\n embedded.embeddeds,\n )\n }\n })\n }\n\n addEmbeddedValuesRecursively(entity, document, metadata.embeddeds)\n\n // if relation is loaded then go into it recursively and transform its values too\n /*metadata.relations.forEach(relation => {\n const relationAlias = this.selectionMap.findSelectionByParent(alias.name, relation.propertyName);\n if (relationAlias) {\n const joinMapping = this.joinMappings.find(joinMapping => joinMapping.type === \"join\" && joinMapping.alias === relationAlias);\n const relatedEntities = this.transformRawResultsGroup(rawSqlResults, relationAlias);\n const isResultArray = relation.isManyToMany || relation.isOneToMany;\n const result = !isResultArray ? relatedEntities[0] : relatedEntities;\n\n if (result) {\n let propertyName = relation.propertyName;\n if (joinMapping) {\n propertyName = joinMapping.propertyName;\n }\n\n if (relation.isLazy) {\n entity[\"__\" + propertyName + \"__\"] = result;\n } else {\n entity[propertyName] = result;\n }\n\n if (!isResultArray || result.length > 0)\n hasData = true;\n }\n }\n\n // if relation has id field then relation id/ids to that field.\n if (relation.isManyToMany) {\n if (relationAlias) {\n const ids: any[] = [];\n const joinMapping = this.joinMappings.find(joinMapping => joinMapping.type === \"relationId\" && joinMapping.alias === relationAlias);\n\n if (relation.idField || joinMapping) {\n const propertyName = joinMapping ? joinMapping.propertyName : relation.idField as string;\n const junctionMetadata = relation.junctionEntityMetadata;\n const columnName = relation.isOwning ? junctionMetadata.columns[1].name : junctionMetadata.columns[0].name;\n\n rawSqlResults.forEach(results => {\n if (relationAlias) {\n const resultsKey = relationAlias.name + \"_\" + columnName;\n const value = this.driver.prepareHydratedValue(results[resultsKey], relation.referencedColumn);\n if (value !== undefined && value !== null)\n ids.push(value);\n }\n });\n\n if (ids && ids.length)\n entity[propertyName] = ids;\n }\n }\n } else if (relation.idField) {\n const relationName = relation.name;\n entity[relation.idField] = this.driver.prepareHydratedValue(rawSqlResults[0][alias.name + \"_\" + relationName], relation.referencedColumn);\n }\n\n // if relation counter\n this.relationCountMetas.forEach(joinMeta => {\n if (joinMeta.alias === relationAlias) {\n // console.log(\"relation count was found for relation: \", relation);\n // joinMeta.entity = entity;\n joinMeta.entities.push({ entity: entity, metadata: metadata });\n // console.log(joinMeta);\n // console.log(\"---------------------\");\n }\n });\n });*/\n\n return hasData ? entity : null\n }\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../browser/src/query-builder/transformer/DocumentToEntityTransformer.ts"],"names":[],"mappings":"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","file":"DocumentToEntityTransformer.js","sourcesContent":["import { EntityMetadata } from \"../../metadata/EntityMetadata\"\nimport { ObjectLiteral } from \"../../common/ObjectLiteral\"\nimport { EmbeddedMetadata } from \"../../metadata/EmbeddedMetadata\"\n\n/**\n * Transforms raw document into entity object.\n * Entity is constructed based on its entity metadata.\n */\nexport class DocumentToEntityTransformer {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(\n // private selectionMap: AliasMap,\n // private joinMappings: JoinMapping[],\n // private relationCountMetas: RelationCountAttribute[],\n private enableRelationIdValues: boolean = false,\n ) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n transformAll(documents: ObjectLiteral[], metadata: EntityMetadata) {\n return documents.map((document) => this.transform(document, metadata))\n }\n\n transform(document: any, metadata: EntityMetadata) {\n const entity: any = metadata.create(undefined, {\n fromDeserializer: true,\n })\n let hasData = false\n\n // handle _id property the special way\n if (metadata.objectIdColumn) {\n // todo: we can't use driver in this class\n // do we really need prepare hydrated value here? If no then no problem. If yes then think maybe prepareHydratedValue process should be extracted out of driver class?\n // entity[metadata.ObjectIdColumn.propertyName] = this.driver.prepareHydratedValue(document[metadata.ObjectIdColumn.name\"], metadata.ObjectIdColumn);\n const { databaseNameWithoutPrefixes, propertyName } =\n metadata.objectIdColumn\n\n const documentIdWithoutPrefixes =\n document[databaseNameWithoutPrefixes]\n const documentIdWithPropertyName = document[propertyName]\n\n if (documentIdWithoutPrefixes) {\n entity[propertyName] = documentIdWithoutPrefixes\n hasData = true\n } else if (documentIdWithPropertyName) {\n entity[propertyName] = documentIdWithPropertyName\n hasData = true\n }\n }\n\n // add special columns that contains relation ids\n if (this.enableRelationIdValues) {\n metadata.columns\n .filter((column) => !!column.relationMetadata)\n .forEach((column) => {\n const valueInObject =\n document[column.databaseNameWithoutPrefixes]\n if (\n valueInObject !== undefined &&\n valueInObject !== null &&\n column.propertyName\n ) {\n // todo: we can't use driver in this class\n // const value = this.driver.prepareHydratedValue(valueInObject, column);\n entity[column.propertyName] = valueInObject\n hasData = true\n }\n })\n }\n\n /*this.joinMappings\n .filter(joinMapping => joinMapping.parentName === alias.name && !joinMapping.alias.relationOwnerSelection && joinMapping.alias.target)\n .map(joinMapping => {\n const relatedEntities = this.transformRawResultsGroup(rawSqlResults, joinMapping.alias);\n const isResultArray = joinMapping.isMany;\n const result = !isResultArray ? relatedEntities[0] : relatedEntities;\n\n if (result && (!isResultArray || result.length > 0)) {\n entity[joinMapping.propertyName] = result;\n hasData = true;\n }\n });*/\n\n // get value from columns selections and put them into object\n metadata.ownColumns.forEach((column) => {\n const valueInObject = document[column.databaseNameWithoutPrefixes]\n if (\n valueInObject !== undefined &&\n column.propertyName &&\n !column.isVirtual\n ) {\n // const value = this.driver.prepareHydratedValue(valueInObject, column);\n\n entity[column.propertyName] = valueInObject\n hasData = true\n }\n })\n\n const addEmbeddedValuesRecursively = (\n entity: any,\n document: any,\n embeddeds: EmbeddedMetadata[],\n ) => {\n embeddeds.forEach((embedded) => {\n if (!document[embedded.prefix]) return\n\n if (embedded.isArray) {\n entity[embedded.propertyName] = (\n document[embedded.prefix] as any[]\n ).map((subValue: any, index: number) => {\n const newItem = embedded.create({\n fromDeserializer: true,\n })\n embedded.columns.forEach((column) => {\n newItem[column.propertyName] =\n subValue[column.databaseNameWithoutPrefixes]\n })\n addEmbeddedValuesRecursively(\n newItem,\n document[embedded.prefix][index],\n embedded.embeddeds,\n )\n return newItem\n })\n } else {\n if (\n embedded.embeddeds.length &&\n !entity[embedded.propertyName]\n )\n entity[embedded.propertyName] = embedded.create({\n fromDeserializer: true,\n })\n\n embedded.columns.forEach((column) => {\n const value =\n document[embedded.prefix][\n column.databaseNameWithoutPrefixes\n ]\n if (value === undefined) return\n\n if (!entity[embedded.propertyName])\n entity[embedded.propertyName] = embedded.create({\n fromDeserializer: true,\n })\n\n entity[embedded.propertyName][column.propertyName] =\n value\n })\n\n addEmbeddedValuesRecursively(\n entity[embedded.propertyName],\n document[embedded.prefix],\n embedded.embeddeds,\n )\n }\n })\n }\n\n addEmbeddedValuesRecursively(entity, document, metadata.embeddeds)\n\n // if relation is loaded then go into it recursively and transform its values too\n /*metadata.relations.forEach(relation => {\n const relationAlias = this.selectionMap.findSelectionByParent(alias.name, relation.propertyName);\n if (relationAlias) {\n const joinMapping = this.joinMappings.find(joinMapping => joinMapping.type === \"join\" && joinMapping.alias === relationAlias);\n const relatedEntities = this.transformRawResultsGroup(rawSqlResults, relationAlias);\n const isResultArray = relation.isManyToMany || relation.isOneToMany;\n const result = !isResultArray ? relatedEntities[0] : relatedEntities;\n\n if (result) {\n let propertyName = relation.propertyName;\n if (joinMapping) {\n propertyName = joinMapping.propertyName;\n }\n\n if (relation.isLazy) {\n entity[\"__\" + propertyName + \"__\"] = result;\n } else {\n entity[propertyName] = result;\n }\n\n if (!isResultArray || result.length > 0)\n hasData = true;\n }\n }\n\n // if relation has id field then relation id/ids to that field.\n if (relation.isManyToMany) {\n if (relationAlias) {\n const ids: any[] = [];\n const joinMapping = this.joinMappings.find(joinMapping => joinMapping.type === \"relationId\" && joinMapping.alias === relationAlias);\n\n if (relation.idField || joinMapping) {\n const propertyName = joinMapping ? joinMapping.propertyName : relation.idField as string;\n const junctionMetadata = relation.junctionEntityMetadata;\n const columnName = relation.isOwning ? junctionMetadata.columns[1].name : junctionMetadata.columns[0].name;\n\n rawSqlResults.forEach(results => {\n if (relationAlias) {\n const resultsKey = relationAlias.name + \"_\" + columnName;\n const value = this.driver.prepareHydratedValue(results[resultsKey], relation.referencedColumn);\n if (value !== undefined && value !== null)\n ids.push(value);\n }\n });\n\n if (ids && ids.length)\n entity[propertyName] = ids;\n }\n }\n } else if (relation.idField) {\n const relationName = relation.name;\n entity[relation.idField] = this.driver.prepareHydratedValue(rawSqlResults[0][alias.name + \"_\" + relationName], relation.referencedColumn);\n }\n\n // if relation counter\n this.relationCountMetas.forEach(joinMeta => {\n if (joinMeta.alias === relationAlias) {\n // console.log(\"relation count was found for relation: \", relation);\n // joinMeta.entity = entity;\n joinMeta.entities.push({ entity: entity, metadata: metadata });\n // console.log(joinMeta);\n // console.log(\"---------------------\");\n }\n });\n });*/\n\n return hasData ? entity : null\n }\n}\n"],"sourceRoot":"../.."}
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.ts"],"names":[],"mappings":"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","file":"PlainObjectToDatabaseEntityTransformer.js","sourcesContent":["import { ObjectLiteral } from \"../../common/ObjectLiteral\"\nimport { EntityMetadata } from \"../../metadata/EntityMetadata\"\nimport { EntityManager } from \"../../entity-manager/EntityManager\"\nimport { RelationMetadata } from \"../../metadata/RelationMetadata\"\n\n/**\n */\nclass LoadMapItem {\n entity?: ObjectLiteral\n plainEntity: ObjectLiteral\n metadata: EntityMetadata\n parentLoadMapItem?: LoadMapItem\n relation?: RelationMetadata\n\n constructor(\n plainEntity: ObjectLiteral,\n metadata: EntityMetadata,\n parentLoadMapItem?: LoadMapItem,\n relation?: RelationMetadata,\n ) {\n this.plainEntity = plainEntity\n this.metadata = metadata\n this.parentLoadMapItem = parentLoadMapItem\n this.relation = relation\n }\n\n get target(): Function | string {\n return this.metadata.target\n }\n\n get id(): any {\n return this.metadata.getEntityIdMixedMap(this.plainEntity)\n }\n}\n\nclass LoadMap {\n loadMapItems: LoadMapItem[] = []\n\n get mainLoadMapItem(): LoadMapItem | undefined {\n return this.loadMapItems.find(\n (item) => !item.relation && !item.parentLoadMapItem,\n )\n }\n\n addLoadMap(newLoadMap: LoadMapItem) {\n const item = this.loadMapItems.find(\n (item) =>\n item.target === newLoadMap.target && item.id === newLoadMap.id,\n )\n if (!item) this.loadMapItems.push(newLoadMap)\n }\n\n fillEntities(target: Function | string, entities: any[]) {\n entities.forEach((entity) => {\n const item = this.loadMapItems.find((loadMapItem) => {\n return (\n loadMapItem.target === target &&\n loadMapItem.metadata.compareEntities(\n entity,\n loadMapItem.plainEntity,\n )\n )\n })\n if (item) item.entity = entity\n })\n }\n\n groupByTargetIds(): { target: Function | string; ids: any[] }[] {\n const groups: { target: Function | string; ids: any[] }[] = []\n this.loadMapItems.forEach((loadMapItem) => {\n let group = groups.find(\n (group) => group.target === loadMapItem.target,\n )\n if (!group) {\n group = { target: loadMapItem.target, ids: [] }\n groups.push(group)\n }\n\n group.ids.push(loadMapItem.id)\n })\n return groups\n }\n}\n\n/**\n * Transforms plain old javascript object\n * Entity is constructed based on its entity metadata.\n */\nexport class PlainObjectToDatabaseEntityTransformer {\n constructor(private manager: EntityManager) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n async transform(\n plainObject: ObjectLiteral,\n metadata: EntityMetadata,\n ): Promise<ObjectLiteral | undefined> {\n // if plain object does not have id then nothing to load really\n if (!metadata.hasAllPrimaryKeys(plainObject))\n return Promise.reject(\n \"Given object does not have a primary column, cannot transform it to database entity.\",\n )\n\n // create a special load map that will hold all metadata that will be used to operate with entities easily\n const loadMap = new LoadMap()\n const fillLoadMap = (\n entity: ObjectLiteral,\n entityMetadata: EntityMetadata,\n parentLoadMapItem?: LoadMapItem,\n relation?: RelationMetadata,\n ) => {\n const item = new LoadMapItem(\n entity,\n entityMetadata,\n parentLoadMapItem,\n relation,\n )\n loadMap.addLoadMap(item)\n\n entityMetadata\n .extractRelationValuesFromEntity(entity, metadata.relations)\n .filter((value) => value !== null && value !== undefined)\n .forEach(([relation, value, inverseEntityMetadata]) =>\n fillLoadMap(value, inverseEntityMetadata, item, relation),\n )\n }\n fillLoadMap(plainObject, metadata)\n // load all entities and store them in the load map\n await Promise.all(\n loadMap.groupByTargetIds().map((targetWithIds) => {\n // todo: fix type hinting\n return this.manager\n .findByIds<ObjectLiteral>(\n targetWithIds.target as any,\n targetWithIds.ids,\n )\n .then((entities) =>\n loadMap.fillEntities(targetWithIds.target, entities),\n )\n }),\n )\n\n // go through each item in the load map and set their entity relationship using metadata stored in load map\n loadMap.loadMapItems.forEach((loadMapItem) => {\n if (\n !loadMapItem.relation ||\n !loadMapItem.entity ||\n !loadMapItem.parentLoadMapItem ||\n !loadMapItem.parentLoadMapItem.entity\n )\n return\n\n if (\n loadMapItem.relation.isManyToMany ||\n loadMapItem.relation.isOneToMany\n ) {\n if (\n !loadMapItem.parentLoadMapItem.entity[\n loadMapItem.relation.propertyName\n ]\n )\n loadMapItem.parentLoadMapItem.entity[\n loadMapItem.relation.propertyName\n ] = []\n loadMapItem.parentLoadMapItem.entity[\n loadMapItem.relation.propertyName\n ].push(loadMapItem.entity)\n } else {\n loadMapItem.parentLoadMapItem.entity[\n loadMapItem.relation.propertyName\n ] = loadMapItem.entity\n }\n })\n\n return loadMap.mainLoadMapItem\n ? loadMap.mainLoadMapItem.entity\n : undefined\n }\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../browser/src/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.ts"],"names":[],"mappings":"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","file":"PlainObjectToDatabaseEntityTransformer.js","sourcesContent":["import { ObjectLiteral } from \"../../common/ObjectLiteral\"\nimport { EntityMetadata } from \"../../metadata/EntityMetadata\"\nimport { EntityManager } from \"../../entity-manager/EntityManager\"\nimport { RelationMetadata } from \"../../metadata/RelationMetadata\"\n\n/**\n */\nclass LoadMapItem {\n entity?: ObjectLiteral\n plainEntity: ObjectLiteral\n metadata: EntityMetadata\n parentLoadMapItem?: LoadMapItem\n relation?: RelationMetadata\n\n constructor(\n plainEntity: ObjectLiteral,\n metadata: EntityMetadata,\n parentLoadMapItem?: LoadMapItem,\n relation?: RelationMetadata,\n ) {\n this.plainEntity = plainEntity\n this.metadata = metadata\n this.parentLoadMapItem = parentLoadMapItem\n this.relation = relation\n }\n\n get target(): Function | string {\n return this.metadata.target\n }\n\n get id(): any {\n return this.metadata.getEntityIdMixedMap(this.plainEntity)\n }\n}\n\nclass LoadMap {\n loadMapItems: LoadMapItem[] = []\n\n get mainLoadMapItem(): LoadMapItem | undefined {\n return this.loadMapItems.find(\n (item) => !item.relation && !item.parentLoadMapItem,\n )\n }\n\n addLoadMap(newLoadMap: LoadMapItem) {\n const item = this.loadMapItems.find(\n (item) =>\n item.target === newLoadMap.target && item.id === newLoadMap.id,\n )\n if (!item) this.loadMapItems.push(newLoadMap)\n }\n\n fillEntities(target: Function | string, entities: any[]) {\n entities.forEach((entity) => {\n const item = this.loadMapItems.find((loadMapItem) => {\n return (\n loadMapItem.target === target &&\n loadMapItem.metadata.compareEntities(\n entity,\n loadMapItem.plainEntity,\n )\n )\n })\n if (item) item.entity = entity\n })\n }\n\n groupByTargetIds(): { target: Function | string; ids: any[] }[] {\n const groups: { target: Function | string; ids: any[] }[] = []\n this.loadMapItems.forEach((loadMapItem) => {\n let group = groups.find(\n (group) => group.target === loadMapItem.target,\n )\n if (!group) {\n group = { target: loadMapItem.target, ids: [] }\n groups.push(group)\n }\n\n group.ids.push(loadMapItem.id)\n })\n return groups\n }\n}\n\n/**\n * Transforms plain old javascript object\n * Entity is constructed based on its entity metadata.\n */\nexport class PlainObjectToDatabaseEntityTransformer {\n constructor(private manager: EntityManager) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n async transform(\n plainObject: ObjectLiteral,\n metadata: EntityMetadata,\n ): Promise<ObjectLiteral | undefined> {\n // if plain object does not have id then nothing to load really\n if (!metadata.hasAllPrimaryKeys(plainObject))\n return Promise.reject(\n \"Given object does not have a primary column, cannot transform it to database entity.\",\n )\n\n // create a special load map that will hold all metadata that will be used to operate with entities easily\n const loadMap = new LoadMap()\n const fillLoadMap = (\n entity: ObjectLiteral,\n entityMetadata: EntityMetadata,\n parentLoadMapItem?: LoadMapItem,\n relation?: RelationMetadata,\n ) => {\n const item = new LoadMapItem(\n entity,\n entityMetadata,\n parentLoadMapItem,\n relation,\n )\n loadMap.addLoadMap(item)\n\n entityMetadata\n .extractRelationValuesFromEntity(entity, metadata.relations)\n .filter((value) => value !== null && value !== undefined)\n .forEach(([relation, value, inverseEntityMetadata]) =>\n fillLoadMap(value, inverseEntityMetadata, item, relation),\n )\n }\n fillLoadMap(plainObject, metadata)\n // load all entities and store them in the load map\n await Promise.all(\n loadMap.groupByTargetIds().map((targetWithIds) => {\n // todo: fix type hinting\n return this.manager\n .findByIds<ObjectLiteral>(\n targetWithIds.target as any,\n targetWithIds.ids,\n )\n .then((entities) =>\n loadMap.fillEntities(targetWithIds.target, entities),\n )\n }),\n )\n\n // go through each item in the load map and set their entity relationship using metadata stored in load map\n loadMap.loadMapItems.forEach((loadMapItem) => {\n if (\n !loadMapItem.relation ||\n !loadMapItem.entity ||\n !loadMapItem.parentLoadMapItem ||\n !loadMapItem.parentLoadMapItem.entity\n )\n return\n\n if (\n loadMapItem.relation.isManyToMany ||\n loadMapItem.relation.isOneToMany\n ) {\n if (\n !loadMapItem.parentLoadMapItem.entity[\n loadMapItem.relation.propertyName\n ]\n )\n loadMapItem.parentLoadMapItem.entity[\n loadMapItem.relation.propertyName\n ] = []\n loadMapItem.parentLoadMapItem.entity[\n loadMapItem.relation.propertyName\n ].push(loadMapItem.entity)\n } else {\n loadMapItem.parentLoadMapItem.entity[\n loadMapItem.relation.propertyName\n ] = loadMapItem.entity\n }\n })\n\n return loadMap.mainLoadMapItem\n ? loadMap.mainLoadMapItem.entity\n : undefined\n }\n}\n"],"sourceRoot":"../.."}
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/query-builder/transformer/PlainObjectToNewEntityTransformer.ts"],"names":[],"mappings":"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","file":"PlainObjectToNewEntityTransformer.js","sourcesContent":["import { EntityMetadata } from \"../../metadata/EntityMetadata\"\nimport { ObjectLiteral } from \"../../common/ObjectLiteral\"\nimport { ObjectUtils } from \"../../util/ObjectUtils\"\n\n/**\n * Transforms plain old javascript object\n * Entity is constructed based on its entity metadata.\n */\nexport class PlainObjectToNewEntityTransformer {\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n transform<T extends ObjectLiteral>(\n newEntity: T,\n object: ObjectLiteral,\n metadata: EntityMetadata,\n getLazyRelationsPromiseValue: boolean = false,\n ): T {\n // console.log(\"groupAndTransform entity:\", newEntity);\n // console.log(\"groupAndTransform object:\", object);\n this.groupAndTransform(\n newEntity,\n object,\n metadata,\n getLazyRelationsPromiseValue,\n )\n // console.log(\"result:\", newEntity);\n return newEntity\n }\n\n // -------------------------------------------------------------------------\n // Private Methods\n // -------------------------------------------------------------------------\n\n /**\n * Since db returns a duplicated rows of the data where accuracies of the same object can be duplicated\n * we need to group our result and we must have some unique id (primary key in our case)\n */\n private groupAndTransform(\n entity: ObjectLiteral,\n object: ObjectLiteral,\n metadata: EntityMetadata,\n getLazyRelationsPromiseValue: boolean = false,\n ): void {\n // console.log(\"groupAndTransform entity:\", entity);\n // console.log(\"groupAndTransform object:\", object);\n\n // copy regular column properties from the given object\n metadata.nonVirtualColumns.forEach((column) => {\n const objectColumnValue = column.getEntityValue(object)\n if (objectColumnValue !== undefined)\n column.setEntityValue(entity, objectColumnValue)\n })\n\n // // copy relation properties from the given object\n if (metadata.relations.length) {\n metadata.relations.forEach((relation) => {\n let entityRelatedValue = relation.getEntityValue(entity)\n const objectRelatedValue = relation.getEntityValue(\n object,\n getLazyRelationsPromiseValue,\n )\n if (objectRelatedValue === undefined) return\n\n if (relation.isOneToMany || relation.isManyToMany) {\n if (!Array.isArray(objectRelatedValue)) return\n\n if (!entityRelatedValue) {\n entityRelatedValue = []\n relation.setEntityValue(entity, entityRelatedValue)\n }\n\n objectRelatedValue.forEach((objectRelatedValueItem) => {\n // check if we have this item from the merging object in the original entity we merge into\n let objectRelatedValueEntity = (\n entityRelatedValue as any[]\n ).find((entityRelatedValueItem) => {\n return relation.inverseEntityMetadata.compareEntities(\n objectRelatedValueItem,\n entityRelatedValueItem,\n )\n })\n\n const inverseEntityMetadata =\n relation.inverseEntityMetadata.findInheritanceMetadata(\n objectRelatedValueItem,\n )\n\n // if such item already exist then merge new data into it, if its not we create a new entity and merge it into the array\n if (!objectRelatedValueEntity) {\n objectRelatedValueEntity =\n inverseEntityMetadata.create(undefined, {\n fromDeserializer: true,\n })\n entityRelatedValue.push(objectRelatedValueEntity)\n }\n\n this.groupAndTransform(\n objectRelatedValueEntity,\n objectRelatedValueItem,\n inverseEntityMetadata,\n getLazyRelationsPromiseValue,\n )\n })\n } else {\n // if related object isn't an object (direct relation id for example)\n // we just set it to the entity relation, we don't need anything more from it\n // however we do it only if original entity does not have this relation set to object\n // to prevent full overriding of objects\n if (!ObjectUtils.isObject(objectRelatedValue)) {\n if (!ObjectUtils.isObject(entityRelatedValue))\n relation.setEntityValue(entity, objectRelatedValue)\n return\n }\n\n const inverseEntityMetadata =\n relation.inverseEntityMetadata.findInheritanceMetadata(\n objectRelatedValue,\n )\n\n if (!entityRelatedValue) {\n entityRelatedValue = inverseEntityMetadata.create(\n undefined,\n {\n fromDeserializer: true,\n },\n )\n relation.setEntityValue(entity, entityRelatedValue)\n }\n\n this.groupAndTransform(\n entityRelatedValue,\n objectRelatedValue,\n inverseEntityMetadata,\n getLazyRelationsPromiseValue,\n )\n }\n })\n }\n }\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../browser/src/query-builder/transformer/PlainObjectToNewEntityTransformer.ts"],"names":[],"mappings":"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","file":"PlainObjectToNewEntityTransformer.js","sourcesContent":["import { EntityMetadata } from \"../../metadata/EntityMetadata\"\nimport { ObjectLiteral } from \"../../common/ObjectLiteral\"\nimport { ObjectUtils } from \"../../util/ObjectUtils\"\n\n/**\n * Transforms plain old javascript object\n * Entity is constructed based on its entity metadata.\n */\nexport class PlainObjectToNewEntityTransformer {\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n transform<T extends ObjectLiteral>(\n newEntity: T,\n object: ObjectLiteral,\n metadata: EntityMetadata,\n getLazyRelationsPromiseValue: boolean = false,\n ): T {\n // console.log(\"groupAndTransform entity:\", newEntity);\n // console.log(\"groupAndTransform object:\", object);\n this.groupAndTransform(\n newEntity,\n object,\n metadata,\n getLazyRelationsPromiseValue,\n )\n // console.log(\"result:\", newEntity);\n return newEntity\n }\n\n // -------------------------------------------------------------------------\n // Private Methods\n // -------------------------------------------------------------------------\n\n /**\n * Since db returns a duplicated rows of the data where accuracies of the same object can be duplicated\n * we need to group our result and we must have some unique id (primary key in our case)\n */\n private groupAndTransform(\n entity: ObjectLiteral,\n object: ObjectLiteral,\n metadata: EntityMetadata,\n getLazyRelationsPromiseValue: boolean = false,\n ): void {\n // console.log(\"groupAndTransform entity:\", entity);\n // console.log(\"groupAndTransform object:\", object);\n\n // copy regular column properties from the given object\n metadata.nonVirtualColumns.forEach((column) => {\n const objectColumnValue = column.getEntityValue(object)\n if (objectColumnValue !== undefined)\n column.setEntityValue(entity, objectColumnValue)\n })\n\n // // copy relation properties from the given object\n if (metadata.relations.length) {\n metadata.relations.forEach((relation) => {\n let entityRelatedValue = relation.getEntityValue(entity)\n const objectRelatedValue = relation.getEntityValue(\n object,\n getLazyRelationsPromiseValue,\n )\n if (objectRelatedValue === undefined) return\n\n if (relation.isOneToMany || relation.isManyToMany) {\n if (!Array.isArray(objectRelatedValue)) return\n\n if (!entityRelatedValue) {\n entityRelatedValue = []\n relation.setEntityValue(entity, entityRelatedValue)\n }\n\n objectRelatedValue.forEach((objectRelatedValueItem) => {\n // check if we have this item from the merging object in the original entity we merge into\n let objectRelatedValueEntity = (\n entityRelatedValue as any[]\n ).find((entityRelatedValueItem) => {\n return relation.inverseEntityMetadata.compareEntities(\n objectRelatedValueItem,\n entityRelatedValueItem,\n )\n })\n\n const inverseEntityMetadata =\n relation.inverseEntityMetadata.findInheritanceMetadata(\n objectRelatedValueItem,\n )\n\n // if such item already exist then merge new data into it, if its not we create a new entity and merge it into the array\n if (!objectRelatedValueEntity) {\n objectRelatedValueEntity =\n inverseEntityMetadata.create(undefined, {\n fromDeserializer: true,\n })\n entityRelatedValue.push(objectRelatedValueEntity)\n }\n\n this.groupAndTransform(\n objectRelatedValueEntity,\n objectRelatedValueItem,\n inverseEntityMetadata,\n getLazyRelationsPromiseValue,\n )\n })\n } else {\n // if related object isn't an object (direct relation id for example)\n // we just set it to the entity relation, we don't need anything more from it\n // however we do it only if original entity does not have this relation set to object\n // to prevent full overriding of objects\n if (!ObjectUtils.isObject(objectRelatedValue)) {\n if (!ObjectUtils.isObject(entityRelatedValue))\n relation.setEntityValue(entity, objectRelatedValue)\n return\n }\n\n const inverseEntityMetadata =\n relation.inverseEntityMetadata.findInheritanceMetadata(\n objectRelatedValue,\n )\n\n if (!entityRelatedValue) {\n entityRelatedValue = inverseEntityMetadata.create(\n undefined,\n {\n fromDeserializer: true,\n },\n )\n relation.setEntityValue(entity, entityRelatedValue)\n }\n\n this.groupAndTransform(\n entityRelatedValue,\n objectRelatedValue,\n inverseEntityMetadata,\n getLazyRelationsPromiseValue,\n )\n }\n })\n }\n }\n}\n"],"sourceRoot":"../.."}
@@ -21,12 +21,20 @@ export declare class RawSqlResultsToEntityTransformer {
21
21
  * In the hashmap you will find the idMaps of a result under the hash of this.hashEntityIds for the result.
22
22
  */
23
23
  private relationIdMaps;
24
+ private pojo;
25
+ private selections;
26
+ private aliasCache;
27
+ private columnsCache;
24
28
  constructor(expressionMap: QueryExpressionMap, driver: Driver, rawRelationIdResults: RelationIdLoadResult[], rawRelationCountResults: RelationCountLoadResult[], queryRunner?: QueryRunner | undefined);
25
29
  /**
26
30
  * Since db returns a duplicated rows of the data where accuracies of the same object can be duplicated
27
31
  * we need to group our result and we must have some unique id (primary key in our case)
28
32
  */
29
33
  transform(rawResults: any[], alias: Alias): any[];
34
+ /**
35
+ * Build an alias from a name and column name.
36
+ */
37
+ protected buildAlias(aliasName: string, columnName: string): string;
30
38
  /**
31
39
  * Groups given raw results by ids of given alias.
32
40
  */
@@ -36,21 +44,13 @@ export declare class RawSqlResultsToEntityTransformer {
36
44
  */
37
45
  protected transformRawResultsGroup(rawResults: any[], alias: Alias): ObjectLiteral | undefined;
38
46
  protected transformColumns(rawResults: any[], alias: Alias, entity: ObjectLiteral, metadata: EntityMetadata): boolean;
39
- /**
40
- * Returns whether an object is an iterrable
41
- * This is useful when trying to avoid objects such as Dates
42
- */
43
- private isIterrableObject;
44
- /**
45
- * Deeply nullify an object if all its properties values are null or undefined
46
- */
47
- private deeplyNullify;
48
47
  /**
49
48
  * Transforms joined entities in the given raw results by a given alias and stores to the given (parent) entity
50
49
  */
51
50
  protected transformJoins(rawResults: any[], entity: ObjectLiteral, alias: Alias, metadata: EntityMetadata): boolean;
52
51
  protected transformRelationIds(rawSqlResults: any[], alias: Alias, entity: ObjectLiteral, metadata: EntityMetadata): boolean;
53
52
  protected transformRelationCounts(rawSqlResults: any[], alias: Alias, entity: ObjectLiteral): boolean;
53
+ private getColumnsToProcess;
54
54
  private createValueMapFromJoinColumns;
55
55
  private extractEntityPrimaryIds;
56
56
  /** Prepare data to run #transformRelationIds, as a lot of result independent data is needed in every call */