typeorm 0.3.6-dev.c814b07 → 0.3.6-dev.ea176b2

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 (286) hide show
  1. package/README.md +34 -14
  2. package/browser/cache/DbQueryResultCache.js +9 -1
  3. package/browser/cache/DbQueryResultCache.js.map +1 -1
  4. package/browser/cache/RedisQueryResultCache.js +3 -0
  5. package/browser/cache/RedisQueryResultCache.js.map +1 -1
  6. package/browser/data-source/BaseDataSourceOptions.d.ts +1 -2
  7. package/browser/data-source/BaseDataSourceOptions.js.map +1 -1
  8. package/browser/data-source/DataSourceOptions.d.ts +2 -1
  9. package/browser/data-source/DataSourceOptions.js.map +1 -1
  10. package/browser/decorator/Index.js +1 -0
  11. package/browser/decorator/Index.js.map +1 -1
  12. package/browser/decorator/columns/PrimaryColumn.js +4 -1
  13. package/browser/decorator/columns/PrimaryColumn.js.map +1 -1
  14. package/browser/decorator/options/ColumnOptions.d.ts +11 -2
  15. package/browser/decorator/options/ColumnOptions.js.map +1 -1
  16. package/browser/decorator/options/IndexOptions.d.ts +8 -0
  17. package/browser/decorator/options/IndexOptions.js.map +1 -1
  18. package/browser/decorator/options/JoinColumnOptions.d.ts +4 -0
  19. package/browser/decorator/options/JoinColumnOptions.js.map +1 -1
  20. package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.d.ts +4 -0
  21. package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -1
  22. package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.d.ts +4 -0
  23. package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
  24. package/browser/decorator/options/PrimaryGeneratedColumnUUIDOptions.d.ts +4 -0
  25. package/browser/decorator/options/PrimaryGeneratedColumnUUIDOptions.js.map +1 -1
  26. package/browser/decorator/relations/JoinColumn.js +1 -0
  27. package/browser/decorator/relations/JoinColumn.js.map +1 -1
  28. package/browser/driver/DriverFactory.js +4 -0
  29. package/browser/driver/DriverFactory.js.map +1 -1
  30. package/browser/driver/cockroachdb/CockroachDriver.js +4 -1
  31. package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
  32. package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +3 -3
  33. package/browser/driver/cockroachdb/CockroachQueryRunner.js +233 -33
  34. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  35. package/browser/driver/mysql/MysqlDriver.d.ts +1 -0
  36. package/browser/driver/mysql/MysqlDriver.js +94 -23
  37. package/browser/driver/mysql/MysqlDriver.js.map +1 -1
  38. package/browser/driver/mysql/MysqlQueryRunner.js +219 -24
  39. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  40. package/browser/driver/oracle/OracleDriver.js +79 -15
  41. package/browser/driver/oracle/OracleDriver.js.map +1 -1
  42. package/browser/driver/oracle/OracleQueryRunner.d.ts +3 -3
  43. package/browser/driver/oracle/OracleQueryRunner.js +216 -42
  44. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  45. package/browser/driver/postgres/PostgresDriver.js +95 -18
  46. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  47. package/browser/driver/postgres/PostgresQueryRunner.d.ts +3 -3
  48. package/browser/driver/postgres/PostgresQueryRunner.js +159 -59
  49. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  50. package/browser/driver/spanner/SpannerConnectionCredentialsOptions.d.ts +17 -0
  51. package/browser/driver/spanner/SpannerConnectionCredentialsOptions.js +3 -0
  52. package/browser/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -0
  53. package/browser/driver/spanner/SpannerConnectionOptions.d.ts +120 -0
  54. package/browser/driver/spanner/SpannerConnectionOptions.js +3 -0
  55. package/browser/driver/spanner/SpannerConnectionOptions.js.map +1 -0
  56. package/browser/driver/spanner/SpannerDriver.d.ts +241 -0
  57. package/browser/driver/spanner/SpannerDriver.js +604 -0
  58. package/browser/driver/spanner/SpannerDriver.js.map +1 -0
  59. package/browser/driver/spanner/SpannerQueryRunner.d.ts +350 -0
  60. package/browser/driver/spanner/SpannerQueryRunner.js +1445 -0
  61. package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -0
  62. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +65 -16
  63. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  64. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +218 -32
  65. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  66. package/browser/driver/sqlserver/SqlServerDriver.d.ts +3 -1
  67. package/browser/driver/sqlserver/SqlServerDriver.js +99 -26
  68. package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
  69. package/browser/driver/sqlserver/SqlServerQueryRunner.d.ts +3 -3
  70. package/browser/driver/sqlserver/SqlServerQueryRunner.js +251 -37
  71. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  72. package/browser/driver/types/ColumnTypes.d.ts +1 -1
  73. package/browser/driver/types/ColumnTypes.js.map +1 -1
  74. package/browser/driver/types/DatabaseType.d.ts +1 -1
  75. package/browser/driver/types/DatabaseType.js.map +1 -1
  76. package/browser/entity-schema/EntitySchemaColumnOptions.d.ts +2 -2
  77. package/browser/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
  78. package/browser/entity-schema/EntitySchemaIndexOptions.d.ts +8 -0
  79. package/browser/entity-schema/EntitySchemaIndexOptions.js.map +1 -1
  80. package/browser/entity-schema/EntitySchemaTransformer.js +2 -0
  81. package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
  82. package/browser/find-options/FindOneOptions.d.ts +1 -1
  83. package/browser/find-options/FindOneOptions.js.map +1 -1
  84. package/browser/find-options/FindOptionsUtils.d.ts +2 -1
  85. package/browser/find-options/FindOptionsUtils.js +2 -1
  86. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  87. package/browser/logger/AdvancedConsoleLogger.d.ts +1 -1
  88. package/browser/logger/AdvancedConsoleLogger.js +1 -1
  89. package/browser/logger/AdvancedConsoleLogger.js.map +1 -1
  90. package/browser/metadata/ColumnMetadata.d.ts +10 -2
  91. package/browser/metadata/ColumnMetadata.js +8 -0
  92. package/browser/metadata/ColumnMetadata.js.map +1 -1
  93. package/browser/metadata/ForeignKeyMetadata.d.ts +7 -0
  94. package/browser/metadata/ForeignKeyMetadata.js +4 -1
  95. package/browser/metadata/ForeignKeyMetadata.js.map +1 -1
  96. package/browser/metadata/IndexMetadata.d.ts +8 -0
  97. package/browser/metadata/IndexMetadata.js +9 -0
  98. package/browser/metadata/IndexMetadata.js.map +1 -1
  99. package/browser/metadata-args/IndexMetadataArgs.d.ts +8 -0
  100. package/browser/metadata-args/IndexMetadataArgs.js.map +1 -1
  101. package/browser/metadata-args/JoinColumnMetadataArgs.d.ts +4 -0
  102. package/browser/metadata-args/JoinColumnMetadataArgs.js.map +1 -1
  103. package/browser/metadata-builder/EntityMetadataBuilder.js +13 -6
  104. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  105. package/browser/metadata-builder/EntityMetadataValidator.js +17 -0
  106. package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
  107. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +18 -6
  108. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  109. package/browser/metadata-builder/RelationJoinColumnBuilder.js +2 -0
  110. package/browser/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  111. package/browser/platform/PlatformTools.js +5 -0
  112. package/browser/platform/PlatformTools.js.map +1 -1
  113. package/browser/query-builder/InsertQueryBuilder.js +15 -3
  114. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  115. package/browser/query-builder/QueryExpressionMap.d.ts +1 -1
  116. package/browser/query-builder/QueryExpressionMap.js.map +1 -1
  117. package/browser/query-builder/SelectQueryBuilder.d.ts +1 -1
  118. package/browser/query-builder/SelectQueryBuilder.js +25 -4
  119. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  120. package/browser/query-builder/UpdateQueryBuilder.js +18 -7
  121. package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
  122. package/browser/query-runner/BaseQueryRunner.d.ts +10 -0
  123. package/browser/query-runner/BaseQueryRunner.js +25 -1
  124. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  125. package/browser/query-runner/QueryRunner.d.ts +2 -2
  126. package/browser/query-runner/QueryRunner.js.map +1 -1
  127. package/browser/schema-builder/RdbmsSchemaBuilder.d.ts +6 -2
  128. package/browser/schema-builder/RdbmsSchemaBuilder.js +26 -6
  129. package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  130. package/browser/schema-builder/options/TableColumnOptions.d.ts +10 -2
  131. package/browser/schema-builder/options/TableColumnOptions.js.map +1 -1
  132. package/browser/schema-builder/options/TableIndexOptions.d.ts +8 -0
  133. package/browser/schema-builder/options/TableIndexOptions.js.map +1 -1
  134. package/browser/schema-builder/table/TableColumn.d.ts +6 -2
  135. package/browser/schema-builder/table/TableColumn.js +2 -0
  136. package/browser/schema-builder/table/TableColumn.js.map +1 -1
  137. package/browser/schema-builder/table/TableIndex.d.ts +8 -0
  138. package/browser/schema-builder/table/TableIndex.js +3 -0
  139. package/browser/schema-builder/table/TableIndex.js.map +1 -1
  140. package/browser/schema-builder/util/TableUtils.js +1 -0
  141. package/browser/schema-builder/util/TableUtils.js.map +1 -1
  142. package/cache/DbQueryResultCache.js +9 -1
  143. package/cache/DbQueryResultCache.js.map +1 -1
  144. package/cache/RedisQueryResultCache.js +3 -0
  145. package/cache/RedisQueryResultCache.js.map +1 -1
  146. package/commands/InitCommand.js +1 -1
  147. package/commands/InitCommand.js.map +1 -1
  148. package/commands/MigrationGenerateCommand.js +3 -2
  149. package/commands/MigrationGenerateCommand.js.map +1 -1
  150. package/data-source/BaseDataSourceOptions.d.ts +1 -2
  151. package/data-source/BaseDataSourceOptions.js.map +1 -1
  152. package/data-source/DataSourceOptions.d.ts +2 -1
  153. package/data-source/DataSourceOptions.js.map +1 -1
  154. package/decorator/Index.js +1 -0
  155. package/decorator/Index.js.map +1 -1
  156. package/decorator/columns/PrimaryColumn.js +4 -1
  157. package/decorator/columns/PrimaryColumn.js.map +1 -1
  158. package/decorator/options/ColumnOptions.d.ts +11 -2
  159. package/decorator/options/ColumnOptions.js.map +1 -1
  160. package/decorator/options/IndexOptions.d.ts +8 -0
  161. package/decorator/options/IndexOptions.js.map +1 -1
  162. package/decorator/options/JoinColumnOptions.d.ts +4 -0
  163. package/decorator/options/JoinColumnOptions.js.map +1 -1
  164. package/decorator/options/PrimaryGeneratedColumnIdentityOptions.d.ts +4 -0
  165. package/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -1
  166. package/decorator/options/PrimaryGeneratedColumnNumericOptions.d.ts +4 -0
  167. package/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
  168. package/decorator/options/PrimaryGeneratedColumnUUIDOptions.d.ts +4 -0
  169. package/decorator/options/PrimaryGeneratedColumnUUIDOptions.js.map +1 -1
  170. package/decorator/relations/JoinColumn.js +1 -0
  171. package/decorator/relations/JoinColumn.js.map +1 -1
  172. package/driver/DriverFactory.js +4 -0
  173. package/driver/DriverFactory.js.map +1 -1
  174. package/driver/cockroachdb/CockroachDriver.js +4 -1
  175. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  176. package/driver/cockroachdb/CockroachQueryRunner.d.ts +3 -3
  177. package/driver/cockroachdb/CockroachQueryRunner.js +233 -33
  178. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  179. package/driver/mysql/MysqlDriver.d.ts +1 -0
  180. package/driver/mysql/MysqlDriver.js +94 -23
  181. package/driver/mysql/MysqlDriver.js.map +1 -1
  182. package/driver/mysql/MysqlQueryRunner.js +219 -24
  183. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  184. package/driver/oracle/OracleDriver.js +79 -15
  185. package/driver/oracle/OracleDriver.js.map +1 -1
  186. package/driver/oracle/OracleQueryRunner.d.ts +3 -3
  187. package/driver/oracle/OracleQueryRunner.js +216 -42
  188. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  189. package/driver/postgres/PostgresDriver.js +95 -18
  190. package/driver/postgres/PostgresDriver.js.map +1 -1
  191. package/driver/postgres/PostgresQueryRunner.d.ts +3 -3
  192. package/driver/postgres/PostgresQueryRunner.js +159 -59
  193. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  194. package/driver/spanner/SpannerConnectionCredentialsOptions.d.ts +17 -0
  195. package/driver/spanner/SpannerConnectionCredentialsOptions.js +4 -0
  196. package/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -0
  197. package/driver/spanner/SpannerConnectionOptions.d.ts +120 -0
  198. package/driver/spanner/SpannerConnectionOptions.js +4 -0
  199. package/driver/spanner/SpannerConnectionOptions.js.map +1 -0
  200. package/driver/spanner/SpannerDriver.d.ts +241 -0
  201. package/driver/spanner/SpannerDriver.js +608 -0
  202. package/driver/spanner/SpannerDriver.js.map +1 -0
  203. package/driver/spanner/SpannerQueryRunner.d.ts +350 -0
  204. package/driver/spanner/SpannerQueryRunner.js +1449 -0
  205. package/driver/spanner/SpannerQueryRunner.js.map +1 -0
  206. package/driver/sqlite-abstract/AbstractSqliteDriver.js +65 -16
  207. package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  208. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +218 -32
  209. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  210. package/driver/sqlserver/SqlServerDriver.d.ts +3 -1
  211. package/driver/sqlserver/SqlServerDriver.js +99 -26
  212. package/driver/sqlserver/SqlServerDriver.js.map +1 -1
  213. package/driver/sqlserver/SqlServerQueryRunner.d.ts +3 -3
  214. package/driver/sqlserver/SqlServerQueryRunner.js +251 -37
  215. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  216. package/driver/types/ColumnTypes.d.ts +1 -1
  217. package/driver/types/ColumnTypes.js.map +1 -1
  218. package/driver/types/DatabaseType.d.ts +1 -1
  219. package/driver/types/DatabaseType.js.map +1 -1
  220. package/entity-schema/EntitySchemaColumnOptions.d.ts +2 -2
  221. package/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
  222. package/entity-schema/EntitySchemaIndexOptions.d.ts +8 -0
  223. package/entity-schema/EntitySchemaIndexOptions.js.map +1 -1
  224. package/entity-schema/EntitySchemaTransformer.js +2 -0
  225. package/entity-schema/EntitySchemaTransformer.js.map +1 -1
  226. package/find-options/FindOneOptions.d.ts +1 -1
  227. package/find-options/FindOneOptions.js.map +1 -1
  228. package/find-options/FindOptionsUtils.d.ts +2 -1
  229. package/find-options/FindOptionsUtils.js +2 -1
  230. package/find-options/FindOptionsUtils.js.map +1 -1
  231. package/logger/AdvancedConsoleLogger.d.ts +1 -1
  232. package/logger/AdvancedConsoleLogger.js +1 -1
  233. package/logger/AdvancedConsoleLogger.js.map +1 -1
  234. package/metadata/ColumnMetadata.d.ts +10 -2
  235. package/metadata/ColumnMetadata.js +8 -0
  236. package/metadata/ColumnMetadata.js.map +1 -1
  237. package/metadata/ForeignKeyMetadata.d.ts +7 -0
  238. package/metadata/ForeignKeyMetadata.js +4 -1
  239. package/metadata/ForeignKeyMetadata.js.map +1 -1
  240. package/metadata/IndexMetadata.d.ts +8 -0
  241. package/metadata/IndexMetadata.js +9 -0
  242. package/metadata/IndexMetadata.js.map +1 -1
  243. package/metadata-args/IndexMetadataArgs.d.ts +8 -0
  244. package/metadata-args/IndexMetadataArgs.js.map +1 -1
  245. package/metadata-args/JoinColumnMetadataArgs.d.ts +4 -0
  246. package/metadata-args/JoinColumnMetadataArgs.js.map +1 -1
  247. package/metadata-builder/EntityMetadataBuilder.js +13 -6
  248. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  249. package/metadata-builder/EntityMetadataValidator.js +17 -0
  250. package/metadata-builder/EntityMetadataValidator.js.map +1 -1
  251. package/metadata-builder/JunctionEntityMetadataBuilder.js +18 -6
  252. package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  253. package/metadata-builder/RelationJoinColumnBuilder.js +2 -0
  254. package/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  255. package/package.json +1 -1
  256. package/platform/PlatformTools.js +5 -0
  257. package/platform/PlatformTools.js.map +1 -1
  258. package/query-builder/InsertQueryBuilder.js +15 -3
  259. package/query-builder/InsertQueryBuilder.js.map +1 -1
  260. package/query-builder/QueryExpressionMap.d.ts +1 -1
  261. package/query-builder/QueryExpressionMap.js.map +1 -1
  262. package/query-builder/SelectQueryBuilder.d.ts +1 -1
  263. package/query-builder/SelectQueryBuilder.js +25 -4
  264. package/query-builder/SelectQueryBuilder.js.map +1 -1
  265. package/query-builder/UpdateQueryBuilder.js +18 -7
  266. package/query-builder/UpdateQueryBuilder.js.map +1 -1
  267. package/query-runner/BaseQueryRunner.d.ts +10 -0
  268. package/query-runner/BaseQueryRunner.js +25 -1
  269. package/query-runner/BaseQueryRunner.js.map +1 -1
  270. package/query-runner/QueryRunner.d.ts +2 -2
  271. package/query-runner/QueryRunner.js.map +1 -1
  272. package/schema-builder/RdbmsSchemaBuilder.d.ts +6 -2
  273. package/schema-builder/RdbmsSchemaBuilder.js +26 -6
  274. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  275. package/schema-builder/options/TableColumnOptions.d.ts +10 -2
  276. package/schema-builder/options/TableColumnOptions.js.map +1 -1
  277. package/schema-builder/options/TableIndexOptions.d.ts +8 -0
  278. package/schema-builder/options/TableIndexOptions.js.map +1 -1
  279. package/schema-builder/table/TableColumn.d.ts +6 -2
  280. package/schema-builder/table/TableColumn.js +2 -0
  281. package/schema-builder/table/TableColumn.js.map +1 -1
  282. package/schema-builder/table/TableIndex.d.ts +8 -0
  283. package/schema-builder/table/TableIndex.js +3 -0
  284. package/schema-builder/table/TableIndex.js.map +1 -1
  285. package/schema-builder/util/TableUtils.js +1 -0
  286. package/schema-builder/util/TableUtils.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/metadata-builder/JunctionEntityMetadataBuilder.ts"],"names":[],"mappings":"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","file":"JunctionEntityMetadataBuilder.js","sourcesContent":["import { ColumnMetadata } from \"../metadata/ColumnMetadata\"\nimport { DataSource } from \"../data-source/DataSource\"\nimport { EntityMetadata } from \"../metadata/EntityMetadata\"\nimport { ForeignKeyMetadata } from \"../metadata/ForeignKeyMetadata\"\nimport { IndexMetadata } from \"../metadata/IndexMetadata\"\nimport { JoinTableMetadataArgs } from \"../metadata-args/JoinTableMetadataArgs\"\nimport { RelationMetadata } from \"../metadata/RelationMetadata\"\nimport { TypeORMError } from \"../error\"\nimport { DriverUtils } from \"../driver/DriverUtils\"\n\n/**\n * Creates EntityMetadata for junction tables.\n * Junction tables are tables generated by many-to-many relations.\n */\nexport class JunctionEntityMetadataBuilder {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(private connection: DataSource) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Builds EntityMetadata for the junction of the given many-to-many relation.\n */\n build(\n relation: RelationMetadata,\n joinTable: JoinTableMetadataArgs,\n ): EntityMetadata {\n const referencedColumns = this.collectReferencedColumns(\n relation,\n joinTable,\n )\n const inverseReferencedColumns = this.collectInverseReferencedColumns(\n relation,\n joinTable,\n )\n\n const joinTableName =\n joinTable.name ||\n this.connection.namingStrategy.joinTableName(\n relation.entityMetadata.tableNameWithoutPrefix,\n relation.inverseEntityMetadata.tableNameWithoutPrefix,\n relation.propertyPath,\n relation.inverseRelation\n ? relation.inverseRelation.propertyName\n : \"\",\n )\n\n const entityMetadata = new EntityMetadata({\n connection: this.connection,\n args: {\n target: \"\",\n name: joinTableName,\n type: \"junction\",\n database:\n joinTable.database || relation.entityMetadata.database,\n schema: joinTable.schema || relation.entityMetadata.schema,\n },\n })\n entityMetadata.build()\n\n // create original side junction columns\n const junctionColumns = referencedColumns.map((referencedColumn) => {\n const joinColumn = joinTable.joinColumns\n ? joinTable.joinColumns.find((joinColumnArgs) => {\n return (\n (!joinColumnArgs.referencedColumnName ||\n joinColumnArgs.referencedColumnName ===\n referencedColumn.propertyName) &&\n !!joinColumnArgs.name\n )\n })\n : undefined\n const columnName =\n joinColumn && joinColumn.name\n ? joinColumn.name\n : this.connection.namingStrategy.joinTableColumnName(\n relation.entityMetadata.tableNameWithoutPrefix,\n referencedColumn.propertyName,\n referencedColumn.databaseName,\n )\n\n return new ColumnMetadata({\n connection: this.connection,\n entityMetadata: entityMetadata,\n referencedColumn: referencedColumn,\n args: {\n target: \"\",\n mode: \"virtual\",\n propertyName: columnName,\n options: {\n name: columnName,\n length:\n !referencedColumn.length &&\n (DriverUtils.isMySQLFamily(\n this.connection.driver,\n ) ||\n this.connection.driver.options.type ===\n \"aurora-mysql\") &&\n (referencedColumn.generationStrategy === \"uuid\" ||\n referencedColumn.type === \"uuid\")\n ? \"36\"\n : referencedColumn.length, // fix https://github.com/typeorm/typeorm/issues/3604\n width: referencedColumn.width,\n type: referencedColumn.type,\n precision: referencedColumn.precision,\n scale: referencedColumn.scale,\n charset: referencedColumn.charset,\n collation: referencedColumn.collation,\n zerofill: referencedColumn.zerofill,\n unsigned: referencedColumn.zerofill\n ? true\n : referencedColumn.unsigned,\n enum: referencedColumn.enum,\n enumName: referencedColumn.enumName,\n nullable: false,\n primary: true,\n },\n },\n })\n })\n\n // create inverse side junction columns\n const inverseJunctionColumns = inverseReferencedColumns.map(\n (inverseReferencedColumn) => {\n const joinColumn = joinTable.inverseJoinColumns\n ? joinTable.inverseJoinColumns.find((joinColumnArgs) => {\n return (\n (!joinColumnArgs.referencedColumnName ||\n joinColumnArgs.referencedColumnName ===\n inverseReferencedColumn.propertyName) &&\n !!joinColumnArgs.name\n )\n })\n : undefined\n const columnName =\n joinColumn && joinColumn.name\n ? joinColumn.name\n : this.connection.namingStrategy.joinTableInverseColumnName(\n relation.inverseEntityMetadata\n .tableNameWithoutPrefix,\n inverseReferencedColumn.propertyName,\n inverseReferencedColumn.databaseName,\n )\n\n return new ColumnMetadata({\n connection: this.connection,\n entityMetadata: entityMetadata,\n referencedColumn: inverseReferencedColumn,\n args: {\n target: \"\",\n mode: \"virtual\",\n propertyName: columnName,\n options: {\n length:\n !inverseReferencedColumn.length &&\n (DriverUtils.isMySQLFamily(\n this.connection.driver,\n ) ||\n this.connection.driver.options.type ===\n \"aurora-mysql\") &&\n (inverseReferencedColumn.generationStrategy ===\n \"uuid\" ||\n inverseReferencedColumn.type === \"uuid\")\n ? \"36\"\n : inverseReferencedColumn.length, // fix https://github.com/typeorm/typeorm/issues/3604\n width: inverseReferencedColumn.width, // fix https://github.com/typeorm/typeorm/issues/6442\n type: inverseReferencedColumn.type,\n precision: inverseReferencedColumn.precision,\n scale: inverseReferencedColumn.scale,\n charset: inverseReferencedColumn.charset,\n collation: inverseReferencedColumn.collation,\n zerofill: inverseReferencedColumn.zerofill,\n unsigned: inverseReferencedColumn.zerofill\n ? true\n : inverseReferencedColumn.unsigned,\n enum: inverseReferencedColumn.enum,\n enumName: inverseReferencedColumn.enumName,\n name: columnName,\n nullable: false,\n primary: true,\n },\n },\n })\n },\n )\n\n this.changeDuplicatedColumnNames(\n junctionColumns,\n inverseJunctionColumns,\n )\n\n // set junction table columns\n entityMetadata.ownerColumns = junctionColumns\n entityMetadata.inverseColumns = inverseJunctionColumns\n entityMetadata.ownColumns = [\n ...junctionColumns,\n ...inverseJunctionColumns,\n ]\n entityMetadata.ownColumns.forEach(\n (column) => (column.relationMetadata = relation),\n )\n\n // create junction table foreign keys\n // Note: UPDATE CASCADE clause is not supported in Oracle.\n entityMetadata.foreignKeys = relation.createForeignKeyConstraints\n ? [\n new ForeignKeyMetadata({\n entityMetadata: entityMetadata,\n referencedEntityMetadata: relation.entityMetadata,\n columns: junctionColumns,\n referencedColumns: referencedColumns,\n onDelete: relation.onDelete || \"CASCADE\",\n onUpdate:\n this.connection.driver.options.type === \"oracle\"\n ? \"NO ACTION\"\n : relation.onUpdate || \"CASCADE\",\n }),\n new ForeignKeyMetadata({\n entityMetadata: entityMetadata,\n referencedEntityMetadata: relation.inverseEntityMetadata,\n columns: inverseJunctionColumns,\n referencedColumns: inverseReferencedColumns,\n onDelete: relation.inverseRelation\n ? relation.inverseRelation.onDelete\n : \"CASCADE\",\n onUpdate:\n this.connection.driver.options.type === \"oracle\"\n ? \"NO ACTION\"\n : relation.inverseRelation\n ? relation.inverseRelation.onUpdate\n : \"CASCADE\",\n }),\n ]\n : []\n\n // create junction table indices\n entityMetadata.ownIndices = [\n new IndexMetadata({\n entityMetadata: entityMetadata,\n columns: junctionColumns,\n args: {\n target: entityMetadata.target,\n synchronize: true,\n },\n }),\n\n new IndexMetadata({\n entityMetadata: entityMetadata,\n columns: inverseJunctionColumns,\n args: {\n target: entityMetadata.target,\n synchronize: true,\n },\n }),\n ]\n\n // finally return entity metadata\n return entityMetadata\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Collects referenced columns from the given join column args.\n */\n protected collectReferencedColumns(\n relation: RelationMetadata,\n joinTable: JoinTableMetadataArgs,\n ): ColumnMetadata[] {\n const hasAnyReferencedColumnName = joinTable.joinColumns\n ? joinTable.joinColumns.find(\n (joinColumn) => !!joinColumn.referencedColumnName,\n )\n : false\n if (\n !joinTable.joinColumns ||\n (joinTable.joinColumns && !hasAnyReferencedColumnName)\n ) {\n return relation.entityMetadata.columns.filter(\n (column) => column.isPrimary,\n )\n } else {\n return joinTable.joinColumns.map((joinColumn) => {\n const referencedColumn = relation.entityMetadata.columns.find(\n (column) =>\n column.propertyName === joinColumn.referencedColumnName,\n )\n if (!referencedColumn)\n throw new TypeORMError(\n `Referenced column ${joinColumn.referencedColumnName} was not found in entity ${relation.entityMetadata.name}`,\n )\n\n return referencedColumn\n })\n }\n }\n\n /**\n * Collects inverse referenced columns from the given join column args.\n */\n protected collectInverseReferencedColumns(\n relation: RelationMetadata,\n joinTable: JoinTableMetadataArgs,\n ): ColumnMetadata[] {\n const hasInverseJoinColumns = !!joinTable.inverseJoinColumns\n const hasAnyInverseReferencedColumnName = hasInverseJoinColumns\n ? joinTable.inverseJoinColumns!.find(\n (joinColumn) => !!joinColumn.referencedColumnName,\n )\n : false\n if (\n !hasInverseJoinColumns ||\n (hasInverseJoinColumns && !hasAnyInverseReferencedColumnName)\n ) {\n return relation.inverseEntityMetadata.primaryColumns\n } else {\n return joinTable.inverseJoinColumns!.map((joinColumn) => {\n const referencedColumn =\n relation.inverseEntityMetadata.ownColumns.find(\n (column) =>\n column.propertyName ===\n joinColumn.referencedColumnName,\n )\n if (!referencedColumn)\n throw new TypeORMError(\n `Referenced column ${joinColumn.referencedColumnName} was not found in entity ${relation.inverseEntityMetadata.name}`,\n )\n\n return referencedColumn\n })\n }\n }\n\n protected changeDuplicatedColumnNames(\n junctionColumns: ColumnMetadata[],\n inverseJunctionColumns: ColumnMetadata[],\n ) {\n junctionColumns.forEach((junctionColumn) => {\n inverseJunctionColumns.forEach((inverseJunctionColumn) => {\n if (\n junctionColumn.givenDatabaseName ===\n inverseJunctionColumn.givenDatabaseName\n ) {\n const junctionColumnName =\n this.connection.namingStrategy.joinTableColumnDuplicationPrefix(\n junctionColumn.propertyName,\n 1,\n )\n junctionColumn.propertyName = junctionColumnName\n junctionColumn.givenDatabaseName = junctionColumnName\n\n const inverseJunctionColumnName =\n this.connection.namingStrategy.joinTableColumnDuplicationPrefix(\n inverseJunctionColumn.propertyName,\n 2,\n )\n inverseJunctionColumn.propertyName =\n inverseJunctionColumnName\n inverseJunctionColumn.givenDatabaseName =\n inverseJunctionColumnName\n }\n })\n })\n }\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/metadata-builder/JunctionEntityMetadataBuilder.ts"],"names":[],"mappings":"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","file":"JunctionEntityMetadataBuilder.js","sourcesContent":["import { ColumnMetadata } from \"../metadata/ColumnMetadata\"\nimport { DataSource } from \"../data-source/DataSource\"\nimport { EntityMetadata } from \"../metadata/EntityMetadata\"\nimport { ForeignKeyMetadata } from \"../metadata/ForeignKeyMetadata\"\nimport { IndexMetadata } from \"../metadata/IndexMetadata\"\nimport { JoinTableMetadataArgs } from \"../metadata-args/JoinTableMetadataArgs\"\nimport { RelationMetadata } from \"../metadata/RelationMetadata\"\nimport { TypeORMError } from \"../error\"\nimport { DriverUtils } from \"../driver/DriverUtils\"\n\n/**\n * Creates EntityMetadata for junction tables.\n * Junction tables are tables generated by many-to-many relations.\n */\nexport class JunctionEntityMetadataBuilder {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(private connection: DataSource) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Builds EntityMetadata for the junction of the given many-to-many relation.\n */\n build(\n relation: RelationMetadata,\n joinTable: JoinTableMetadataArgs,\n ): EntityMetadata {\n const referencedColumns = this.collectReferencedColumns(\n relation,\n joinTable,\n )\n const inverseReferencedColumns = this.collectInverseReferencedColumns(\n relation,\n joinTable,\n )\n\n const joinTableName =\n joinTable.name ||\n this.connection.namingStrategy.joinTableName(\n relation.entityMetadata.tableNameWithoutPrefix,\n relation.inverseEntityMetadata.tableNameWithoutPrefix,\n relation.propertyPath,\n relation.inverseRelation\n ? relation.inverseRelation.propertyName\n : \"\",\n )\n\n const entityMetadata = new EntityMetadata({\n connection: this.connection,\n args: {\n target: \"\",\n name: joinTableName,\n type: \"junction\",\n database:\n joinTable.database || relation.entityMetadata.database,\n schema: joinTable.schema || relation.entityMetadata.schema,\n },\n })\n entityMetadata.build()\n\n // create original side junction columns\n const junctionColumns = referencedColumns.map((referencedColumn) => {\n const joinColumn = joinTable.joinColumns\n ? joinTable.joinColumns.find((joinColumnArgs) => {\n return (\n (!joinColumnArgs.referencedColumnName ||\n joinColumnArgs.referencedColumnName ===\n referencedColumn.propertyName) &&\n !!joinColumnArgs.name\n )\n })\n : undefined\n const columnName =\n joinColumn && joinColumn.name\n ? joinColumn.name\n : this.connection.namingStrategy.joinTableColumnName(\n relation.entityMetadata.tableNameWithoutPrefix,\n referencedColumn.propertyName,\n referencedColumn.databaseName,\n )\n\n return new ColumnMetadata({\n connection: this.connection,\n entityMetadata: entityMetadata,\n referencedColumn: referencedColumn,\n args: {\n target: \"\",\n mode: \"virtual\",\n propertyName: columnName,\n options: {\n name: columnName,\n length:\n !referencedColumn.length &&\n (DriverUtils.isMySQLFamily(\n this.connection.driver,\n ) ||\n this.connection.driver.options.type ===\n \"aurora-mysql\") &&\n (referencedColumn.generationStrategy === \"uuid\" ||\n referencedColumn.type === \"uuid\")\n ? \"36\"\n : referencedColumn.length, // fix https://github.com/typeorm/typeorm/issues/3604\n width: referencedColumn.width,\n type: referencedColumn.type,\n precision: referencedColumn.precision,\n scale: referencedColumn.scale,\n charset: referencedColumn.charset,\n collation: referencedColumn.collation,\n zerofill: referencedColumn.zerofill,\n unsigned: referencedColumn.zerofill\n ? true\n : referencedColumn.unsigned,\n enum: referencedColumn.enum,\n enumName: referencedColumn.enumName,\n foreignKeyConstraintName:\n joinColumn?.foreignKeyConstraintName,\n nullable: false,\n primary: true,\n },\n },\n })\n })\n\n // create inverse side junction columns\n const inverseJunctionColumns = inverseReferencedColumns.map(\n (inverseReferencedColumn) => {\n const joinColumn = joinTable.inverseJoinColumns\n ? joinTable.inverseJoinColumns.find((joinColumnArgs) => {\n return (\n (!joinColumnArgs.referencedColumnName ||\n joinColumnArgs.referencedColumnName ===\n inverseReferencedColumn.propertyName) &&\n !!joinColumnArgs.name\n )\n })\n : undefined\n const columnName =\n joinColumn && joinColumn.name\n ? joinColumn.name\n : this.connection.namingStrategy.joinTableInverseColumnName(\n relation.inverseEntityMetadata\n .tableNameWithoutPrefix,\n inverseReferencedColumn.propertyName,\n inverseReferencedColumn.databaseName,\n )\n\n return new ColumnMetadata({\n connection: this.connection,\n entityMetadata: entityMetadata,\n referencedColumn: inverseReferencedColumn,\n args: {\n target: \"\",\n mode: \"virtual\",\n propertyName: columnName,\n options: {\n length:\n !inverseReferencedColumn.length &&\n (DriverUtils.isMySQLFamily(\n this.connection.driver,\n ) ||\n this.connection.driver.options.type ===\n \"aurora-mysql\") &&\n (inverseReferencedColumn.generationStrategy ===\n \"uuid\" ||\n inverseReferencedColumn.type === \"uuid\")\n ? \"36\"\n : inverseReferencedColumn.length, // fix https://github.com/typeorm/typeorm/issues/3604\n width: inverseReferencedColumn.width, // fix https://github.com/typeorm/typeorm/issues/6442\n type: inverseReferencedColumn.type,\n precision: inverseReferencedColumn.precision,\n scale: inverseReferencedColumn.scale,\n charset: inverseReferencedColumn.charset,\n collation: inverseReferencedColumn.collation,\n zerofill: inverseReferencedColumn.zerofill,\n unsigned: inverseReferencedColumn.zerofill\n ? true\n : inverseReferencedColumn.unsigned,\n enum: inverseReferencedColumn.enum,\n enumName: inverseReferencedColumn.enumName,\n foreignKeyConstraintName:\n joinColumn?.foreignKeyConstraintName,\n name: columnName,\n nullable: false,\n primary: true,\n },\n },\n })\n },\n )\n\n this.changeDuplicatedColumnNames(\n junctionColumns,\n inverseJunctionColumns,\n )\n\n // set junction table columns\n entityMetadata.ownerColumns = junctionColumns\n entityMetadata.inverseColumns = inverseJunctionColumns\n entityMetadata.ownColumns = [\n ...junctionColumns,\n ...inverseJunctionColumns,\n ]\n entityMetadata.ownColumns.forEach(\n (column) => (column.relationMetadata = relation),\n )\n\n // create junction table foreign keys\n // Note: UPDATE CASCADE clause is not supported in Oracle.\n // Note: UPDATE/DELETE CASCADE clauses are not supported in Spanner.\n entityMetadata.foreignKeys = relation.createForeignKeyConstraints\n ? [\n new ForeignKeyMetadata({\n entityMetadata: entityMetadata,\n referencedEntityMetadata: relation.entityMetadata,\n columns: junctionColumns,\n referencedColumns: referencedColumns,\n name: junctionColumns[0]?.foreignKeyConstraintName,\n onDelete:\n this.connection.driver.options.type === \"spanner\"\n ? \"NO ACTION\"\n : relation.onDelete || \"CASCADE\",\n onUpdate:\n this.connection.driver.options.type === \"oracle\" ||\n this.connection.driver.options.type === \"spanner\"\n ? \"NO ACTION\"\n : relation.onUpdate || \"CASCADE\",\n }),\n new ForeignKeyMetadata({\n entityMetadata: entityMetadata,\n referencedEntityMetadata: relation.inverseEntityMetadata,\n columns: inverseJunctionColumns,\n referencedColumns: inverseReferencedColumns,\n name: inverseJunctionColumns[0]?.foreignKeyConstraintName,\n onDelete:\n this.connection.driver.options.type === \"spanner\"\n ? \"NO ACTION\"\n : relation.inverseRelation\n ? relation.inverseRelation.onDelete\n : \"CASCADE\",\n onUpdate:\n this.connection.driver.options.type === \"oracle\" ||\n this.connection.driver.options.type === \"spanner\"\n ? \"NO ACTION\"\n : relation.inverseRelation\n ? relation.inverseRelation.onUpdate\n : \"CASCADE\",\n }),\n ]\n : []\n\n // create junction table indices\n entityMetadata.ownIndices = [\n new IndexMetadata({\n entityMetadata: entityMetadata,\n columns: junctionColumns,\n args: {\n target: entityMetadata.target,\n synchronize: true,\n },\n }),\n\n new IndexMetadata({\n entityMetadata: entityMetadata,\n columns: inverseJunctionColumns,\n args: {\n target: entityMetadata.target,\n synchronize: true,\n },\n }),\n ]\n\n // finally return entity metadata\n return entityMetadata\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Collects referenced columns from the given join column args.\n */\n protected collectReferencedColumns(\n relation: RelationMetadata,\n joinTable: JoinTableMetadataArgs,\n ): ColumnMetadata[] {\n const hasAnyReferencedColumnName = joinTable.joinColumns\n ? joinTable.joinColumns.find(\n (joinColumn) => !!joinColumn.referencedColumnName,\n )\n : false\n if (\n !joinTable.joinColumns ||\n (joinTable.joinColumns && !hasAnyReferencedColumnName)\n ) {\n return relation.entityMetadata.columns.filter(\n (column) => column.isPrimary,\n )\n } else {\n return joinTable.joinColumns.map((joinColumn) => {\n const referencedColumn = relation.entityMetadata.columns.find(\n (column) =>\n column.propertyName === joinColumn.referencedColumnName,\n )\n if (!referencedColumn)\n throw new TypeORMError(\n `Referenced column ${joinColumn.referencedColumnName} was not found in entity ${relation.entityMetadata.name}`,\n )\n\n return referencedColumn\n })\n }\n }\n\n /**\n * Collects inverse referenced columns from the given join column args.\n */\n protected collectInverseReferencedColumns(\n relation: RelationMetadata,\n joinTable: JoinTableMetadataArgs,\n ): ColumnMetadata[] {\n const hasInverseJoinColumns = !!joinTable.inverseJoinColumns\n const hasAnyInverseReferencedColumnName = hasInverseJoinColumns\n ? joinTable.inverseJoinColumns!.find(\n (joinColumn) => !!joinColumn.referencedColumnName,\n )\n : false\n if (\n !hasInverseJoinColumns ||\n (hasInverseJoinColumns && !hasAnyInverseReferencedColumnName)\n ) {\n return relation.inverseEntityMetadata.primaryColumns\n } else {\n return joinTable.inverseJoinColumns!.map((joinColumn) => {\n const referencedColumn =\n relation.inverseEntityMetadata.ownColumns.find(\n (column) =>\n column.propertyName ===\n joinColumn.referencedColumnName,\n )\n if (!referencedColumn)\n throw new TypeORMError(\n `Referenced column ${joinColumn.referencedColumnName} was not found in entity ${relation.inverseEntityMetadata.name}`,\n )\n\n return referencedColumn\n })\n }\n }\n\n protected changeDuplicatedColumnNames(\n junctionColumns: ColumnMetadata[],\n inverseJunctionColumns: ColumnMetadata[],\n ) {\n junctionColumns.forEach((junctionColumn) => {\n inverseJunctionColumns.forEach((inverseJunctionColumn) => {\n if (\n junctionColumn.givenDatabaseName ===\n inverseJunctionColumn.givenDatabaseName\n ) {\n const junctionColumnName =\n this.connection.namingStrategy.joinTableColumnDuplicationPrefix(\n junctionColumn.propertyName,\n 1,\n )\n junctionColumn.propertyName = junctionColumnName\n junctionColumn.givenDatabaseName = junctionColumnName\n\n const inverseJunctionColumnName =\n this.connection.namingStrategy.joinTableColumnDuplicationPrefix(\n inverseJunctionColumn.propertyName,\n 2,\n )\n inverseJunctionColumn.propertyName =\n inverseJunctionColumnName\n inverseJunctionColumn.givenDatabaseName =\n inverseJunctionColumnName\n }\n })\n })\n }\n}\n"],"sourceRoot":".."}
@@ -50,6 +50,7 @@ class RelationJoinColumnBuilder {
50
50
  * Builds a foreign key of the many-to-one or one-to-one owner relations.
51
51
  */
52
52
  build(joinColumns, relation) {
53
+ var _a;
53
54
  const referencedColumns = this.collectReferencedColumns(joinColumns, relation);
54
55
  const columns = this.collectColumns(joinColumns, relation, referencedColumns);
55
56
  if (!referencedColumns.length || !relation.createForeignKeyConstraints)
@@ -59,6 +60,7 @@ class RelationJoinColumnBuilder {
59
60
  uniqueConstraint: undefined,
60
61
  }; // this case is possible for one-to-one non owning side and relations with createForeignKeyConstraints = false
61
62
  const foreignKey = new ForeignKeyMetadata_1.ForeignKeyMetadata({
63
+ name: (_a = joinColumns[0]) === null || _a === void 0 ? void 0 : _a.foreignKeyConstraintName,
62
64
  entityMetadata: relation.entityMetadata,
63
65
  referencedEntityMetadata: relation.inverseEntityMetadata,
64
66
  namingStrategy: this.connection.namingStrategy,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/metadata-builder/RelationJoinColumnBuilder.ts"],"names":[],"mappings":"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","file":"RelationJoinColumnBuilder.js","sourcesContent":["import { ColumnMetadata } from \"../metadata/ColumnMetadata\"\nimport { UniqueMetadata } from \"../metadata/UniqueMetadata\"\nimport { ForeignKeyMetadata } from \"../metadata/ForeignKeyMetadata\"\nimport { RelationMetadata } from \"../metadata/RelationMetadata\"\nimport { JoinColumnMetadataArgs } from \"../metadata-args/JoinColumnMetadataArgs\"\nimport { DataSource } from \"../data-source/DataSource\"\nimport { TypeORMError } from \"../error\"\nimport { DriverUtils } from \"../driver/DriverUtils\"\n\n/**\n * Builds join column for the many-to-one and one-to-one owner relations.\n *\n * Cases it should cover:\n * 1. when join column is set with custom name and without referenced column name\n * we need automatically set referenced column name - primary ids by default\n * @JoinColumn({ name: \"custom_name\" })\n *\n * 2. when join column is set with only referenced column name\n * we need automatically set join column name - relation name + referenced column name\n * @JoinColumn({ referencedColumnName: \"title\" })\n *\n * 3. when join column is set without both referenced column name and join column name\n * we need to automatically set both of them\n * @JoinColumn()\n *\n * 4. when join column is not set at all (as in case of @ManyToOne relation)\n * we need to create join column for it with proper referenced column name and join column name\n *\n * 5. when multiple join columns set none of referencedColumnName and name can be optional\n * both options are required\n * @JoinColumn([\n * { name: \"category_title\", referencedColumnName: \"type\" },\n * { name: \"category_title\", referencedColumnName: \"name\" },\n * ])\n *\n * Since for many-to-one relations having JoinColumn decorator is not required,\n * we need to go thought each many-to-one relation without join column decorator set\n * and create join column metadata args for them.\n */\nexport class RelationJoinColumnBuilder {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(private connection: DataSource) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Builds a foreign key of the many-to-one or one-to-one owner relations.\n */\n build(\n joinColumns: JoinColumnMetadataArgs[],\n relation: RelationMetadata,\n ): {\n foreignKey: ForeignKeyMetadata | undefined\n columns: ColumnMetadata[]\n uniqueConstraint: UniqueMetadata | undefined\n } {\n const referencedColumns = this.collectReferencedColumns(\n joinColumns,\n relation,\n )\n const columns = this.collectColumns(\n joinColumns,\n relation,\n referencedColumns,\n )\n if (!referencedColumns.length || !relation.createForeignKeyConstraints)\n return {\n foreignKey: undefined,\n columns,\n uniqueConstraint: undefined,\n } // this case is possible for one-to-one non owning side and relations with createForeignKeyConstraints = false\n\n const foreignKey = new ForeignKeyMetadata({\n entityMetadata: relation.entityMetadata,\n referencedEntityMetadata: relation.inverseEntityMetadata,\n namingStrategy: this.connection.namingStrategy,\n columns: columns,\n referencedColumns: referencedColumns,\n onDelete: relation.onDelete,\n onUpdate: relation.onUpdate,\n deferrable: relation.deferrable,\n })\n\n // Oracle does not allow both primary and unique constraints on the same column\n if (\n this.connection.driver.options.type === \"oracle\" &&\n columns.every((column) => column.isPrimary)\n )\n return { foreignKey, columns, uniqueConstraint: undefined }\n\n // CockroachDB requires UNIQUE constraints on referenced columns\n if (referencedColumns.length > 0 && relation.isOneToOne) {\n const uniqueConstraint = new UniqueMetadata({\n entityMetadata: relation.entityMetadata,\n columns: foreignKey.columns,\n args: {\n name: this.connection.namingStrategy.relationConstraintName(\n relation.entityMetadata.tableName,\n foreignKey.columns.map((c) => c.databaseName),\n ),\n target: relation.entityMetadata.target,\n },\n })\n uniqueConstraint.build(this.connection.namingStrategy)\n return { foreignKey, columns, uniqueConstraint }\n }\n\n return { foreignKey, columns, uniqueConstraint: undefined }\n }\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Collects referenced columns from the given join column args.\n */\n protected collectReferencedColumns(\n joinColumns: JoinColumnMetadataArgs[],\n relation: RelationMetadata,\n ): ColumnMetadata[] {\n const hasAnyReferencedColumnName = joinColumns.find(\n (joinColumnArgs) => !!joinColumnArgs.referencedColumnName,\n )\n const manyToOneWithoutJoinColumn =\n joinColumns.length === 0 && relation.isManyToOne\n const hasJoinColumnWithoutAnyReferencedColumnName =\n joinColumns.length > 0 && !hasAnyReferencedColumnName\n\n if (\n manyToOneWithoutJoinColumn ||\n hasJoinColumnWithoutAnyReferencedColumnName\n ) {\n // covers case3 and case1\n return relation.inverseEntityMetadata.primaryColumns\n } else {\n // cases with referenced columns defined\n return joinColumns.map((joinColumn) => {\n const referencedColumn =\n relation.inverseEntityMetadata.ownColumns.find(\n (column) =>\n column.propertyName ===\n joinColumn.referencedColumnName,\n ) // todo: can we also search in relations?\n if (!referencedColumn)\n throw new TypeORMError(\n `Referenced column ${joinColumn.referencedColumnName} was not found in entity ${relation.inverseEntityMetadata.name}`,\n )\n\n return referencedColumn\n })\n }\n }\n\n /**\n * Collects columns from the given join column args.\n */\n private collectColumns(\n joinColumns: JoinColumnMetadataArgs[],\n relation: RelationMetadata,\n referencedColumns: ColumnMetadata[],\n ): ColumnMetadata[] {\n return referencedColumns.map((referencedColumn) => {\n // in the case if relation has join column with only name set we need this check\n const joinColumnMetadataArg = joinColumns.find((joinColumn) => {\n return (\n (!joinColumn.referencedColumnName ||\n joinColumn.referencedColumnName ===\n referencedColumn.propertyName) &&\n !!joinColumn.name\n )\n })\n const joinColumnName = joinColumnMetadataArg\n ? joinColumnMetadataArg.name\n : this.connection.namingStrategy.joinColumnName(\n relation.propertyName,\n referencedColumn.propertyName,\n )\n\n const relationalColumns = relation.embeddedMetadata\n ? relation.embeddedMetadata.columns\n : relation.entityMetadata.ownColumns\n let relationalColumn = relationalColumns.find(\n (column) =>\n column.databaseNameWithoutPrefixes === joinColumnName,\n )\n if (!relationalColumn) {\n relationalColumn = new ColumnMetadata({\n connection: this.connection,\n entityMetadata: relation.entityMetadata,\n embeddedMetadata: relation.embeddedMetadata,\n args: {\n target: \"\",\n mode: \"virtual\",\n propertyName: relation.propertyName,\n options: {\n name: joinColumnName,\n type: referencedColumn.type,\n length:\n !referencedColumn.length &&\n (DriverUtils.isMySQLFamily(\n this.connection.driver,\n ) ||\n this.connection.driver.options.type ===\n \"aurora-mysql\") &&\n (referencedColumn.generationStrategy ===\n \"uuid\" ||\n referencedColumn.type === \"uuid\")\n ? \"36\"\n : referencedColumn.length, // fix https://github.com/typeorm/typeorm/issues/3604\n width: referencedColumn.width,\n charset: referencedColumn.charset,\n collation: referencedColumn.collation,\n precision: referencedColumn.precision,\n scale: referencedColumn.scale,\n zerofill: referencedColumn.zerofill,\n unsigned: referencedColumn.unsigned,\n comment: referencedColumn.comment,\n enum: referencedColumn.enum,\n enumName: referencedColumn.enumName,\n primary: relation.isPrimary,\n nullable: relation.isNullable,\n },\n },\n })\n relation.entityMetadata.registerColumn(relationalColumn)\n }\n relationalColumn.referencedColumn = referencedColumn // its important to set it here because we need to set referenced column for user defined join column\n relationalColumn.type = referencedColumn.type // also since types of relational column and join column must be equal we override user defined column type\n relationalColumn.relationMetadata = relation\n relationalColumn.build(this.connection)\n return relationalColumn\n })\n }\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/metadata-builder/RelationJoinColumnBuilder.ts"],"names":[],"mappings":"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","file":"RelationJoinColumnBuilder.js","sourcesContent":["import { ColumnMetadata } from \"../metadata/ColumnMetadata\"\nimport { UniqueMetadata } from \"../metadata/UniqueMetadata\"\nimport { ForeignKeyMetadata } from \"../metadata/ForeignKeyMetadata\"\nimport { RelationMetadata } from \"../metadata/RelationMetadata\"\nimport { JoinColumnMetadataArgs } from \"../metadata-args/JoinColumnMetadataArgs\"\nimport { DataSource } from \"../data-source/DataSource\"\nimport { TypeORMError } from \"../error\"\nimport { DriverUtils } from \"../driver/DriverUtils\"\n\n/**\n * Builds join column for the many-to-one and one-to-one owner relations.\n *\n * Cases it should cover:\n * 1. when join column is set with custom name and without referenced column name\n * we need automatically set referenced column name - primary ids by default\n * @JoinColumn({ name: \"custom_name\" })\n *\n * 2. when join column is set with only referenced column name\n * we need automatically set join column name - relation name + referenced column name\n * @JoinColumn({ referencedColumnName: \"title\" })\n *\n * 3. when join column is set without both referenced column name and join column name\n * we need to automatically set both of them\n * @JoinColumn()\n *\n * 4. when join column is not set at all (as in case of @ManyToOne relation)\n * we need to create join column for it with proper referenced column name and join column name\n *\n * 5. when multiple join columns set none of referencedColumnName and name can be optional\n * both options are required\n * @JoinColumn([\n * { name: \"category_title\", referencedColumnName: \"type\" },\n * { name: \"category_title\", referencedColumnName: \"name\" },\n * ])\n *\n * Since for many-to-one relations having JoinColumn decorator is not required,\n * we need to go thought each many-to-one relation without join column decorator set\n * and create join column metadata args for them.\n */\nexport class RelationJoinColumnBuilder {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(private connection: DataSource) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Builds a foreign key of the many-to-one or one-to-one owner relations.\n */\n build(\n joinColumns: JoinColumnMetadataArgs[],\n relation: RelationMetadata,\n ): {\n foreignKey: ForeignKeyMetadata | undefined\n columns: ColumnMetadata[]\n uniqueConstraint: UniqueMetadata | undefined\n } {\n const referencedColumns = this.collectReferencedColumns(\n joinColumns,\n relation,\n )\n const columns = this.collectColumns(\n joinColumns,\n relation,\n referencedColumns,\n )\n if (!referencedColumns.length || !relation.createForeignKeyConstraints)\n return {\n foreignKey: undefined,\n columns,\n uniqueConstraint: undefined,\n } // this case is possible for one-to-one non owning side and relations with createForeignKeyConstraints = false\n\n const foreignKey = new ForeignKeyMetadata({\n name: joinColumns[0]?.foreignKeyConstraintName,\n entityMetadata: relation.entityMetadata,\n referencedEntityMetadata: relation.inverseEntityMetadata,\n namingStrategy: this.connection.namingStrategy,\n columns: columns,\n referencedColumns: referencedColumns,\n onDelete: relation.onDelete,\n onUpdate: relation.onUpdate,\n deferrable: relation.deferrable,\n })\n\n // Oracle does not allow both primary and unique constraints on the same column\n if (\n this.connection.driver.options.type === \"oracle\" &&\n columns.every((column) => column.isPrimary)\n )\n return { foreignKey, columns, uniqueConstraint: undefined }\n\n // CockroachDB requires UNIQUE constraints on referenced columns\n if (referencedColumns.length > 0 && relation.isOneToOne) {\n const uniqueConstraint = new UniqueMetadata({\n entityMetadata: relation.entityMetadata,\n columns: foreignKey.columns,\n args: {\n name: this.connection.namingStrategy.relationConstraintName(\n relation.entityMetadata.tableName,\n foreignKey.columns.map((c) => c.databaseName),\n ),\n target: relation.entityMetadata.target,\n },\n })\n uniqueConstraint.build(this.connection.namingStrategy)\n return { foreignKey, columns, uniqueConstraint }\n }\n\n return { foreignKey, columns, uniqueConstraint: undefined }\n }\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Collects referenced columns from the given join column args.\n */\n protected collectReferencedColumns(\n joinColumns: JoinColumnMetadataArgs[],\n relation: RelationMetadata,\n ): ColumnMetadata[] {\n const hasAnyReferencedColumnName = joinColumns.find(\n (joinColumnArgs) => !!joinColumnArgs.referencedColumnName,\n )\n const manyToOneWithoutJoinColumn =\n joinColumns.length === 0 && relation.isManyToOne\n const hasJoinColumnWithoutAnyReferencedColumnName =\n joinColumns.length > 0 && !hasAnyReferencedColumnName\n\n if (\n manyToOneWithoutJoinColumn ||\n hasJoinColumnWithoutAnyReferencedColumnName\n ) {\n // covers case3 and case1\n return relation.inverseEntityMetadata.primaryColumns\n } else {\n // cases with referenced columns defined\n return joinColumns.map((joinColumn) => {\n const referencedColumn =\n relation.inverseEntityMetadata.ownColumns.find(\n (column) =>\n column.propertyName ===\n joinColumn.referencedColumnName,\n ) // todo: can we also search in relations?\n if (!referencedColumn)\n throw new TypeORMError(\n `Referenced column ${joinColumn.referencedColumnName} was not found in entity ${relation.inverseEntityMetadata.name}`,\n )\n\n return referencedColumn\n })\n }\n }\n\n /**\n * Collects columns from the given join column args.\n */\n private collectColumns(\n joinColumns: JoinColumnMetadataArgs[],\n relation: RelationMetadata,\n referencedColumns: ColumnMetadata[],\n ): ColumnMetadata[] {\n return referencedColumns.map((referencedColumn) => {\n // in the case if relation has join column with only name set we need this check\n const joinColumnMetadataArg = joinColumns.find((joinColumn) => {\n return (\n (!joinColumn.referencedColumnName ||\n joinColumn.referencedColumnName ===\n referencedColumn.propertyName) &&\n !!joinColumn.name\n )\n })\n const joinColumnName = joinColumnMetadataArg\n ? joinColumnMetadataArg.name\n : this.connection.namingStrategy.joinColumnName(\n relation.propertyName,\n referencedColumn.propertyName,\n )\n\n const relationalColumns = relation.embeddedMetadata\n ? relation.embeddedMetadata.columns\n : relation.entityMetadata.ownColumns\n let relationalColumn = relationalColumns.find(\n (column) =>\n column.databaseNameWithoutPrefixes === joinColumnName,\n )\n if (!relationalColumn) {\n relationalColumn = new ColumnMetadata({\n connection: this.connection,\n entityMetadata: relation.entityMetadata,\n embeddedMetadata: relation.embeddedMetadata,\n args: {\n target: \"\",\n mode: \"virtual\",\n propertyName: relation.propertyName,\n options: {\n name: joinColumnName,\n type: referencedColumn.type,\n length:\n !referencedColumn.length &&\n (DriverUtils.isMySQLFamily(\n this.connection.driver,\n ) ||\n this.connection.driver.options.type ===\n \"aurora-mysql\") &&\n (referencedColumn.generationStrategy ===\n \"uuid\" ||\n referencedColumn.type === \"uuid\")\n ? \"36\"\n : referencedColumn.length, // fix https://github.com/typeorm/typeorm/issues/3604\n width: referencedColumn.width,\n charset: referencedColumn.charset,\n collation: referencedColumn.collation,\n precision: referencedColumn.precision,\n scale: referencedColumn.scale,\n zerofill: referencedColumn.zerofill,\n unsigned: referencedColumn.unsigned,\n comment: referencedColumn.comment,\n enum: referencedColumn.enum,\n enumName: referencedColumn.enumName,\n primary: relation.isPrimary,\n nullable: relation.isNullable,\n },\n },\n })\n relation.entityMetadata.registerColumn(relationalColumn)\n }\n relationalColumn.referencedColumn = referencedColumn // its important to set it here because we need to set referenced column for user defined join column\n relationalColumn.type = referencedColumn.type // also since types of relational column and join column must be equal we override user defined column type\n relationalColumn.relationMetadata = relation\n relationalColumn.build(this.connection)\n return relationalColumn\n })\n }\n}\n"],"sourceRoot":".."}
package/package.json CHANGED
@@ -1 +1 @@
1
- { "name": "typeorm", "private": false, "version": "0.3.6-dev.c814b07", "description": "Data-Mapper ORM for TypeScript, ES7, ES6, ES5. Supports MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, Oracle, MongoDB databases.", "license": "MIT", "readmeFilename": "README.md", "author": { "name": "Umed Khudoiberdiev", "email": "pleerock.me@gmail.com" }, "engines": { "node": ">= 12.9.0" }, "exports": { ".": { "node": { "import": "./index.mjs", "require": "./index.js" }, "browser": { "require": "./index.js", "import": "./browser/index.js", "default": "./index.js" } }, "./browser": "./browser/index.js", "./*.js": "./*.js", "./*": { "require": "./*.js", "import": "./*" } }, "main": "./index.js", "module": "./index.mjs", "types": "./index.d.ts", "browser": { "./browser/connection/ConnectionOptionsReader.js": "./browser/platform/BrowserConnectionOptionsReaderDummy.js", "./browser/connection/options-reader/ConnectionOptionsXmlReader.js": "./browser/platform/BrowserConnectionOptionsReaderDummy.js", "./browser/connection/options-reader/ConnectionOptionsYmlReader.js": "./browser/platform/BrowserConnectionOptionsReaderDummy.js", "./browser/driver/aurora-data-api/AuroraDataApiDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/better-sqlite3/BetterSqlite3Driver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/cockroachdb/CockroachDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/mongodb/MongoDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/mongodb/MongoQueryRunner.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/mysql/MysqlDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/oracle/OracleDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/postgres/PostgresDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/sap/SapDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/sqlite/SqliteDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/sqlserver/SqlServerDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/entity-manager/MongoEntityManager.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/logger/FileLogger.js": "./browser/platform/BrowserFileLoggerDummy.js", "./browser/platform/PlatformTools.js": "./browser/platform/BrowserPlatformTools.js", "./browser/repository/MongoRepository.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/util/DirectoryExportedClassesLoader.js": "./browser/platform/BrowserDirectoryExportedClassesLoader.js", "./index.js": "./browser/index.js", "./index.mjs": "./browser/index.js" }, "repository": { "type": "git", "url": "https://github.com/typeorm/typeorm.git" }, "bugs": { "url": "https://github.com/typeorm/typeorm/issues" }, "tags": [ "orm", "typescript", "typescript-orm", "mysql", "mysql-orm", "postgresql", "postgresql-orm", "mariadb", "mariadb-orm", "sqlite", "sqlite-orm", "sql-server", "sql-server-orm", "oracle", "oracle-orm" ], "devDependencies": { "@types/app-root-path": "^1.2.4", "@types/chai": "^4.2.15", "@types/chai-as-promised": "^7.1.3", "@types/debug": "^4.1.5", "@types/js-yaml": "^4.0.0", "@types/mkdirp": "^1.0.1", "@types/mocha": "^8.2.1", "@types/node": "^14.14.31", "@types/rimraf": "^3.0.0", "@types/sha.js": "^2.4.0", "@types/sinon": "^9.0.10", "@types/source-map-support": "^0.5.3", "@types/uuid": "^8.3.4", "@types/xml2js": "^0.4.8", "@types/yargs": "^17.0.2", "better-sqlite3": "^7.1.2", "chai": "^4.3.0", "chai-as-promised": "^7.1.1", "class-transformer": "^0.4.0", "conventional-changelog-angular": "^5.0.12", "conventional-changelog-cli": "^2.1.1", "del": "^6.0.0", "gulp": "^4.0.2", "gulp-istanbul": "^1.1.3", "gulp-mocha": "^8.0.0", "gulp-rename": "^2.0.0", "gulp-replace": "^1.0.0", "gulp-shell": "^0.8.0", "gulp-sourcemaps": "^3.0.0", "gulp-typescript": "^6.0.0-alpha.1", "gulpclass": "^0.2.0", "husky": "^5.1.1", "mocha": "^8.3.0", "mongodb": "^3.6.4", "mssql": "^7.3.0", "mysql": "^2.18.1", "mysql2": "^2.2.5", "pg": "^8.5.1", "pg-query-stream": "^4.0.0", "redis": "^3.1.1", "remap-istanbul": "^0.13.0", "rimraf": "^3.0.2", "sinon": "^9.2.4", "sinon-chai": "^3.5.0", "source-map-support": "^0.5.19", "sql.js": "^1.4.0", "sqlite3": "^5.0.2", "ts-node": "^10.7.0", "typeorm-aurora-data-api-driver": "^2.0.0", "typescript": "^4.6.2", "prettier": "^2.5.1" }, "peerDependencies": { "@sap/hana-client": "^2.11.14", "better-sqlite3": "^7.1.2", "hdb-pool": "^0.1.6", "ioredis": "^4.28.3", "mongodb": "^3.6.0", "mssql": "^6.3.1", "mysql2": "^2.2.5", "oracledb": "^5.1.0", "pg": "^8.5.1", "pg-native": "^3.0.0", "pg-query-stream": "^4.0.0", "redis": "^3.1.1", "sql.js": "^1.4.0", "sqlite3": "^5.0.2", "ts-node": "^10.7.0", "typeorm-aurora-data-api-driver": "^2.0.0" }, "peerDependenciesMeta": { "@sap/hana-client": { "optional": true }, "better-sqlite3": { "optional": true }, "hdb-pool": { "optional": true }, "ioredis": { "optional": true }, "mongodb": { "optional": true }, "mssql": { "optional": true }, "mysql2": { "optional": true }, "oracledb": { "optional": true }, "pg": { "optional": true }, "pg-native": { "optional": true }, "pg-query-stream": { "optional": true }, "redis": { "optional": true }, "sql.js": { "optional": true }, "sqlite3": { "optional": true }, "ts-node": { "optional": true }, "typeorm-aurora-data-api-driver": { "optional": true } }, "dependencies": { "@sqltools/formatter": "^1.2.2", "app-root-path": "^3.0.0", "buffer": "^6.0.3", "chalk": "^4.1.0", "cli-highlight": "^2.1.11", "debug": "^4.3.3", "dotenv": "^16.0.0", "glob": "^7.2.0", "js-yaml": "^4.1.0", "mkdirp": "^1.0.4", "reflect-metadata": "^0.1.13", "sha.js": "^2.4.11", "tslib": "^2.3.1", "uuid": "^8.3.2", "xml2js": "^0.4.23", "yargs": "^17.3.1", "date-fns": "^2.28.0" }, "scripts": { "test": "rimraf ./build && tsc && mocha --file ./build/compiled/test/utils/test-setup.js --bail --recursive --timeout 60000 ./build/compiled/test", "test-fast": "mocha --file ./build/compiled/test/utils/test-setup.js --bail --recursive --timeout 60000 ./build/compiled/test", "compile": "rimraf ./build && tsc", "watch": "./node_modules/.bin/tsc -w", "package": "gulp package", "pack": "gulp pack", "lint": "prettier --check \"./src/**/*.ts\" \"./test/**/*.ts\" \"./sample/**/*.ts\"", "format": "prettier --write \"./src/**/*.ts\" \"./test/**/*.ts\" \"./sample/**/*.ts\"", "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 2" }, "bin": { "typeorm": "./cli.js", "typeorm-ts-node-commonjs": "./cli-ts-node-commonjs.js", "typeorm-ts-node-esm": "./cli-ts-node-esm.js" }, "funding": "https://opencollective.com/typeorm", "collective": { "type": "opencollective", "url": "https://opencollective.com/typeorm", "logo": "https://opencollective.com/opencollective/logo.txt" }, "nyc": { "all": true, "cache": false, "exclude": [ "**/*.d.ts" ], "extension": [ ".ts" ], "include": [ "build/compiled/src/**", "src/**" ], "reporter": "json" } }
1
+ { "name": "typeorm", "private": false, "version": "0.3.6-dev.ea176b2", "description": "Data-Mapper ORM for TypeScript, ES7, ES6, ES5. Supports MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, Oracle, MongoDB databases.", "license": "MIT", "readmeFilename": "README.md", "author": { "name": "Umed Khudoiberdiev", "email": "pleerock.me@gmail.com" }, "engines": { "node": ">= 12.9.0" }, "exports": { ".": { "node": { "import": "./index.mjs", "require": "./index.js" }, "browser": { "require": "./index.js", "import": "./browser/index.js", "default": "./index.js" } }, "./browser": "./browser/index.js", "./*.js": "./*.js", "./*": { "require": "./*.js", "import": "./*" } }, "main": "./index.js", "module": "./index.mjs", "types": "./index.d.ts", "browser": { "./browser/connection/ConnectionOptionsReader.js": "./browser/platform/BrowserConnectionOptionsReaderDummy.js", "./browser/connection/options-reader/ConnectionOptionsXmlReader.js": "./browser/platform/BrowserConnectionOptionsReaderDummy.js", "./browser/connection/options-reader/ConnectionOptionsYmlReader.js": "./browser/platform/BrowserConnectionOptionsReaderDummy.js", "./browser/driver/aurora-data-api/AuroraDataApiDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/better-sqlite3/BetterSqlite3Driver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/cockroachdb/CockroachDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/mongodb/MongoDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/mongodb/MongoQueryRunner.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/mysql/MysqlDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/oracle/OracleDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/postgres/PostgresDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/sap/SapDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/sqlite/SqliteDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/sqlserver/SqlServerDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/entity-manager/MongoEntityManager.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/logger/FileLogger.js": "./browser/platform/BrowserFileLoggerDummy.js", "./browser/platform/PlatformTools.js": "./browser/platform/BrowserPlatformTools.js", "./browser/repository/MongoRepository.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/util/DirectoryExportedClassesLoader.js": "./browser/platform/BrowserDirectoryExportedClassesLoader.js", "./index.js": "./browser/index.js", "./index.mjs": "./browser/index.js" }, "repository": { "type": "git", "url": "https://github.com/typeorm/typeorm.git" }, "bugs": { "url": "https://github.com/typeorm/typeorm/issues" }, "homepage": "https://typeorm.io", "tags": [ "orm", "typescript", "typescript-orm", "mysql", "mysql-orm", "postgresql", "postgresql-orm", "mariadb", "mariadb-orm", "spanner", "sqlite", "sqlite-orm", "sql-server", "sql-server-orm", "oracle", "oracle-orm", "cloud-spanner", "cloud-spanner-orm" ], "devDependencies": { "@types/app-root-path": "^1.2.4", "@types/chai": "^4.2.15", "@types/chai-as-promised": "^7.1.3", "@types/debug": "^4.1.5", "@types/js-yaml": "^4.0.0", "@types/mkdirp": "^1.0.1", "@types/mocha": "^8.2.1", "@types/node": "^14.14.31", "@types/rimraf": "^3.0.0", "@types/sha.js": "^2.4.0", "@types/sinon": "^9.0.10", "@types/source-map-support": "^0.5.3", "@types/uuid": "^8.3.4", "@types/xml2js": "^0.4.8", "@types/yargs": "^17.0.2", "better-sqlite3": "^7.1.2", "chai": "^4.3.0", "chai-as-promised": "^7.1.1", "class-transformer": "^0.4.0", "conventional-changelog-angular": "^5.0.12", "conventional-changelog-cli": "^2.1.1", "del": "^6.0.0", "gulp": "^4.0.2", "gulp-istanbul": "^1.1.3", "gulp-mocha": "^8.0.0", "gulp-rename": "^2.0.0", "gulp-replace": "^1.0.0", "gulp-shell": "^0.8.0", "gulp-sourcemaps": "^3.0.0", "gulp-typescript": "^6.0.0-alpha.1", "gulpclass": "^0.2.0", "husky": "^5.1.1", "mocha": "^8.3.0", "mongodb": "^3.6.4", "mssql": "^7.3.0", "mysql": "^2.18.1", "mysql2": "^2.2.5", "pg": "^8.5.1", "pg-query-stream": "^4.0.0", "prettier": "^2.5.1", "redis": "^3.1.1", "remap-istanbul": "^0.13.0", "rimraf": "^3.0.2", "sinon": "^9.2.4", "sinon-chai": "^3.5.0", "source-map-support": "^0.5.19", "sql.js": "^1.4.0", "sqlite3": "^5.0.2", "ts-node": "^10.7.0", "typeorm-aurora-data-api-driver": "^2.0.0", "typescript": "^4.6.2" }, "peerDependencies": { "@google-cloud/spanner": "^5.18.0", "@sap/hana-client": "^2.11.14", "better-sqlite3": "^7.1.2", "hdb-pool": "^0.1.6", "ioredis": "^4.28.3", "mongodb": "^3.6.0", "mssql": "^7.3.0", "mysql2": "^2.2.5", "oracledb": "^5.1.0", "pg": "^8.5.1", "pg-native": "^3.0.0", "pg-query-stream": "^4.0.0", "redis": "^3.1.1 || ^4.0.0", "sql.js": "^1.4.0", "sqlite3": "^5.0.2", "ts-node": "^10.7.0", "typeorm-aurora-data-api-driver": "^2.0.0" }, "peerDependenciesMeta": { "@google-cloud/spanner": { "optional": true }, "@sap/hana-client": { "optional": true }, "better-sqlite3": { "optional": true }, "hdb-pool": { "optional": true }, "ioredis": { "optional": true }, "mongodb": { "optional": true }, "mssql": { "optional": true }, "mysql2": { "optional": true }, "oracledb": { "optional": true }, "pg": { "optional": true }, "pg-native": { "optional": true }, "pg-query-stream": { "optional": true }, "redis": { "optional": true }, "sql.js": { "optional": true }, "sqlite3": { "optional": true }, "ts-node": { "optional": true }, "typeorm-aurora-data-api-driver": { "optional": true } }, "dependencies": { "@sqltools/formatter": "^1.2.2", "app-root-path": "^3.0.0", "buffer": "^6.0.3", "chalk": "^4.1.0", "cli-highlight": "^2.1.11", "date-fns": "^2.28.0", "debug": "^4.3.3", "dotenv": "^16.0.0", "glob": "^7.2.0", "js-yaml": "^4.1.0", "mkdirp": "^1.0.4", "reflect-metadata": "^0.1.13", "sha.js": "^2.4.11", "tslib": "^2.3.1", "uuid": "^8.3.2", "xml2js": "^0.4.23", "yargs": "^17.3.1" }, "scripts": { "test": "rimraf ./build && tsc && mocha --file ./build/compiled/test/utils/test-setup.js --bail --recursive --timeout 60000 ./build/compiled/test", "test-fast": "mocha --file ./build/compiled/test/utils/test-setup.js --bail --recursive --timeout 60000 ./build/compiled/test", "compile": "rimraf ./build && tsc", "watch": "./node_modules/.bin/tsc -w", "package": "gulp package", "pack": "gulp pack", "lint": "prettier --check \"./src/**/*.ts\" \"./test/**/*.ts\" \"./sample/**/*.ts\"", "format": "prettier --write \"./src/**/*.ts\" \"./test/**/*.ts\" \"./sample/**/*.ts\"", "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 2" }, "bin": { "typeorm": "./cli.js", "typeorm-ts-node-commonjs": "./cli-ts-node-commonjs.js", "typeorm-ts-node-esm": "./cli-ts-node-esm.js" }, "funding": "https://opencollective.com/typeorm", "collective": { "type": "opencollective", "url": "https://opencollective.com/typeorm", "logo": "https://opencollective.com/opencollective/logo.txt" }, "nyc": { "all": true, "cache": false, "exclude": [ "**/*.d.ts" ], "extension": [ ".ts" ], "include": [ "build/compiled/src/**", "src/**" ], "reporter": "json" } }
@@ -35,6 +35,11 @@ class PlatformTools {
35
35
  try {
36
36
  // switch case to explicit require statements for webpack compatibility.
37
37
  switch (name) {
38
+ /**
39
+ * spanner
40
+ */
41
+ case "spanner":
42
+ return require("@google-cloud/spanner");
38
43
  /**
39
44
  * mongodb
40
45
  */
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/platform/PlatformTools.ts"],"names":[],"mappings":";;;;AAAA,mDAA4B;AAC5B,+CAAwB;AACxB,4DAA2B;AAC3B,0DAAyB;AACzB,iDAAgD;AAEhD,yBAA+B;AAAtB,gGAAA,UAAU,OAAA;AACnB,iCAAqC;AAA5B,sGAAA,YAAY,OAAA;AACrB,iCAA2C;AAAlC,kGAAA,QAAQ,OAAA;AAAE,kGAAA,QAAQ,OAAA;AAE3B;;GAEG;AACH,MAAa,aAAa;IAMtB;;OAEG;IACH,MAAM,CAAC,iBAAiB;QACpB,OAAO,MAAM,CAAA;IACjB,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,IAAI,CAAC,IAAY;QACpB,2HAA2H;QAC3H,8FAA8F;QAC9F,kCAAkC;QAElC,IAAI;YACA,wEAAwE;YAExE,QAAQ,IAAI,EAAE;gBACV;;mBAEG;gBACH,KAAK,SAAS;oBACV,OAAO,OAAO,CAAC,SAAS,CAAC,CAAA;gBAE7B;;mBAEG;gBACH,KAAK,kBAAkB;oBACnB,OAAO,OAAO,CAAC,kBAAkB,CAAC,CAAA;gBAEtC,KAAK,UAAU;oBACX,OAAO,OAAO,CAAC,UAAU,CAAC,CAAA;gBAE9B;;mBAEG;gBACH,KAAK,OAAO;oBACR,OAAO,OAAO,CAAC,OAAO,CAAC,CAAA;gBAE3B,KAAK,QAAQ;oBACT,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAA;gBAE5B;;mBAEG;gBACH,KAAK,UAAU;oBACX,OAAO,OAAO,CAAC,UAAU,CAAC,CAAA;gBAE9B;;mBAEG;gBACH,KAAK,IAAI;oBACL,OAAO,OAAO,CAAC,IAAI,CAAC,CAAA;gBAExB,KAAK,WAAW;oBACZ,OAAO,OAAO,CAAC,WAAW,CAAC,CAAA;gBAE/B,KAAK,iBAAiB;oBAClB,OAAO,OAAO,CAAC,iBAAiB,CAAC,CAAA;gBAErC,KAAK,gCAAgC;oBACjC,OAAO,OAAO,CAAC,gCAAgC,CAAC,CAAA;gBAEpD;;mBAEG;gBACH,KAAK,OAAO;oBACR,OAAO,OAAO,CAAC,OAAO,CAAC,CAAA;gBAE3B,KAAK,SAAS;oBACV,OAAO,OAAO,CAAC,SAAS,CAAC,CAAA;gBAE7B;;mBAEG;gBACH,KAAK,gBAAgB;oBACjB,OAAO,OAAO,CAAC,gBAAgB,CAAC,CAAA;gBAEpC;;mBAEG;gBACH,KAAK,SAAS;oBACV,OAAO,OAAO,CAAC,SAAS,CAAC,CAAA;gBAE7B;;mBAEG;gBACH,KAAK,QAAQ;oBACT,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAA;gBAE5B;;mBAEG;gBACH,KAAK,OAAO;oBACR,OAAO,OAAO,CAAC,OAAO,CAAC,CAAA;gBAE3B;;mBAEG;gBACH,KAAK,6BAA6B;oBAC9B,OAAO,OAAO,CAAC,6BAA6B,CAAC,CAAA;aACpD;SACJ;QAAC,OAAO,GAAG,EAAE;YACV,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CACvB,OAAO,CAAC,GAAG,EAAE,GAAG,gBAAgB,GAAG,IAAI,CAC1C,CAAC,CAAA;SACL;QAED,4FAA4F;QAC5F,6FAA6F;QAC7F,8FAA8F;QAC9F,YAAY;QACZ,MAAM,IAAI,SAAS,CAAC,2CAA2C,IAAI,EAAE,CAAC,CAAA;IAC1E,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,OAAe;QAChC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;IAClC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,OAAe;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAChC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,OAAe;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAChC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,OAAe;QAC5B,OAAO,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IACjC,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,QAAgB;QAChC,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;IACpC,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,QAAgB,EAAE,IAAS;QAC7C,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;IACrC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,IAAS;QAC1C,OAAO,IAAI,OAAO,CAAO,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE;YAClC,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC7B,IAAI,GAAG;oBAAE,IAAI,CAAC,GAAG,CAAC,CAAA;gBAClB,EAAE,EAAE,CAAA;YACR,CAAC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACN,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,MAAM,CAAC,OAAe;QACzB,gBAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;IACpC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,IAAY;QAC9B,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC5B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,GAAW;QAC3B,MAAM,KAAK,GAAU;YACjB,OAAO,EAAE,eAAK,CAAC,UAAU;YACzB,OAAO,EAAE,eAAK,CAAC,UAAU;YACzB,MAAM,EAAE,eAAK,CAAC,KAAK;YACnB,IAAI,EAAE,eAAK,CAAC,aAAa;YACzB,QAAQ,EAAE,eAAK,CAAC,aAAa;YAC7B,OAAO,EAAE,eAAK,CAAC,IAAI;SACtB,CAAA;QACD,OAAO,IAAA,yBAAS,EAAC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAA;IAC5D,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,IAAY;QAC7B,OAAO,IAAA,yBAAS,EAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;IAChD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,MAAc,EAAE,IAAS;QACpC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAA;IACnD,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,MAAc,EAAE,KAAU;QACtC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAA;IACnD,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,MAAc,EAAE,OAAY;QACvC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAA;IACxD,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,OAAe;QACtB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IACzC,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,OAAe;QACvB,OAAO,eAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAChC,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,MAAc,EAAE,GAAS;QACtC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;QACtC,IAAI,GAAG;YAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC/B,CAAC;;AAxOL,sCAyOC;AAxOG;;GAEG;AACI,kBAAI,GAAuB,MAAM,CAAA","file":"PlatformTools.js","sourcesContent":["import * as path from \"path\"\nimport * as fs from \"fs\"\nimport dotenv from \"dotenv\"\nimport chalk from \"chalk\"\nimport { highlight, Theme } from \"cli-highlight\"\n\nexport { ReadStream } from \"fs\"\nexport { EventEmitter } from \"events\"\nexport { Readable, Writable } from \"stream\"\n\n/**\n * Platform-specific tools.\n */\nexport class PlatformTools {\n /**\n * Type of the currently running platform.\n */\n static type: \"browser\" | \"node\" = \"node\"\n\n /**\n * Gets global variable where global stuff can be stored.\n */\n static getGlobalVariable(): any {\n return global\n }\n\n /**\n * Loads (\"require\"-s) given file or package.\n * This operation only supports on node platform\n */\n static load(name: string): any {\n // if name is not absolute or relative, then try to load package from the node_modules of the directory we are currently in\n // this is useful when we are using typeorm package globally installed and it accesses drivers\n // that are not installed globally\n\n try {\n // switch case to explicit require statements for webpack compatibility.\n\n switch (name) {\n /**\n * mongodb\n */\n case \"mongodb\":\n return require(\"mongodb\")\n\n /**\n * hana\n */\n case \"@sap/hana-client\":\n return require(\"@sap/hana-client\")\n\n case \"hdb-pool\":\n return require(\"hdb-pool\")\n\n /**\n * mysql\n */\n case \"mysql\":\n return require(\"mysql\")\n\n case \"mysql2\":\n return require(\"mysql2\")\n\n /**\n * oracle\n */\n case \"oracledb\":\n return require(\"oracledb\")\n\n /**\n * postgres\n */\n case \"pg\":\n return require(\"pg\")\n\n case \"pg-native\":\n return require(\"pg-native\")\n\n case \"pg-query-stream\":\n return require(\"pg-query-stream\")\n\n case \"typeorm-aurora-data-api-driver\":\n return require(\"typeorm-aurora-data-api-driver\")\n\n /**\n * redis\n */\n case \"redis\":\n return require(\"redis\")\n\n case \"ioredis\":\n return require(\"ioredis\")\n\n /**\n * better-sqlite3\n */\n case \"better-sqlite3\":\n return require(\"better-sqlite3\")\n\n /**\n * sqlite\n */\n case \"sqlite3\":\n return require(\"sqlite3\")\n\n /**\n * sql.js\n */\n case \"sql.js\":\n return require(\"sql.js\")\n\n /**\n * sqlserver\n */\n case \"mssql\":\n return require(\"mssql\")\n\n /**\n * react-native-sqlite\n */\n case \"react-native-sqlite-storage\":\n return require(\"react-native-sqlite-storage\")\n }\n } catch (err) {\n return require(path.resolve(\n process.cwd() + \"/node_modules/\" + name,\n ))\n }\n\n // If nothing above matched and we get here, the package was not listed within PlatformTools\n // and is an Invalid Package. To make it explicit that this is NOT the intended use case for\n // PlatformTools.load - it's not just a way to replace `require` all willy-nilly - let's throw\n // an error.\n throw new TypeError(`Invalid Package for PlatformTools.load: ${name}`)\n }\n\n /**\n * Normalizes given path. Does \"path.normalize\".\n */\n static pathNormalize(pathStr: string): string {\n return path.normalize(pathStr)\n }\n\n /**\n * Gets file extension. Does \"path.extname\".\n */\n static pathExtname(pathStr: string): string {\n return path.extname(pathStr)\n }\n\n /**\n * Resolved given path. Does \"path.resolve\".\n */\n static pathResolve(pathStr: string): string {\n return path.resolve(pathStr)\n }\n\n /**\n * Synchronously checks if file exist. Does \"fs.existsSync\".\n */\n static fileExist(pathStr: string): boolean {\n return fs.existsSync(pathStr)\n }\n\n static readFileSync(filename: string): Buffer {\n return fs.readFileSync(filename)\n }\n\n static appendFileSync(filename: string, data: any): void {\n fs.appendFileSync(filename, data)\n }\n\n static async writeFile(path: string, data: any): Promise<void> {\n return new Promise<void>((ok, fail) => {\n fs.writeFile(path, data, (err) => {\n if (err) fail(err)\n ok()\n })\n })\n }\n\n /**\n * Loads a dotenv file into the environment variables.\n *\n * @param path The file to load as a dotenv configuration\n */\n static dotenv(pathStr: string): void {\n dotenv.config({ path: pathStr })\n }\n\n /**\n * Gets environment variable.\n */\n static getEnvVariable(name: string): any {\n return process.env[name]\n }\n\n /**\n * Highlights sql string to be print in the console.\n */\n static highlightSql(sql: string) {\n const theme: Theme = {\n keyword: chalk.blueBright,\n literal: chalk.blueBright,\n string: chalk.white,\n type: chalk.magentaBright,\n built_in: chalk.magentaBright,\n comment: chalk.gray,\n }\n return highlight(sql, { theme: theme, language: \"sql\" })\n }\n\n /**\n * Highlights json string to be print in the console.\n */\n static highlightJson(json: string) {\n return highlight(json, { language: \"json\" })\n }\n\n /**\n * Logging functions needed by AdvancedConsoleLogger\n */\n static logInfo(prefix: string, info: any) {\n console.log(chalk.gray.underline(prefix), info)\n }\n\n static logError(prefix: string, error: any) {\n console.log(chalk.underline.red(prefix), error)\n }\n\n static logWarn(prefix: string, warning: any) {\n console.log(chalk.underline.yellow(prefix), warning)\n }\n\n static log(message: string) {\n console.log(chalk.underline(message))\n }\n\n static warn(message: string) {\n return chalk.yellow(message)\n }\n\n static logCmdErr(prefix: string, err?: any) {\n console.log(chalk.black.bgRed(prefix))\n if (err) console.error(err)\n }\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/platform/PlatformTools.ts"],"names":[],"mappings":"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","file":"PlatformTools.js","sourcesContent":["import * as path from \"path\"\nimport * as fs from \"fs\"\nimport dotenv from \"dotenv\"\nimport chalk from \"chalk\"\nimport { highlight, Theme } from \"cli-highlight\"\n\nexport { ReadStream } from \"fs\"\nexport { EventEmitter } from \"events\"\nexport { Readable, Writable } from \"stream\"\n\n/**\n * Platform-specific tools.\n */\nexport class PlatformTools {\n /**\n * Type of the currently running platform.\n */\n static type: \"browser\" | \"node\" = \"node\"\n\n /**\n * Gets global variable where global stuff can be stored.\n */\n static getGlobalVariable(): any {\n return global\n }\n\n /**\n * Loads (\"require\"-s) given file or package.\n * This operation only supports on node platform\n */\n static load(name: string): any {\n // if name is not absolute or relative, then try to load package from the node_modules of the directory we are currently in\n // this is useful when we are using typeorm package globally installed and it accesses drivers\n // that are not installed globally\n\n try {\n // switch case to explicit require statements for webpack compatibility.\n switch (name) {\n /**\n * spanner\n */\n case \"spanner\":\n return require(\"@google-cloud/spanner\")\n\n /**\n * mongodb\n */\n case \"mongodb\":\n return require(\"mongodb\")\n\n /**\n * hana\n */\n case \"@sap/hana-client\":\n return require(\"@sap/hana-client\")\n\n case \"hdb-pool\":\n return require(\"hdb-pool\")\n\n /**\n * mysql\n */\n case \"mysql\":\n return require(\"mysql\")\n\n case \"mysql2\":\n return require(\"mysql2\")\n\n /**\n * oracle\n */\n case \"oracledb\":\n return require(\"oracledb\")\n\n /**\n * postgres\n */\n case \"pg\":\n return require(\"pg\")\n\n case \"pg-native\":\n return require(\"pg-native\")\n\n case \"pg-query-stream\":\n return require(\"pg-query-stream\")\n\n case \"typeorm-aurora-data-api-driver\":\n return require(\"typeorm-aurora-data-api-driver\")\n\n /**\n * redis\n */\n case \"redis\":\n return require(\"redis\")\n\n case \"ioredis\":\n return require(\"ioredis\")\n\n /**\n * better-sqlite3\n */\n case \"better-sqlite3\":\n return require(\"better-sqlite3\")\n\n /**\n * sqlite\n */\n case \"sqlite3\":\n return require(\"sqlite3\")\n\n /**\n * sql.js\n */\n case \"sql.js\":\n return require(\"sql.js\")\n\n /**\n * sqlserver\n */\n case \"mssql\":\n return require(\"mssql\")\n\n /**\n * react-native-sqlite\n */\n case \"react-native-sqlite-storage\":\n return require(\"react-native-sqlite-storage\")\n }\n } catch (err) {\n return require(path.resolve(\n process.cwd() + \"/node_modules/\" + name,\n ))\n }\n\n // If nothing above matched and we get here, the package was not listed within PlatformTools\n // and is an Invalid Package. To make it explicit that this is NOT the intended use case for\n // PlatformTools.load - it's not just a way to replace `require` all willy-nilly - let's throw\n // an error.\n throw new TypeError(`Invalid Package for PlatformTools.load: ${name}`)\n }\n\n /**\n * Normalizes given path. Does \"path.normalize\".\n */\n static pathNormalize(pathStr: string): string {\n return path.normalize(pathStr)\n }\n\n /**\n * Gets file extension. Does \"path.extname\".\n */\n static pathExtname(pathStr: string): string {\n return path.extname(pathStr)\n }\n\n /**\n * Resolved given path. Does \"path.resolve\".\n */\n static pathResolve(pathStr: string): string {\n return path.resolve(pathStr)\n }\n\n /**\n * Synchronously checks if file exist. Does \"fs.existsSync\".\n */\n static fileExist(pathStr: string): boolean {\n return fs.existsSync(pathStr)\n }\n\n static readFileSync(filename: string): Buffer {\n return fs.readFileSync(filename)\n }\n\n static appendFileSync(filename: string, data: any): void {\n fs.appendFileSync(filename, data)\n }\n\n static async writeFile(path: string, data: any): Promise<void> {\n return new Promise<void>((ok, fail) => {\n fs.writeFile(path, data, (err) => {\n if (err) fail(err)\n ok()\n })\n })\n }\n\n /**\n * Loads a dotenv file into the environment variables.\n *\n * @param path The file to load as a dotenv configuration\n */\n static dotenv(pathStr: string): void {\n dotenv.config({ path: pathStr })\n }\n\n /**\n * Gets environment variable.\n */\n static getEnvVariable(name: string): any {\n return process.env[name]\n }\n\n /**\n * Highlights sql string to be print in the console.\n */\n static highlightSql(sql: string) {\n const theme: Theme = {\n keyword: chalk.blueBright,\n literal: chalk.blueBright,\n string: chalk.white,\n type: chalk.magentaBright,\n built_in: chalk.magentaBright,\n comment: chalk.gray,\n }\n return highlight(sql, { theme: theme, language: \"sql\" })\n }\n\n /**\n * Highlights json string to be print in the console.\n */\n static highlightJson(json: string) {\n return highlight(json, { language: \"json\" })\n }\n\n /**\n * Logging functions needed by AdvancedConsoleLogger\n */\n static logInfo(prefix: string, info: any) {\n console.log(chalk.gray.underline(prefix), info)\n }\n\n static logError(prefix: string, error: any) {\n console.log(chalk.underline.red(prefix), error)\n }\n\n static logWarn(prefix: string, warning: any) {\n console.log(chalk.underline.yellow(prefix), warning)\n }\n\n static log(message: string) {\n console.log(chalk.underline(message))\n }\n\n static warn(message: string) {\n return chalk.yellow(message)\n }\n\n static logCmdErr(prefix: string, err?: any) {\n console.log(chalk.black.bgRed(prefix))\n if (err) console.error(err)\n }\n}\n"],"sourceRoot":".."}
@@ -400,6 +400,7 @@ class InsertQueryBuilder extends QueryBuilder_1.QueryBuilder {
400
400
  // for Oracle we return auto-increment column as well because Oracle does not support DEFAULT VALUES expression
401
401
  if (column.isGenerated &&
402
402
  column.generationStrategy === "increment" &&
403
+ !(this.connection.driver.options.type === "spanner") &&
403
404
  !(this.connection.driver.options.type === "oracle") &&
404
405
  !DriverUtils_1.DriverUtils.isSQLiteFamily(this.connection.driver) &&
405
406
  !DriverUtils_1.DriverUtils.isMySQLFamily(this.connection.driver) &&
@@ -515,7 +516,8 @@ class InsertQueryBuilder extends QueryBuilder_1.QueryBuilder {
515
516
  if ((this.connection.driver.options.type === "oracle" &&
516
517
  valueSets.length > 1) ||
517
518
  DriverUtils_1.DriverUtils.isSQLiteFamily(this.connection.driver) ||
518
- this.connection.driver.options.type === "sap") {
519
+ this.connection.driver.options.type === "sap" ||
520
+ this.connection.driver.options.type === "spanner") {
519
521
  // unfortunately sqlite does not support DEFAULT expression in INSERT queries
520
522
  if (column.default !== undefined &&
521
523
  column.default !== null) {
@@ -530,6 +532,10 @@ class InsertQueryBuilder extends QueryBuilder_1.QueryBuilder {
530
532
  else {
531
533
  expression += "DEFAULT";
532
534
  }
535
+ }
536
+ else if (value === null &&
537
+ this.connection.driver.options.type === "spanner") {
538
+ expression += "NULL";
533
539
  // support for SQL expressions in queries
534
540
  }
535
541
  else if (typeof value === "function") {
@@ -637,13 +643,19 @@ class InsertQueryBuilder extends QueryBuilder_1.QueryBuilder {
637
643
  // if value for this column was not provided then insert default value
638
644
  }
639
645
  else if (value === undefined) {
640
- if (DriverUtils_1.DriverUtils.isSQLiteFamily(this.connection.driver) ||
641
- this.connection.driver.options.type === "sap") {
646
+ if ((this.connection.driver.options.type === "oracle" &&
647
+ valueSets.length > 1) ||
648
+ DriverUtils_1.DriverUtils.isSQLiteFamily(this.connection.driver) ||
649
+ this.connection.driver.options.type === "sap" ||
650
+ this.connection.driver.options.type === "spanner") {
642
651
  expression += "NULL";
643
652
  }
644
653
  else {
645
654
  expression += "DEFAULT";
646
655
  }
656
+ }
657
+ else if (value === null &&
658
+ this.connection.driver.options.type === "spanner") {
647
659
  // just any other regular value
648
660
  }
649
661
  else {