typeorm 0.3.27-dev.fa3cd43 → 0.3.28-dev.02e7b71

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 (197) hide show
  1. package/README.md +21 -5
  2. package/browser/data-source/BaseDataSourceOptions.d.ts +18 -0
  3. package/browser/data-source/BaseDataSourceOptions.js.map +1 -1
  4. package/browser/decorator/columns/Column.d.ts +7 -7
  5. package/browser/decorator/columns/Column.js +1 -1
  6. package/browser/decorator/columns/Column.js.map +1 -1
  7. package/browser/decorator/options/ColumnNumericOptions.d.ts +8 -1
  8. package/browser/decorator/options/ColumnNumericOptions.js.map +1 -1
  9. package/browser/decorator/options/ColumnOptions.d.ts +6 -0
  10. package/browser/decorator/options/ColumnOptions.js.map +1 -1
  11. package/browser/decorator/options/ColumnUnsignedOptions.d.ts +28 -0
  12. package/browser/decorator/options/ColumnUnsignedOptions.js +3 -0
  13. package/browser/decorator/options/ColumnUnsignedOptions.js.map +1 -0
  14. package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.d.ts +3 -0
  15. package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
  16. package/browser/decorator/tree/TreeChildren.d.ts +1 -1
  17. package/browser/decorator/tree/TreeChildren.js +1 -1
  18. package/browser/decorator/tree/TreeChildren.js.map +1 -1
  19. package/browser/decorator/tree/TreeParent.d.ts +1 -1
  20. package/browser/decorator/tree/TreeParent.js +1 -1
  21. package/browser/decorator/tree/TreeParent.js.map +1 -1
  22. package/browser/driver/aurora-mysql/AuroraMysqlDriver.d.ts +15 -19
  23. package/browser/driver/aurora-mysql/AuroraMysqlDriver.js +7 -27
  24. package/browser/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  25. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts +9 -9
  26. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js +17 -15
  27. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
  28. package/browser/driver/cockroachdb/CockroachDriver.d.ts +1 -1
  29. package/browser/driver/cockroachdb/CockroachDriver.js +1 -1
  30. package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
  31. package/browser/driver/mongodb/MongoConnectionOptions.d.ts +16 -0
  32. package/browser/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  33. package/browser/driver/mongodb/MongoDriver.js +5 -0
  34. package/browser/driver/mongodb/MongoDriver.js.map +1 -1
  35. package/browser/driver/mongodb/MongoQueryRunner.d.ts +4 -4
  36. package/browser/driver/mongodb/MongoQueryRunner.js +5 -5
  37. package/browser/driver/mongodb/MongoQueryRunner.js.map +1 -1
  38. package/browser/driver/mongodb/typings.d.ts +6 -1
  39. package/browser/driver/mongodb/typings.js.map +1 -1
  40. package/browser/driver/mysql/MysqlDriver.d.ts +23 -19
  41. package/browser/driver/mysql/MysqlDriver.js +63 -29
  42. package/browser/driver/mysql/MysqlDriver.js.map +1 -1
  43. package/browser/driver/mysql/MysqlQueryRunner.d.ts +3 -2
  44. package/browser/driver/mysql/MysqlQueryRunner.js +14 -8
  45. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  46. package/browser/driver/oracle/OracleQueryRunner.d.ts +2 -2
  47. package/browser/driver/oracle/OracleQueryRunner.js +2 -2
  48. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  49. package/browser/driver/postgres/PostgresDriver.d.ts +2 -2
  50. package/browser/driver/postgres/PostgresDriver.js +42 -3
  51. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  52. package/browser/driver/postgres/PostgresQueryRunner.js +7 -0
  53. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  54. package/browser/driver/sap/SapDriver.js +7 -1
  55. package/browser/driver/sap/SapDriver.js.map +1 -1
  56. package/browser/driver/sap/SapQueryRunner.d.ts +1 -1
  57. package/browser/driver/sap/SapQueryRunner.js +1 -1
  58. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  59. package/browser/driver/spanner/SpannerConnectionOptions.d.ts +0 -5
  60. package/browser/driver/spanner/SpannerConnectionOptions.js.map +1 -1
  61. package/browser/driver/spanner/SpannerDriver.d.ts +0 -4
  62. package/browser/driver/spanner/SpannerDriver.js +0 -4
  63. package/browser/driver/spanner/SpannerDriver.js.map +1 -1
  64. package/browser/driver/spanner/SpannerQueryRunner.d.ts +1 -1
  65. package/browser/driver/spanner/SpannerQueryRunner.js +1 -1
  66. package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -1
  67. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +2 -2
  68. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +2 -2
  69. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  70. package/browser/driver/sqlserver/MssqlParameter.d.ts +1 -0
  71. package/browser/driver/sqlserver/MssqlParameter.js.map +1 -1
  72. package/browser/driver/sqlserver/SqlServerConnectionOptions.d.ts +5 -0
  73. package/browser/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
  74. package/browser/driver/sqlserver/SqlServerDriver.js +26 -1
  75. package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
  76. package/browser/driver/sqlserver/SqlServerQueryRunner.d.ts +1 -1
  77. package/browser/driver/sqlserver/SqlServerQueryRunner.js +17 -6
  78. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  79. package/browser/driver/types/ColumnTypes.d.ts +4 -4
  80. package/browser/driver/types/ColumnTypes.js.map +1 -1
  81. package/browser/entity-schema/EntitySchemaOptions.d.ts +2 -0
  82. package/browser/entity-schema/EntitySchemaOptions.js.map +1 -1
  83. package/browser/entity-schema/EntitySchemaTransformer.js +9 -0
  84. package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
  85. package/browser/find-options/FindOptionsUtils.d.ts +0 -161
  86. package/browser/find-options/FindOptionsUtils.js +0 -161
  87. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  88. package/browser/metadata-builder/EntityMetadataBuilder.js +1 -8
  89. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  90. package/browser/query-builder/QueryBuilder.js +26 -12
  91. package/browser/query-builder/QueryBuilder.js.map +1 -1
  92. package/browser/query-builder/SelectQueryBuilder.js +42 -35
  93. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  94. package/browser/query-runner/QueryRunner.d.ts +1 -1
  95. package/browser/query-runner/QueryRunner.js.map +1 -1
  96. package/commands/InitCommand.js +24 -16
  97. package/commands/InitCommand.js.map +1 -1
  98. package/data-source/BaseDataSourceOptions.d.ts +18 -0
  99. package/data-source/BaseDataSourceOptions.js.map +1 -1
  100. package/decorator/columns/Column.d.ts +7 -7
  101. package/decorator/columns/Column.js +1 -1
  102. package/decorator/columns/Column.js.map +1 -1
  103. package/decorator/options/ColumnNumericOptions.d.ts +8 -1
  104. package/decorator/options/ColumnNumericOptions.js.map +1 -1
  105. package/decorator/options/ColumnOptions.d.ts +6 -0
  106. package/decorator/options/ColumnOptions.js.map +1 -1
  107. package/decorator/options/ColumnUnsignedOptions.d.ts +28 -0
  108. package/decorator/options/{ColumnWithWidthOptions.js → ColumnUnsignedOptions.js} +1 -1
  109. package/decorator/options/ColumnUnsignedOptions.js.map +1 -0
  110. package/decorator/options/PrimaryGeneratedColumnNumericOptions.d.ts +3 -0
  111. package/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
  112. package/decorator/tree/TreeChildren.d.ts +1 -1
  113. package/decorator/tree/TreeChildren.js +1 -1
  114. package/decorator/tree/TreeChildren.js.map +1 -1
  115. package/decorator/tree/TreeParent.d.ts +1 -1
  116. package/decorator/tree/TreeParent.js +1 -1
  117. package/decorator/tree/TreeParent.js.map +1 -1
  118. package/driver/aurora-mysql/AuroraMysqlDriver.d.ts +15 -19
  119. package/driver/aurora-mysql/AuroraMysqlDriver.js +7 -27
  120. package/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  121. package/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts +9 -9
  122. package/driver/aurora-mysql/AuroraMysqlQueryRunner.js +17 -15
  123. package/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
  124. package/driver/cockroachdb/CockroachDriver.d.ts +1 -1
  125. package/driver/cockroachdb/CockroachDriver.js +1 -1
  126. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  127. package/driver/mongodb/MongoConnectionOptions.d.ts +16 -0
  128. package/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  129. package/driver/mongodb/MongoDriver.js +5 -0
  130. package/driver/mongodb/MongoDriver.js.map +1 -1
  131. package/driver/mongodb/MongoQueryRunner.d.ts +4 -4
  132. package/driver/mongodb/MongoQueryRunner.js +5 -5
  133. package/driver/mongodb/MongoQueryRunner.js.map +1 -1
  134. package/driver/mongodb/typings.d.ts +6 -1
  135. package/driver/mongodb/typings.js.map +1 -1
  136. package/driver/mysql/MysqlDriver.d.ts +23 -19
  137. package/driver/mysql/MysqlDriver.js +63 -29
  138. package/driver/mysql/MysqlDriver.js.map +1 -1
  139. package/driver/mysql/MysqlQueryRunner.d.ts +3 -2
  140. package/driver/mysql/MysqlQueryRunner.js +14 -8
  141. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  142. package/driver/oracle/OracleQueryRunner.d.ts +2 -2
  143. package/driver/oracle/OracleQueryRunner.js +2 -2
  144. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  145. package/driver/postgres/PostgresDriver.d.ts +2 -2
  146. package/driver/postgres/PostgresDriver.js +42 -3
  147. package/driver/postgres/PostgresDriver.js.map +1 -1
  148. package/driver/postgres/PostgresQueryRunner.js +7 -0
  149. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  150. package/driver/sap/SapDriver.js +8 -2
  151. package/driver/sap/SapDriver.js.map +1 -1
  152. package/driver/sap/SapQueryRunner.d.ts +1 -1
  153. package/driver/sap/SapQueryRunner.js +1 -1
  154. package/driver/sap/SapQueryRunner.js.map +1 -1
  155. package/driver/spanner/SpannerConnectionOptions.d.ts +0 -5
  156. package/driver/spanner/SpannerConnectionOptions.js.map +1 -1
  157. package/driver/spanner/SpannerDriver.d.ts +0 -4
  158. package/driver/spanner/SpannerDriver.js +0 -4
  159. package/driver/spanner/SpannerDriver.js.map +1 -1
  160. package/driver/spanner/SpannerQueryRunner.d.ts +1 -1
  161. package/driver/spanner/SpannerQueryRunner.js +1 -1
  162. package/driver/spanner/SpannerQueryRunner.js.map +1 -1
  163. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +2 -2
  164. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +2 -2
  165. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  166. package/driver/sqlserver/MssqlParameter.d.ts +1 -0
  167. package/driver/sqlserver/MssqlParameter.js.map +1 -1
  168. package/driver/sqlserver/SqlServerConnectionOptions.d.ts +5 -0
  169. package/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
  170. package/driver/sqlserver/SqlServerDriver.js +26 -1
  171. package/driver/sqlserver/SqlServerDriver.js.map +1 -1
  172. package/driver/sqlserver/SqlServerQueryRunner.d.ts +1 -1
  173. package/driver/sqlserver/SqlServerQueryRunner.js +17 -6
  174. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  175. package/driver/types/ColumnTypes.d.ts +4 -4
  176. package/driver/types/ColumnTypes.js.map +1 -1
  177. package/entity-schema/EntitySchemaOptions.d.ts +2 -0
  178. package/entity-schema/EntitySchemaOptions.js.map +1 -1
  179. package/entity-schema/EntitySchemaTransformer.js +9 -0
  180. package/entity-schema/EntitySchemaTransformer.js.map +1 -1
  181. package/find-options/FindOptionsUtils.d.ts +0 -161
  182. package/find-options/FindOptionsUtils.js +0 -161
  183. package/find-options/FindOptionsUtils.js.map +1 -1
  184. package/metadata-builder/EntityMetadataBuilder.js +1 -8
  185. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  186. package/package.json +1 -1
  187. package/query-builder/QueryBuilder.js +26 -12
  188. package/query-builder/QueryBuilder.js.map +1 -1
  189. package/query-builder/SelectQueryBuilder.js +42 -35
  190. package/query-builder/SelectQueryBuilder.js.map +1 -1
  191. package/query-runner/QueryRunner.d.ts +1 -1
  192. package/query-runner/QueryRunner.js.map +1 -1
  193. package/browser/decorator/options/ColumnWithWidthOptions.d.ts +0 -19
  194. package/browser/decorator/options/ColumnWithWidthOptions.js +0 -3
  195. package/browser/decorator/options/ColumnWithWidthOptions.js.map +0 -1
  196. package/decorator/options/ColumnWithWidthOptions.d.ts +0 -19
  197. package/decorator/options/ColumnWithWidthOptions.js.map +0 -1
@@ -263,7 +263,7 @@ export interface QueryRunner {
263
263
  */
264
264
  createUniqueConstraints(table: Table | string, uniqueConstraints: TableUnique[]): Promise<void>;
265
265
  /**
266
- * Drops an unique constraint.
266
+ * Drops a unique constraint.
267
267
  */
268
268
  dropUniqueConstraint(table: Table | string, uniqueOrName: TableUnique | string): Promise<void>;
269
269
  /**
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/query-runner/QueryRunner.ts"],"names":[],"mappings":"","file":"QueryRunner.js","sourcesContent":["import { TableColumn } from \"../schema-builder/table/TableColumn\"\nimport { Table } from \"../schema-builder/table/Table\"\nimport { TableForeignKey } from \"../schema-builder/table/TableForeignKey\"\nimport { TableIndex } from \"../schema-builder/table/TableIndex\"\nimport { DataSource } from \"../data-source/DataSource\"\nimport { ReadStream } from \"../platform/PlatformTools\"\nimport { EntityManager } from \"../entity-manager/EntityManager\"\nimport { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport { SqlInMemory } from \"../driver/SqlInMemory\"\nimport { TableUnique } from \"../schema-builder/table/TableUnique\"\nimport { View } from \"../schema-builder/view/View\"\nimport { Broadcaster } from \"../subscriber/Broadcaster\"\nimport { TableCheck } from \"../schema-builder/table/TableCheck\"\nimport { IsolationLevel } from \"../driver/types/IsolationLevel\"\nimport { TableExclusion } from \"../schema-builder/table/TableExclusion\"\nimport { QueryResult } from \"./QueryResult\"\nimport { ReplicationMode } from \"../driver/types/ReplicationMode\"\n\n/**\n * Runs queries on a single database connection.\n */\nexport interface QueryRunner {\n /**\n * Connection used by this query runner.\n */\n readonly connection: DataSource\n\n /**\n * Broadcaster used on this query runner to broadcast entity events.\n */\n readonly broadcaster: Broadcaster\n\n /**\n * Entity manager working only with this query runner.\n */\n readonly manager: EntityManager\n\n /**\n * Indicates if connection for this query runner is released.\n * Once its released, query runner cannot run queries anymore.\n */\n readonly isReleased: boolean\n\n /**\n * Indicates if transaction is in progress.\n */\n readonly isTransactionActive: boolean\n\n /**\n * Stores temporarily user data.\n * Useful for sharing data with subscribers.\n */\n data: ObjectLiteral\n\n /**\n * All synchronized tables in the database.\n *\n * @deprecated Call `getTables()`\n */\n loadedTables: Table[]\n\n /**\n * All synchronized views in the database.\n *\n * @deprecated Call `getViews()`\n */\n loadedViews: View[]\n\n /**\n * Creates/uses database connection from the connection pool to perform further operations.\n * Returns obtained database connection.\n */\n connect(): Promise<any>\n\n /**\n * Called before migrations are run.\n */\n beforeMigration(): Promise<void>\n\n /**\n * Called after migrations are run.\n */\n afterMigration(): Promise<void>\n\n /**\n * Releases used database connection.\n * You cannot use query runner methods after connection is released.\n */\n release(): Promise<void>\n\n /**\n * Removes all tables from the currently connected database.\n * Be careful with using this method and avoid using it in production or migrations\n * (because it can clear all your database).\n */\n clearDatabase(database?: string): Promise<void>\n\n /**\n * Starts transaction.\n */\n startTransaction(isolationLevel?: IsolationLevel): Promise<void>\n\n /**\n * Commits transaction.\n * Error will be thrown if transaction was not started.\n */\n commitTransaction(): Promise<void>\n\n /**\n * Rollbacks transaction.\n * Error will be thrown if transaction was not started.\n */\n rollbackTransaction(): Promise<void>\n\n /**\n * Executes a given SQL query and returns raw database results.\n */\n query(\n query: string,\n parameters: any[] | undefined,\n useStructuredResult: true,\n ): Promise<QueryResult>\n\n /**\n * Executes a given SQL query and returns raw database results.\n */\n query(query: string, parameters?: any[]): Promise<any>\n\n /**\n * Tagged template function that executes raw SQL query and returns raw database results.\n * Template expressions are automatically transformed into database parameters.\n * Raw query execution is supported only by relational databases (MongoDB is not supported).\n * Note: Don't call this as a regular function, it is meant to be used with backticks to tag a template literal.\n * Example: queryRunner.sql`SELECT * FROM table_name WHERE id = ${id}`\n */\n sql<T = any>(\n strings: TemplateStringsArray,\n ...values: unknown[]\n ): Promise<T>\n\n /**\n * Returns raw data stream.\n */\n stream(\n query: string,\n parameters?: any[],\n onEnd?: Function,\n onError?: Function,\n ): Promise<ReadStream>\n\n /**\n * Returns all available database names including system databases.\n */\n getDatabases(): Promise<string[]>\n\n /**\n * Returns all available schema names including system schemas.\n * If database parameter specified, returns schemas of that database.\n * Useful for SQLServer and Postgres only.\n */\n getSchemas(database?: string): Promise<string[]>\n\n /**\n * Loads a table by a given name from the database.\n */\n getTable(tablePath: string): Promise<Table | undefined>\n\n /**\n * Loads all tables from the database and returns them.\n */\n getTables(tablePaths?: string[]): Promise<Table[]>\n\n /**\n * Loads a view by a given name from the database.\n */\n getView(viewPath: string): Promise<View | undefined>\n\n /**\n * Loads all views from the database and returns them.\n */\n getViews(viewPaths?: string[]): Promise<View[]>\n\n /**\n * Returns replication mode (ex: `master` or `slave`).\n */\n getReplicationMode(): ReplicationMode\n\n /**\n * Checks if a database with the given name exist.\n */\n hasDatabase(database: string): Promise<boolean>\n\n /**\n * Loads currently using database\n */\n getCurrentDatabase(): Promise<string | undefined>\n\n /**\n * Checks if a schema with the given name exist.\n */\n hasSchema(schema: string): Promise<boolean>\n\n /**\n * Loads currently using database schema\n */\n getCurrentSchema(): Promise<string | undefined>\n\n /**\n * Checks if a table with the given name exist.\n */\n hasTable(table: Table | string): Promise<boolean>\n\n /**\n * Checks if a column exist in the table.\n */\n hasColumn(table: Table | string, columnName: string): Promise<boolean>\n\n /**\n * Creates a new database.\n */\n createDatabase(database: string, ifNotExist?: boolean): Promise<void>\n\n /**\n * Drops database.\n */\n dropDatabase(database: string, ifExist?: boolean): Promise<void>\n\n /**\n * Creates a new table schema.\n */\n createSchema(schemaPath: string, ifNotExist?: boolean): Promise<void>\n\n /**\n * Drops table schema.\n * For SqlServer can accept schema path (e.g. 'dbName.schemaName') as parameter.\n * If schema path passed, it will drop schema in specified database.\n */\n dropSchema(\n schemaPath: string,\n ifExist?: boolean,\n isCascade?: boolean,\n ): Promise<void>\n\n /**\n * Creates a new table.\n */\n createTable(\n table: Table,\n ifNotExist?: boolean,\n createForeignKeys?: boolean,\n createIndices?: boolean,\n ): Promise<void>\n\n /**\n * Drops a table.\n */\n dropTable(\n table: Table | string,\n ifExist?: boolean,\n dropForeignKeys?: boolean,\n dropIndices?: boolean,\n ): Promise<void>\n\n /**\n * Creates a new view.\n */\n createView(\n view: View,\n syncWithMetadata?: boolean,\n oldView?: View,\n ): Promise<void>\n\n /**\n * Drops a view.\n */\n dropView(view: View | string): Promise<void>\n\n /**\n * Renames a table.\n */\n renameTable(\n oldTableOrName: Table | string,\n newTableName: string,\n ): Promise<void>\n\n /**\n * Change table comment. Only supports MySQL and MariaDB\n */\n changeTableComment(\n tableOrName: Table | string,\n comment?: string,\n ): Promise<void>\n\n /**\n * Adds a new column.\n */\n addColumn(table: Table | string, column: TableColumn): Promise<void>\n\n /**\n * Adds new columns.\n */\n addColumns(table: Table | string, columns: TableColumn[]): Promise<void>\n\n /**\n * Renames a column.\n */\n renameColumn(\n table: Table | string,\n oldColumnOrName: TableColumn | string,\n newColumnOrName: TableColumn | string,\n ): Promise<void>\n\n /**\n * Changes a column in the table.\n */\n changeColumn(\n table: Table | string,\n oldColumn: TableColumn | string,\n newColumn: TableColumn,\n ): Promise<void>\n\n /**\n * Changes columns in the table.\n */\n changeColumns(\n table: Table | string,\n changedColumns: { oldColumn: TableColumn; newColumn: TableColumn }[],\n ): Promise<void>\n\n /**\n * Drops a column in the table.\n */\n dropColumn(\n table: Table | string,\n column: TableColumn | string,\n ): Promise<void>\n\n /**\n * Drops columns in the table.\n */\n dropColumns(\n table: Table | string,\n columns: TableColumn[] | string[],\n ): Promise<void>\n\n /**\n * Creates a new primary key.\n */\n createPrimaryKey(\n table: Table | string,\n columnNames: string[],\n constraintName?: string,\n ): Promise<void>\n\n /**\n * Updates composite primary keys.\n */\n updatePrimaryKeys(\n table: Table | string,\n columns: TableColumn[],\n ): Promise<void>\n\n /**\n * Drops a primary key.\n */\n dropPrimaryKey(\n table: Table | string,\n constraintName?: string,\n ): Promise<void>\n\n /**\n * Creates a new unique constraint.\n */\n createUniqueConstraint(\n table: Table | string,\n uniqueConstraint: TableUnique,\n ): Promise<void>\n\n /**\n * Creates new unique constraints.\n */\n createUniqueConstraints(\n table: Table | string,\n uniqueConstraints: TableUnique[],\n ): Promise<void>\n\n /**\n * Drops an unique constraint.\n */\n dropUniqueConstraint(\n table: Table | string,\n uniqueOrName: TableUnique | string,\n ): Promise<void>\n\n /**\n * Drops unique constraints.\n */\n dropUniqueConstraints(\n table: Table | string,\n uniqueConstraints: TableUnique[],\n ): Promise<void>\n\n /**\n * Creates a new check constraint.\n */\n createCheckConstraint(\n table: Table | string,\n checkConstraint: TableCheck,\n ): Promise<void>\n\n /**\n * Creates new check constraints.\n */\n createCheckConstraints(\n table: Table | string,\n checkConstraints: TableCheck[],\n ): Promise<void>\n\n /**\n * Drops a check constraint.\n */\n dropCheckConstraint(\n table: Table | string,\n checkOrName: TableCheck | string,\n ): Promise<void>\n\n /**\n * Drops check constraints.\n */\n dropCheckConstraints(\n table: Table | string,\n checkConstraints: TableCheck[],\n ): Promise<void>\n\n /**\n * Creates a new exclusion constraint.\n */\n createExclusionConstraint(\n table: Table | string,\n exclusionConstraint: TableExclusion,\n ): Promise<void>\n\n /**\n * Creates new exclusion constraints.\n */\n createExclusionConstraints(\n table: Table | string,\n exclusionConstraints: TableExclusion[],\n ): Promise<void>\n\n /**\n * Drops a exclusion constraint.\n */\n dropExclusionConstraint(\n table: Table | string,\n exclusionOrName: TableExclusion | string,\n ): Promise<void>\n\n /**\n * Drops exclusion constraints.\n */\n dropExclusionConstraints(\n table: Table | string,\n exclusionConstraints: TableExclusion[],\n ): Promise<void>\n\n /**\n * Creates a new foreign key.\n */\n createForeignKey(\n table: Table | string,\n foreignKey: TableForeignKey,\n ): Promise<void>\n\n /**\n * Creates new foreign keys.\n */\n createForeignKeys(\n table: Table | string,\n foreignKeys: TableForeignKey[],\n ): Promise<void>\n\n /**\n * Drops a foreign key.\n */\n dropForeignKey(\n table: Table | string,\n foreignKeyOrName: TableForeignKey | string,\n ): Promise<void>\n\n /**\n * Drops foreign keys.\n */\n dropForeignKeys(\n table: Table | string,\n foreignKeys: TableForeignKey[],\n ): Promise<void>\n\n /**\n * Creates a new index.\n */\n createIndex(table: Table | string, index: TableIndex): Promise<void>\n\n /**\n * Creates new indices.\n */\n createIndices(table: Table | string, indices: TableIndex[]): Promise<void>\n\n /**\n * Drops an index.\n */\n dropIndex(table: Table | string, index: TableIndex | string): Promise<void>\n\n /**\n * Drops indices.\n */\n dropIndices(table: Table | string, indices: TableIndex[]): Promise<void>\n\n /**\n * Clears all table contents.\n * Note: this operation uses SQL's TRUNCATE query which cannot be reverted in transactions.\n */\n clearTable(tableName: string): Promise<void>\n\n /**\n * Enables special query runner mode in which sql queries won't be executed,\n * instead they will be memorized into a special variable inside query runner.\n * You can get memorized sql using getMemorySql() method.\n */\n enableSqlMemory(): void\n\n /**\n * Disables special query runner mode in which sql queries won't be executed\n * started by calling enableSqlMemory() method.\n *\n * Previously memorized sql will be flushed.\n */\n disableSqlMemory(): void\n\n /**\n * Flushes all memorized sqls.\n */\n clearSqlMemory(): void\n\n /**\n * Gets sql stored in the memory. Parameters in the sql are already replaced.\n */\n getMemorySql(): SqlInMemory\n\n /**\n * Executes up sql queries.\n */\n executeMemoryUpSql(): Promise<void>\n\n /**\n * Executes down sql queries.\n */\n executeMemoryDownSql(): Promise<void>\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/query-runner/QueryRunner.ts"],"names":[],"mappings":"","file":"QueryRunner.js","sourcesContent":["import { TableColumn } from \"../schema-builder/table/TableColumn\"\nimport { Table } from \"../schema-builder/table/Table\"\nimport { TableForeignKey } from \"../schema-builder/table/TableForeignKey\"\nimport { TableIndex } from \"../schema-builder/table/TableIndex\"\nimport { DataSource } from \"../data-source/DataSource\"\nimport { ReadStream } from \"../platform/PlatformTools\"\nimport { EntityManager } from \"../entity-manager/EntityManager\"\nimport { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport { SqlInMemory } from \"../driver/SqlInMemory\"\nimport { TableUnique } from \"../schema-builder/table/TableUnique\"\nimport { View } from \"../schema-builder/view/View\"\nimport { Broadcaster } from \"../subscriber/Broadcaster\"\nimport { TableCheck } from \"../schema-builder/table/TableCheck\"\nimport { IsolationLevel } from \"../driver/types/IsolationLevel\"\nimport { TableExclusion } from \"../schema-builder/table/TableExclusion\"\nimport { QueryResult } from \"./QueryResult\"\nimport { ReplicationMode } from \"../driver/types/ReplicationMode\"\n\n/**\n * Runs queries on a single database connection.\n */\nexport interface QueryRunner {\n /**\n * Connection used by this query runner.\n */\n readonly connection: DataSource\n\n /**\n * Broadcaster used on this query runner to broadcast entity events.\n */\n readonly broadcaster: Broadcaster\n\n /**\n * Entity manager working only with this query runner.\n */\n readonly manager: EntityManager\n\n /**\n * Indicates if connection for this query runner is released.\n * Once its released, query runner cannot run queries anymore.\n */\n readonly isReleased: boolean\n\n /**\n * Indicates if transaction is in progress.\n */\n readonly isTransactionActive: boolean\n\n /**\n * Stores temporarily user data.\n * Useful for sharing data with subscribers.\n */\n data: ObjectLiteral\n\n /**\n * All synchronized tables in the database.\n *\n * @deprecated Call `getTables()`\n */\n loadedTables: Table[]\n\n /**\n * All synchronized views in the database.\n *\n * @deprecated Call `getViews()`\n */\n loadedViews: View[]\n\n /**\n * Creates/uses database connection from the connection pool to perform further operations.\n * Returns obtained database connection.\n */\n connect(): Promise<any>\n\n /**\n * Called before migrations are run.\n */\n beforeMigration(): Promise<void>\n\n /**\n * Called after migrations are run.\n */\n afterMigration(): Promise<void>\n\n /**\n * Releases used database connection.\n * You cannot use query runner methods after connection is released.\n */\n release(): Promise<void>\n\n /**\n * Removes all tables from the currently connected database.\n * Be careful with using this method and avoid using it in production or migrations\n * (because it can clear all your database).\n */\n clearDatabase(database?: string): Promise<void>\n\n /**\n * Starts transaction.\n */\n startTransaction(isolationLevel?: IsolationLevel): Promise<void>\n\n /**\n * Commits transaction.\n * Error will be thrown if transaction was not started.\n */\n commitTransaction(): Promise<void>\n\n /**\n * Rollbacks transaction.\n * Error will be thrown if transaction was not started.\n */\n rollbackTransaction(): Promise<void>\n\n /**\n * Executes a given SQL query and returns raw database results.\n */\n query(\n query: string,\n parameters: any[] | undefined,\n useStructuredResult: true,\n ): Promise<QueryResult>\n\n /**\n * Executes a given SQL query and returns raw database results.\n */\n query(query: string, parameters?: any[]): Promise<any>\n\n /**\n * Tagged template function that executes raw SQL query and returns raw database results.\n * Template expressions are automatically transformed into database parameters.\n * Raw query execution is supported only by relational databases (MongoDB is not supported).\n * Note: Don't call this as a regular function, it is meant to be used with backticks to tag a template literal.\n * Example: queryRunner.sql`SELECT * FROM table_name WHERE id = ${id}`\n */\n sql<T = any>(\n strings: TemplateStringsArray,\n ...values: unknown[]\n ): Promise<T>\n\n /**\n * Returns raw data stream.\n */\n stream(\n query: string,\n parameters?: any[],\n onEnd?: Function,\n onError?: Function,\n ): Promise<ReadStream>\n\n /**\n * Returns all available database names including system databases.\n */\n getDatabases(): Promise<string[]>\n\n /**\n * Returns all available schema names including system schemas.\n * If database parameter specified, returns schemas of that database.\n * Useful for SQLServer and Postgres only.\n */\n getSchemas(database?: string): Promise<string[]>\n\n /**\n * Loads a table by a given name from the database.\n */\n getTable(tablePath: string): Promise<Table | undefined>\n\n /**\n * Loads all tables from the database and returns them.\n */\n getTables(tablePaths?: string[]): Promise<Table[]>\n\n /**\n * Loads a view by a given name from the database.\n */\n getView(viewPath: string): Promise<View | undefined>\n\n /**\n * Loads all views from the database and returns them.\n */\n getViews(viewPaths?: string[]): Promise<View[]>\n\n /**\n * Returns replication mode (ex: `master` or `slave`).\n */\n getReplicationMode(): ReplicationMode\n\n /**\n * Checks if a database with the given name exist.\n */\n hasDatabase(database: string): Promise<boolean>\n\n /**\n * Loads currently using database\n */\n getCurrentDatabase(): Promise<string | undefined>\n\n /**\n * Checks if a schema with the given name exist.\n */\n hasSchema(schema: string): Promise<boolean>\n\n /**\n * Loads currently using database schema\n */\n getCurrentSchema(): Promise<string | undefined>\n\n /**\n * Checks if a table with the given name exist.\n */\n hasTable(table: Table | string): Promise<boolean>\n\n /**\n * Checks if a column exist in the table.\n */\n hasColumn(table: Table | string, columnName: string): Promise<boolean>\n\n /**\n * Creates a new database.\n */\n createDatabase(database: string, ifNotExist?: boolean): Promise<void>\n\n /**\n * Drops database.\n */\n dropDatabase(database: string, ifExist?: boolean): Promise<void>\n\n /**\n * Creates a new table schema.\n */\n createSchema(schemaPath: string, ifNotExist?: boolean): Promise<void>\n\n /**\n * Drops table schema.\n * For SqlServer can accept schema path (e.g. 'dbName.schemaName') as parameter.\n * If schema path passed, it will drop schema in specified database.\n */\n dropSchema(\n schemaPath: string,\n ifExist?: boolean,\n isCascade?: boolean,\n ): Promise<void>\n\n /**\n * Creates a new table.\n */\n createTable(\n table: Table,\n ifNotExist?: boolean,\n createForeignKeys?: boolean,\n createIndices?: boolean,\n ): Promise<void>\n\n /**\n * Drops a table.\n */\n dropTable(\n table: Table | string,\n ifExist?: boolean,\n dropForeignKeys?: boolean,\n dropIndices?: boolean,\n ): Promise<void>\n\n /**\n * Creates a new view.\n */\n createView(\n view: View,\n syncWithMetadata?: boolean,\n oldView?: View,\n ): Promise<void>\n\n /**\n * Drops a view.\n */\n dropView(view: View | string): Promise<void>\n\n /**\n * Renames a table.\n */\n renameTable(\n oldTableOrName: Table | string,\n newTableName: string,\n ): Promise<void>\n\n /**\n * Change table comment. Only supports MySQL and MariaDB\n */\n changeTableComment(\n tableOrName: Table | string,\n comment?: string,\n ): Promise<void>\n\n /**\n * Adds a new column.\n */\n addColumn(table: Table | string, column: TableColumn): Promise<void>\n\n /**\n * Adds new columns.\n */\n addColumns(table: Table | string, columns: TableColumn[]): Promise<void>\n\n /**\n * Renames a column.\n */\n renameColumn(\n table: Table | string,\n oldColumnOrName: TableColumn | string,\n newColumnOrName: TableColumn | string,\n ): Promise<void>\n\n /**\n * Changes a column in the table.\n */\n changeColumn(\n table: Table | string,\n oldColumn: TableColumn | string,\n newColumn: TableColumn,\n ): Promise<void>\n\n /**\n * Changes columns in the table.\n */\n changeColumns(\n table: Table | string,\n changedColumns: { oldColumn: TableColumn; newColumn: TableColumn }[],\n ): Promise<void>\n\n /**\n * Drops a column in the table.\n */\n dropColumn(\n table: Table | string,\n column: TableColumn | string,\n ): Promise<void>\n\n /**\n * Drops columns in the table.\n */\n dropColumns(\n table: Table | string,\n columns: TableColumn[] | string[],\n ): Promise<void>\n\n /**\n * Creates a new primary key.\n */\n createPrimaryKey(\n table: Table | string,\n columnNames: string[],\n constraintName?: string,\n ): Promise<void>\n\n /**\n * Updates composite primary keys.\n */\n updatePrimaryKeys(\n table: Table | string,\n columns: TableColumn[],\n ): Promise<void>\n\n /**\n * Drops a primary key.\n */\n dropPrimaryKey(\n table: Table | string,\n constraintName?: string,\n ): Promise<void>\n\n /**\n * Creates a new unique constraint.\n */\n createUniqueConstraint(\n table: Table | string,\n uniqueConstraint: TableUnique,\n ): Promise<void>\n\n /**\n * Creates new unique constraints.\n */\n createUniqueConstraints(\n table: Table | string,\n uniqueConstraints: TableUnique[],\n ): Promise<void>\n\n /**\n * Drops a unique constraint.\n */\n dropUniqueConstraint(\n table: Table | string,\n uniqueOrName: TableUnique | string,\n ): Promise<void>\n\n /**\n * Drops unique constraints.\n */\n dropUniqueConstraints(\n table: Table | string,\n uniqueConstraints: TableUnique[],\n ): Promise<void>\n\n /**\n * Creates a new check constraint.\n */\n createCheckConstraint(\n table: Table | string,\n checkConstraint: TableCheck,\n ): Promise<void>\n\n /**\n * Creates new check constraints.\n */\n createCheckConstraints(\n table: Table | string,\n checkConstraints: TableCheck[],\n ): Promise<void>\n\n /**\n * Drops a check constraint.\n */\n dropCheckConstraint(\n table: Table | string,\n checkOrName: TableCheck | string,\n ): Promise<void>\n\n /**\n * Drops check constraints.\n */\n dropCheckConstraints(\n table: Table | string,\n checkConstraints: TableCheck[],\n ): Promise<void>\n\n /**\n * Creates a new exclusion constraint.\n */\n createExclusionConstraint(\n table: Table | string,\n exclusionConstraint: TableExclusion,\n ): Promise<void>\n\n /**\n * Creates new exclusion constraints.\n */\n createExclusionConstraints(\n table: Table | string,\n exclusionConstraints: TableExclusion[],\n ): Promise<void>\n\n /**\n * Drops a exclusion constraint.\n */\n dropExclusionConstraint(\n table: Table | string,\n exclusionOrName: TableExclusion | string,\n ): Promise<void>\n\n /**\n * Drops exclusion constraints.\n */\n dropExclusionConstraints(\n table: Table | string,\n exclusionConstraints: TableExclusion[],\n ): Promise<void>\n\n /**\n * Creates a new foreign key.\n */\n createForeignKey(\n table: Table | string,\n foreignKey: TableForeignKey,\n ): Promise<void>\n\n /**\n * Creates new foreign keys.\n */\n createForeignKeys(\n table: Table | string,\n foreignKeys: TableForeignKey[],\n ): Promise<void>\n\n /**\n * Drops a foreign key.\n */\n dropForeignKey(\n table: Table | string,\n foreignKeyOrName: TableForeignKey | string,\n ): Promise<void>\n\n /**\n * Drops foreign keys.\n */\n dropForeignKeys(\n table: Table | string,\n foreignKeys: TableForeignKey[],\n ): Promise<void>\n\n /**\n * Creates a new index.\n */\n createIndex(table: Table | string, index: TableIndex): Promise<void>\n\n /**\n * Creates new indices.\n */\n createIndices(table: Table | string, indices: TableIndex[]): Promise<void>\n\n /**\n * Drops an index.\n */\n dropIndex(table: Table | string, index: TableIndex | string): Promise<void>\n\n /**\n * Drops indices.\n */\n dropIndices(table: Table | string, indices: TableIndex[]): Promise<void>\n\n /**\n * Clears all table contents.\n * Note: this operation uses SQL's TRUNCATE query which cannot be reverted in transactions.\n */\n clearTable(tableName: string): Promise<void>\n\n /**\n * Enables special query runner mode in which sql queries won't be executed,\n * instead they will be memorized into a special variable inside query runner.\n * You can get memorized sql using getMemorySql() method.\n */\n enableSqlMemory(): void\n\n /**\n * Disables special query runner mode in which sql queries won't be executed\n * started by calling enableSqlMemory() method.\n *\n * Previously memorized sql will be flushed.\n */\n disableSqlMemory(): void\n\n /**\n * Flushes all memorized sqls.\n */\n clearSqlMemory(): void\n\n /**\n * Gets sql stored in the memory. Parameters in the sql are already replaced.\n */\n getMemorySql(): SqlInMemory\n\n /**\n * Executes up sql queries.\n */\n executeMemoryUpSql(): Promise<void>\n\n /**\n * Executes down sql queries.\n */\n executeMemoryDownSql(): Promise<void>\n}\n"],"sourceRoot":".."}
@@ -8,6 +8,7 @@ const path_1 = tslib_1.__importDefault(require("path"));
8
8
  const error_1 = require("../error");
9
9
  const PlatformTools_1 = require("../platform/PlatformTools");
10
10
  const CommandUtils_1 = require("./CommandUtils");
11
+ const package_json_1 = tslib_1.__importDefault(require("../package.json"));
11
12
  /**
12
13
  * Generates a new project with TypeORM.
13
14
  */
@@ -523,13 +524,14 @@ AppDataSource.initialize().then(async () => {
523
524
  environment:
524
525
  SA_PASSWORD: "Admin12345"
525
526
  ACCEPT_EULA: "Y"
527
+ MSSQL_PID: "Express"
526
528
 
527
529
  `;
528
530
  case "mongodb":
529
531
  return `services:
530
532
 
531
533
  mongodb:
532
- image: "mongo:8.0.5"
534
+ image: "mongo:8"
533
535
  container_name: "typeorm-mongodb"
534
536
  ports:
535
537
  - "27017:27017"
@@ -578,46 +580,52 @@ Steps to run this project:
578
580
  if (!packageJson.devDependencies)
579
581
  packageJson.devDependencies = {};
580
582
  packageJson.devDependencies = {
581
- "@types/node": "^22.13.10",
582
- "ts-node": "^10.9.2",
583
- typescript: "^5.8.2",
583
+ "@types/node": package_json_1.default.devDependencies["@types/node"],
584
+ "ts-node": package_json_1.default.devDependencies["ts-node"],
585
+ typescript: package_json_1.default.devDependencies.typescript,
584
586
  ...packageJson.devDependencies,
585
587
  };
586
588
  if (!packageJson.dependencies)
587
589
  packageJson.dependencies = {};
588
590
  packageJson.dependencies = {
589
591
  ...packageJson.dependencies,
590
- "reflect-metadata": "^0.2.2",
591
- typeorm: require("../package.json").version !== "0.0.0"
592
- ? require("../package.json").version // install version from package.json if present
593
- : require("../package.json").installFrom, // else use custom source
592
+ "reflect-metadata": package_json_1.default.dependencies["reflect-metadata"],
593
+ typeorm: package_json_1.default.version,
594
594
  };
595
595
  switch (database) {
596
596
  case "mysql":
597
597
  case "mariadb":
598
- packageJson.dependencies["mysql2"] = "^3.14.0";
598
+ packageJson.dependencies["mysql2"] =
599
+ package_json_1.default.devDependencies.mysql2;
599
600
  break;
600
601
  case "postgres":
601
602
  case "cockroachdb":
602
- packageJson.dependencies["pg"] = "^8.14.1";
603
+ packageJson.dependencies["pg"] =
604
+ package_json_1.default.devDependencies.pg;
603
605
  break;
604
606
  case "sqlite":
605
- packageJson.dependencies["sqlite3"] = "^5.1.7";
607
+ packageJson.dependencies["sqlite3"] =
608
+ package_json_1.default.devDependencies.sqlite3;
606
609
  break;
607
610
  case "better-sqlite3":
608
- packageJson.dependencies["better-sqlite3"] = "^8.7.0";
611
+ packageJson.dependencies["better-sqlite3"] =
612
+ package_json_1.default.devDependencies["better-sqlite3"];
609
613
  break;
610
614
  case "oracle":
611
- packageJson.dependencies["oracledb"] = "^6.8.0";
615
+ packageJson.dependencies["oracledb"] =
616
+ package_json_1.default.devDependencies.oracledb;
612
617
  break;
613
618
  case "mssql":
614
- packageJson.dependencies["mssql"] = "^10.0.4";
619
+ packageJson.dependencies["mssql"] =
620
+ package_json_1.default.devDependencies.mssql;
615
621
  break;
616
622
  case "mongodb":
617
- packageJson.dependencies["mongodb"] = "^6.15.0";
623
+ packageJson.dependencies["mongodb"] =
624
+ package_json_1.default.devDependencies.mongodb;
618
625
  break;
619
626
  case "spanner":
620
- packageJson.dependencies["@google-cloud/spanner"] = "^7.19.1 ";
627
+ packageJson.dependencies["@google-cloud/spanner"] =
628
+ package_json_1.default.devDependencies["@google-cloud/spanner"];
621
629
  break;
622
630
  }
623
631
  if (express) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/commands/InitCommand.ts"],"names":[],"mappings":"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","file":"InitCommand.js","sourcesContent":["import ansi from \"ansis\"\nimport { exec } from \"child_process\"\nimport path from \"path\"\nimport yargs from \"yargs\"\nimport { TypeORMError } from \"../error\"\nimport { PlatformTools } from \"../platform/PlatformTools\"\nimport { CommandUtils } from \"./CommandUtils\"\n\n/**\n * Generates a new project with TypeORM.\n */\nexport class InitCommand implements yargs.CommandModule {\n command = \"init\"\n describe =\n \"Generates initial TypeORM project structure. \" +\n \"If name specified then creates files inside directory called as name. \" +\n \"If its not specified then creates files inside current directory.\"\n\n builder(args: yargs.Argv) {\n return args\n .option(\"n\", {\n alias: \"name\",\n describe: \"Name of the project directory.\",\n })\n .option(\"db\", {\n alias: \"database\",\n describe: \"Database type you'll use in your project.\",\n })\n .option(\"express\", {\n describe:\n \"Indicates if express server sample code should be included in the project. False by default.\",\n })\n .option(\"docker\", {\n describe:\n \"Set to true if docker-compose must be generated as well. False by default.\",\n })\n .option(\"pm\", {\n alias: \"manager\",\n choices: [\"npm\", \"yarn\"],\n default: \"npm\",\n describe: \"Install packages, expected values are npm or yarn.\",\n })\n .option(\"ms\", {\n alias: \"module\",\n choices: [\"commonjs\", \"esm\"],\n default: \"commonjs\",\n describe:\n \"Module system to use for project, expected values are commonjs or esm.\",\n })\n }\n\n async handler(args: yargs.Arguments) {\n try {\n const database: string = (args.database as any) || \"postgres\"\n const isExpress = args.express !== undefined ? true : false\n const isDocker = args.docker !== undefined ? true : false\n const basePath = process.cwd() + (args.name ? \"/\" + args.name : \"\")\n const projectName = args.name\n ? path.basename(args.name as any)\n : undefined\n const installNpm = args.pm === \"yarn\" ? false : true\n const projectIsEsm = args.ms === \"esm\"\n await CommandUtils.createFile(\n basePath + \"/package.json\",\n InitCommand.getPackageJsonTemplate(projectName, projectIsEsm),\n false,\n )\n if (isDocker)\n await CommandUtils.createFile(\n basePath + \"/docker-compose.yml\",\n InitCommand.getDockerComposeTemplate(database),\n false,\n )\n await CommandUtils.createFile(\n basePath + \"/.gitignore\",\n InitCommand.getGitIgnoreFile(),\n )\n await CommandUtils.createFile(\n basePath + \"/README.md\",\n InitCommand.getReadmeTemplate({ docker: isDocker }),\n false,\n )\n await CommandUtils.createFile(\n basePath + \"/tsconfig.json\",\n InitCommand.getTsConfigTemplate(projectIsEsm),\n )\n await CommandUtils.createFile(\n basePath + \"/src/entity/User.ts\",\n InitCommand.getUserEntityTemplate(database),\n )\n await CommandUtils.createFile(\n basePath + \"/src/data-source.ts\",\n InitCommand.getAppDataSourceTemplate(projectIsEsm, database),\n )\n await CommandUtils.createFile(\n basePath + \"/src/index.ts\",\n InitCommand.getAppIndexTemplate(isExpress, projectIsEsm),\n )\n await CommandUtils.createDirectories(basePath + \"/src/migration\")\n\n // generate extra files for express application\n if (isExpress) {\n await CommandUtils.createFile(\n basePath + \"/src/routes.ts\",\n InitCommand.getRoutesTemplate(projectIsEsm),\n )\n await CommandUtils.createFile(\n basePath + \"/src/controller/UserController.ts\",\n InitCommand.getControllerTemplate(projectIsEsm),\n )\n }\n\n const packageJsonContents = await CommandUtils.readFile(\n basePath + \"/package.json\",\n )\n await CommandUtils.createFile(\n basePath + \"/package.json\",\n InitCommand.appendPackageJson(\n packageJsonContents,\n database,\n isExpress,\n projectIsEsm,\n ),\n )\n\n if (args.name) {\n console.log(\n ansi.green`Project created inside ${ansi.blue(\n basePath,\n )} directory.`,\n )\n } else {\n console.log(\n ansi.green`Project created inside current directory.`,\n )\n }\n\n console.log(ansi.green`Please wait, installing dependencies...`)\n if (args.pm && installNpm) {\n await InitCommand.executeCommand(\"npm install\", basePath)\n } else {\n await InitCommand.executeCommand(\"yarn install\", basePath)\n }\n\n console.log(ansi.green`Done! Start playing with a new project!`)\n } catch (err) {\n PlatformTools.logCmdErr(\"Error during project initialization:\", err)\n process.exit(1)\n }\n }\n\n // -------------------------------------------------------------------------\n // Protected Static Methods\n // -------------------------------------------------------------------------\n\n protected static executeCommand(command: string, cwd: string) {\n return new Promise<string>((ok, fail) => {\n exec(command, { cwd }, (error: any, stdout: any, stderr: any) => {\n if (stdout) return ok(stdout)\n if (stderr) return fail(stderr)\n if (error) return fail(error)\n ok(\"\")\n })\n })\n }\n\n /**\n * Gets contents of the ormconfig file.\n */\n protected static getAppDataSourceTemplate(\n isEsm: boolean,\n database: string,\n ): string {\n let dbSettings = \"\"\n switch (database) {\n case \"mysql\":\n dbSettings = `type: \"mysql\",\n host: \"localhost\",\n port: 3306,\n username: \"test\",\n password: \"test\",\n database: \"test\",`\n break\n case \"mariadb\":\n dbSettings = `type: \"mariadb\",\n host: \"localhost\",\n port: 3306,\n username: \"test\",\n password: \"test\",\n database: \"test\",`\n break\n case \"sqlite\":\n dbSettings = `type: \"sqlite\",\n database: \"database.sqlite\",`\n break\n case \"better-sqlite3\":\n dbSettings = `type: \"better-sqlite3\",\n database: \"database.sqlite\",`\n break\n case \"postgres\":\n dbSettings = `type: \"postgres\",\n host: \"localhost\",\n port: 5432,\n username: \"test\",\n password: \"test\",\n database: \"test\",`\n break\n case \"cockroachdb\":\n dbSettings = `type: \"cockroachdb\",\n host: \"localhost\",\n port: 26257,\n username: \"root\",\n password: \"\",\n database: \"defaultdb\",`\n break\n case \"mssql\":\n dbSettings = `type: \"mssql\",\n host: \"localhost\",\n username: \"sa\",\n password: \"Admin12345\",\n database: \"tempdb\",`\n break\n case \"oracle\":\n dbSettings = `type: \"oracle\",\nhost: \"localhost\",\nusername: \"system\",\npassword: \"oracle\",\nport: 1521,\nsid: \"xe.oracle.docker\",`\n break\n case \"mongodb\":\n dbSettings = `type: \"mongodb\",\n database: \"test\",`\n break\n case \"spanner\":\n dbSettings = `type: \"spanner\",\n projectId: \"test\",\n instanceId: \"test\",\n databaseId: \"test\",`\n break\n }\n return `import \"reflect-metadata\"\nimport { DataSource } from \"typeorm\"\nimport { User } from \"./entity/User${isEsm ? \".js\" : \"\"}\"\n\nexport const AppDataSource = new DataSource({\n ${dbSettings}\n synchronize: true,\n logging: false,\n entities: [User],\n migrations: [],\n subscribers: [],\n})\n`\n }\n\n /**\n * Gets contents of the ormconfig file.\n */\n protected static getTsConfigTemplate(esmModule: boolean): string {\n if (esmModule)\n return JSON.stringify(\n {\n compilerOptions: {\n lib: [\"es2021\"],\n target: \"es2021\",\n module: \"es2022\",\n moduleResolution: \"node\",\n allowSyntheticDefaultImports: true,\n outDir: \"./build\",\n emitDecoratorMetadata: true,\n experimentalDecorators: true,\n sourceMap: true,\n },\n },\n undefined,\n 3,\n )\n else\n return JSON.stringify(\n {\n compilerOptions: {\n lib: [\"es2021\"],\n target: \"es2021\",\n module: \"commonjs\",\n moduleResolution: \"node\",\n outDir: \"./build\",\n emitDecoratorMetadata: true,\n experimentalDecorators: true,\n sourceMap: true,\n },\n },\n undefined,\n 3,\n )\n }\n\n /**\n * Gets contents of the .gitignore file.\n */\n protected static getGitIgnoreFile(): string {\n return `.idea/\n.vscode/\nnode_modules/\nbuild/\ntmp/\ntemp/`\n }\n\n /**\n * Gets contents of the user entity.\n */\n protected static getUserEntityTemplate(database: string): string {\n return `import { Entity, ${\n database === \"mongodb\"\n ? \"ObjectIdColumn, ObjectId\"\n : \"PrimaryGeneratedColumn\"\n }, Column } from \"typeorm\"\n\n@Entity()\nexport class User {\n\n ${\n database === \"mongodb\"\n ? \"@ObjectIdColumn()\"\n : \"@PrimaryGeneratedColumn()\"\n }\n id: ${database === \"mongodb\" ? \"ObjectId\" : \"number\"}\n\n @Column()\n firstName: string\n\n @Column()\n lastName: string\n\n @Column()\n age: number\n\n}\n`\n }\n\n /**\n * Gets contents of the route file (used when express is enabled).\n */\n protected static getRoutesTemplate(isEsm: boolean): string {\n return `import { UserController } from \"./controller/UserController${\n isEsm ? \".js\" : \"\"\n }\"\n\nexport const Routes = [{\n method: \"get\",\n route: \"/users\",\n controller: UserController,\n action: \"all\"\n}, {\n method: \"get\",\n route: \"/users/:id\",\n controller: UserController,\n action: \"one\"\n}, {\n method: \"post\",\n route: \"/users\",\n controller: UserController,\n action: \"save\"\n}, {\n method: \"delete\",\n route: \"/users/:id\",\n controller: UserController,\n action: \"remove\"\n}]`\n }\n\n /**\n * Gets contents of the user controller file (used when express is enabled).\n */\n protected static getControllerTemplate(isEsm: boolean): string {\n return `import { AppDataSource } from \"../data-source${\n isEsm ? \".js\" : \"\"\n }\"\nimport { NextFunction, Request, Response } from \"express\"\nimport { User } from \"../entity/User${isEsm ? \".js\" : \"\"}\"\n\nexport class UserController {\n\n private userRepository = AppDataSource.getRepository(User)\n\n async all(request: Request, response: Response, next: NextFunction) {\n return this.userRepository.find()\n }\n\n async one(request: Request, response: Response, next: NextFunction) {\n const id = parseInt(request.params.id)\n\n\n const user = await this.userRepository.findOne({\n where: { id }\n })\n\n if (!user) {\n return \"unregistered user\"\n }\n return user\n }\n\n async save(request: Request, response: Response, next: NextFunction) {\n const { firstName, lastName, age } = request.body;\n\n const user = Object.assign(new User(), {\n firstName,\n lastName,\n age\n })\n\n return this.userRepository.save(user)\n }\n\n async remove(request: Request, response: Response, next: NextFunction) {\n const id = parseInt(request.params.id)\n\n let userToRemove = await this.userRepository.findOneBy({ id })\n\n if (!userToRemove) {\n return \"this user not exist\"\n }\n\n await this.userRepository.remove(userToRemove)\n\n return \"user has been removed\"\n }\n\n}`\n }\n\n /**\n * Gets contents of the main (index) application file.\n */\n protected static getAppIndexTemplate(\n express: boolean,\n isEsm: boolean,\n ): string {\n if (express) {\n return `import ${!isEsm ? \"* as \" : \"\"}express from \"express\"\nimport ${!isEsm ? \"* as \" : \"\"}bodyParser from \"body-parser\"\nimport { Request, Response } from \"express\"\nimport { AppDataSource } from \"./data-source${isEsm ? \".js\" : \"\"}\"\nimport { Routes } from \"./routes${isEsm ? \".js\" : \"\"}\"\nimport { User } from \"./entity/User${isEsm ? \".js\" : \"\"}\"\n\nAppDataSource.initialize().then(async () => {\n\n // create express app\n const app = express()\n app.use(bodyParser.json())\n\n // register express routes from defined application routes\n Routes.forEach(route => {\n (app as any)[route.method](route.route, (req: Request, res: Response, next: Function) => {\n const result = (new (route.controller as any))[route.action](req, res, next)\n if (result instanceof Promise) {\n result.then(result => result !== null && result !== undefined ? res.send(result) : undefined)\n\n } else if (result !== null && result !== undefined) {\n res.json(result)\n }\n })\n })\n\n // setup express app here\n // ...\n\n // start express server\n app.listen(3000)\n\n // insert new users for test\n await AppDataSource.manager.save(\n AppDataSource.manager.create(User, {\n firstName: \"Timber\",\n lastName: \"Saw\",\n age: 27\n })\n )\n\n await AppDataSource.manager.save(\n AppDataSource.manager.create(User, {\n firstName: \"Phantom\",\n lastName: \"Assassin\",\n age: 24\n })\n )\n\n console.log(\"Express server has started on port 3000. Open http://localhost:3000/users to see results\")\n\n}).catch(error => console.log(error))\n`\n } else {\n return `import { AppDataSource } from \"./data-source${\n isEsm ? \".js\" : \"\"\n }\"\nimport { User } from \"./entity/User${isEsm ? \".js\" : \"\"}\"\n\nAppDataSource.initialize().then(async () => {\n\n console.log(\"Inserting a new user into the database...\")\n const user = new User()\n user.firstName = \"Timber\"\n user.lastName = \"Saw\"\n user.age = 25\n await AppDataSource.manager.save(user)\n console.log(\"Saved a new user with id: \" + user.id)\n\n console.log(\"Loading users from the database...\")\n const users = await AppDataSource.manager.find(User)\n console.log(\"Loaded users: \", users)\n\n console.log(\"Here you can setup and run express / fastify / any other framework.\")\n\n}).catch(error => console.log(error))\n`\n }\n }\n\n /**\n * Gets contents of the new package.json file.\n */\n protected static getPackageJsonTemplate(\n projectName?: string,\n projectIsEsm?: boolean,\n ): string {\n return JSON.stringify(\n {\n name: projectName || \"typeorm-sample\",\n version: \"0.0.1\",\n description: \"Awesome project developed with TypeORM.\",\n type: projectIsEsm ? \"module\" : \"commonjs\",\n devDependencies: {},\n dependencies: {},\n scripts: {},\n },\n undefined,\n 3,\n )\n }\n\n /**\n * Gets contents of the new docker-compose.yml file.\n */\n protected static getDockerComposeTemplate(database: string): string {\n switch (database) {\n case \"mysql\":\n return `services:\n\n mysql:\n image: \"mysql:9.2.0\"\n ports:\n - \"3306:3306\"\n environment:\n MYSQL_ROOT_PASSWORD: \"admin\"\n MYSQL_USER: \"test\"\n MYSQL_PASSWORD: \"test\"\n MYSQL_DATABASE: \"test\"\n\n`\n case \"mariadb\":\n return `services:\n\n mariadb:\n image: \"mariadb:11.7.2\"\n ports:\n - \"3306:3306\"\n environment:\n MYSQL_ROOT_PASSWORD: \"admin\"\n MYSQL_USER: \"test\"\n MYSQL_PASSWORD: \"test\"\n MYSQL_DATABASE: \"test\"\n\n`\n case \"postgres\":\n return `services:\n\n postgres:\n image: \"postgres:17.2\"\n ports:\n - \"5432:5432\"\n environment:\n POSTGRES_USER: \"test\"\n POSTGRES_PASSWORD: \"test\"\n POSTGRES_DB: \"test\"\n\n`\n case \"cockroachdb\":\n return `services:\n\n cockroachdb:\n image: \"cockroachdb/cockroach:v25.1.2\"\n command: start --insecure\n ports:\n - \"26257:26257\"\n\n`\n case \"sqlite\":\n case \"better-sqlite3\":\n return `services:\n`\n case \"oracle\":\n throw new TypeORMError(\n `You cannot initialize a project with docker for Oracle driver yet.`,\n ) // todo: implement for oracle as well\n\n case \"mssql\":\n return `services:\n\n mssql:\n image: \"mcr.microsoft.com/mssql/server:2022-latest\"\n ports:\n - \"1433:1433\"\n environment:\n SA_PASSWORD: \"Admin12345\"\n ACCEPT_EULA: \"Y\"\n\n`\n case \"mongodb\":\n return `services:\n\n mongodb:\n image: \"mongo:8.0.5\"\n container_name: \"typeorm-mongodb\"\n ports:\n - \"27017:27017\"\n\n`\n case \"spanner\":\n return `services:\n\n spanner:\n image: gcr.io/cloud-spanner-emulator/emulator:1.5.30\n ports:\n - \"9010:9010\"\n - \"9020:9020\"\n\n`\n }\n return \"\"\n }\n\n /**\n * Gets contents of the new readme.md file.\n */\n protected static getReadmeTemplate(options: { docker: boolean }): string {\n let template = `# Awesome Project Build with TypeORM\n\nSteps to run this project:\n\n1. Run \\`npm i\\` command\n`\n\n if (options.docker) {\n template += `2. Run \\`docker-compose up\\` command\n`\n } else {\n template += `2. Setup database settings inside \\`data-source.ts\\` file\n`\n }\n\n template += `3. Run \\`npm start\\` command\n`\n return template\n }\n\n /**\n * Appends to a given package.json template everything needed.\n */\n protected static appendPackageJson(\n packageJsonContents: string,\n database: string,\n express: boolean,\n projectIsEsm: boolean /*, docker: boolean*/,\n ): string {\n const packageJson = JSON.parse(packageJsonContents)\n\n if (!packageJson.devDependencies) packageJson.devDependencies = {}\n packageJson.devDependencies = {\n \"@types/node\": \"^22.13.10\",\n \"ts-node\": \"^10.9.2\",\n typescript: \"^5.8.2\",\n ...packageJson.devDependencies,\n }\n\n if (!packageJson.dependencies) packageJson.dependencies = {}\n packageJson.dependencies = {\n ...packageJson.dependencies,\n \"reflect-metadata\": \"^0.2.2\",\n typeorm:\n require(\"../package.json\").version !== \"0.0.0\"\n ? require(\"../package.json\").version // install version from package.json if present\n : require(\"../package.json\").installFrom, // else use custom source\n }\n\n switch (database) {\n case \"mysql\":\n case \"mariadb\":\n packageJson.dependencies[\"mysql2\"] = \"^3.14.0\"\n break\n case \"postgres\":\n case \"cockroachdb\":\n packageJson.dependencies[\"pg\"] = \"^8.14.1\"\n break\n case \"sqlite\":\n packageJson.dependencies[\"sqlite3\"] = \"^5.1.7\"\n break\n case \"better-sqlite3\":\n packageJson.dependencies[\"better-sqlite3\"] = \"^8.7.0\"\n break\n case \"oracle\":\n packageJson.dependencies[\"oracledb\"] = \"^6.8.0\"\n break\n case \"mssql\":\n packageJson.dependencies[\"mssql\"] = \"^10.0.4\"\n break\n case \"mongodb\":\n packageJson.dependencies[\"mongodb\"] = \"^6.15.0\"\n break\n case \"spanner\":\n packageJson.dependencies[\"@google-cloud/spanner\"] = \"^7.19.1 \"\n break\n }\n\n if (express) {\n packageJson.dependencies[\"express\"] = \"^4.21.2\"\n packageJson.dependencies[\"body-parser\"] = \"^1.20.3\"\n }\n\n if (!packageJson.scripts) packageJson.scripts = {}\n\n if (projectIsEsm)\n Object.assign(packageJson.scripts, {\n start: /*(docker ? \"docker-compose up && \" : \"\") + */ \"node --loader ts-node/esm src/index.ts\",\n typeorm: \"typeorm-ts-node-esm\",\n })\n else\n Object.assign(packageJson.scripts, {\n start: /*(docker ? \"docker-compose up && \" : \"\") + */ \"ts-node src/index.ts\",\n typeorm: \"typeorm-ts-node-commonjs\",\n })\n\n return JSON.stringify(packageJson, undefined, 3)\n }\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/commands/InitCommand.ts"],"names":[],"mappings":"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","file":"InitCommand.js","sourcesContent":["import ansi from \"ansis\"\nimport { exec } from \"child_process\"\nimport path from \"path\"\nimport yargs from \"yargs\"\nimport { TypeORMError } from \"../error\"\nimport { PlatformTools } from \"../platform/PlatformTools\"\nimport { CommandUtils } from \"./CommandUtils\"\n\nimport ourPackageJson from \"../../package.json\"\n\n/**\n * Generates a new project with TypeORM.\n */\nexport class InitCommand implements yargs.CommandModule {\n command = \"init\"\n describe =\n \"Generates initial TypeORM project structure. \" +\n \"If name specified then creates files inside directory called as name. \" +\n \"If its not specified then creates files inside current directory.\"\n\n builder(args: yargs.Argv) {\n return args\n .option(\"n\", {\n alias: \"name\",\n describe: \"Name of the project directory.\",\n })\n .option(\"db\", {\n alias: \"database\",\n describe: \"Database type you'll use in your project.\",\n })\n .option(\"express\", {\n describe:\n \"Indicates if express server sample code should be included in the project. False by default.\",\n })\n .option(\"docker\", {\n describe:\n \"Set to true if docker-compose must be generated as well. False by default.\",\n })\n .option(\"pm\", {\n alias: \"manager\",\n choices: [\"npm\", \"yarn\"],\n default: \"npm\",\n describe: \"Install packages, expected values are npm or yarn.\",\n })\n .option(\"ms\", {\n alias: \"module\",\n choices: [\"commonjs\", \"esm\"],\n default: \"commonjs\",\n describe:\n \"Module system to use for project, expected values are commonjs or esm.\",\n })\n }\n\n async handler(args: yargs.Arguments) {\n try {\n const database: string = (args.database as any) || \"postgres\"\n const isExpress = args.express !== undefined ? true : false\n const isDocker = args.docker !== undefined ? true : false\n const basePath = process.cwd() + (args.name ? \"/\" + args.name : \"\")\n const projectName = args.name\n ? path.basename(args.name as any)\n : undefined\n const installNpm = args.pm === \"yarn\" ? false : true\n const projectIsEsm = args.ms === \"esm\"\n await CommandUtils.createFile(\n basePath + \"/package.json\",\n InitCommand.getPackageJsonTemplate(projectName, projectIsEsm),\n false,\n )\n if (isDocker)\n await CommandUtils.createFile(\n basePath + \"/docker-compose.yml\",\n InitCommand.getDockerComposeTemplate(database),\n false,\n )\n await CommandUtils.createFile(\n basePath + \"/.gitignore\",\n InitCommand.getGitIgnoreFile(),\n )\n await CommandUtils.createFile(\n basePath + \"/README.md\",\n InitCommand.getReadmeTemplate({ docker: isDocker }),\n false,\n )\n await CommandUtils.createFile(\n basePath + \"/tsconfig.json\",\n InitCommand.getTsConfigTemplate(projectIsEsm),\n )\n await CommandUtils.createFile(\n basePath + \"/src/entity/User.ts\",\n InitCommand.getUserEntityTemplate(database),\n )\n await CommandUtils.createFile(\n basePath + \"/src/data-source.ts\",\n InitCommand.getAppDataSourceTemplate(projectIsEsm, database),\n )\n await CommandUtils.createFile(\n basePath + \"/src/index.ts\",\n InitCommand.getAppIndexTemplate(isExpress, projectIsEsm),\n )\n await CommandUtils.createDirectories(basePath + \"/src/migration\")\n\n // generate extra files for express application\n if (isExpress) {\n await CommandUtils.createFile(\n basePath + \"/src/routes.ts\",\n InitCommand.getRoutesTemplate(projectIsEsm),\n )\n await CommandUtils.createFile(\n basePath + \"/src/controller/UserController.ts\",\n InitCommand.getControllerTemplate(projectIsEsm),\n )\n }\n\n const packageJsonContents = await CommandUtils.readFile(\n basePath + \"/package.json\",\n )\n await CommandUtils.createFile(\n basePath + \"/package.json\",\n InitCommand.appendPackageJson(\n packageJsonContents,\n database,\n isExpress,\n projectIsEsm,\n ),\n )\n\n if (args.name) {\n console.log(\n ansi.green`Project created inside ${ansi.blue(\n basePath,\n )} directory.`,\n )\n } else {\n console.log(\n ansi.green`Project created inside current directory.`,\n )\n }\n\n console.log(ansi.green`Please wait, installing dependencies...`)\n if (args.pm && installNpm) {\n await InitCommand.executeCommand(\"npm install\", basePath)\n } else {\n await InitCommand.executeCommand(\"yarn install\", basePath)\n }\n\n console.log(ansi.green`Done! Start playing with a new project!`)\n } catch (err) {\n PlatformTools.logCmdErr(\"Error during project initialization:\", err)\n process.exit(1)\n }\n }\n\n // -------------------------------------------------------------------------\n // Protected Static Methods\n // -------------------------------------------------------------------------\n\n protected static executeCommand(command: string, cwd: string) {\n return new Promise<string>((ok, fail) => {\n exec(command, { cwd }, (error: any, stdout: any, stderr: any) => {\n if (stdout) return ok(stdout)\n if (stderr) return fail(stderr)\n if (error) return fail(error)\n ok(\"\")\n })\n })\n }\n\n /**\n * Gets contents of the ormconfig file.\n */\n protected static getAppDataSourceTemplate(\n isEsm: boolean,\n database: string,\n ): string {\n let dbSettings = \"\"\n switch (database) {\n case \"mysql\":\n dbSettings = `type: \"mysql\",\n host: \"localhost\",\n port: 3306,\n username: \"test\",\n password: \"test\",\n database: \"test\",`\n break\n case \"mariadb\":\n dbSettings = `type: \"mariadb\",\n host: \"localhost\",\n port: 3306,\n username: \"test\",\n password: \"test\",\n database: \"test\",`\n break\n case \"sqlite\":\n dbSettings = `type: \"sqlite\",\n database: \"database.sqlite\",`\n break\n case \"better-sqlite3\":\n dbSettings = `type: \"better-sqlite3\",\n database: \"database.sqlite\",`\n break\n case \"postgres\":\n dbSettings = `type: \"postgres\",\n host: \"localhost\",\n port: 5432,\n username: \"test\",\n password: \"test\",\n database: \"test\",`\n break\n case \"cockroachdb\":\n dbSettings = `type: \"cockroachdb\",\n host: \"localhost\",\n port: 26257,\n username: \"root\",\n password: \"\",\n database: \"defaultdb\",`\n break\n case \"mssql\":\n dbSettings = `type: \"mssql\",\n host: \"localhost\",\n username: \"sa\",\n password: \"Admin12345\",\n database: \"tempdb\",`\n break\n case \"oracle\":\n dbSettings = `type: \"oracle\",\nhost: \"localhost\",\nusername: \"system\",\npassword: \"oracle\",\nport: 1521,\nsid: \"xe.oracle.docker\",`\n break\n case \"mongodb\":\n dbSettings = `type: \"mongodb\",\n database: \"test\",`\n break\n case \"spanner\":\n dbSettings = `type: \"spanner\",\n projectId: \"test\",\n instanceId: \"test\",\n databaseId: \"test\",`\n break\n }\n return `import \"reflect-metadata\"\nimport { DataSource } from \"typeorm\"\nimport { User } from \"./entity/User${isEsm ? \".js\" : \"\"}\"\n\nexport const AppDataSource = new DataSource({\n ${dbSettings}\n synchronize: true,\n logging: false,\n entities: [User],\n migrations: [],\n subscribers: [],\n})\n`\n }\n\n /**\n * Gets contents of the ormconfig file.\n */\n protected static getTsConfigTemplate(esmModule: boolean): string {\n if (esmModule)\n return JSON.stringify(\n {\n compilerOptions: {\n lib: [\"es2021\"],\n target: \"es2021\",\n module: \"es2022\",\n moduleResolution: \"node\",\n allowSyntheticDefaultImports: true,\n outDir: \"./build\",\n emitDecoratorMetadata: true,\n experimentalDecorators: true,\n sourceMap: true,\n },\n },\n undefined,\n 3,\n )\n else\n return JSON.stringify(\n {\n compilerOptions: {\n lib: [\"es2021\"],\n target: \"es2021\",\n module: \"commonjs\",\n moduleResolution: \"node\",\n outDir: \"./build\",\n emitDecoratorMetadata: true,\n experimentalDecorators: true,\n sourceMap: true,\n },\n },\n undefined,\n 3,\n )\n }\n\n /**\n * Gets contents of the .gitignore file.\n */\n protected static getGitIgnoreFile(): string {\n return `.idea/\n.vscode/\nnode_modules/\nbuild/\ntmp/\ntemp/`\n }\n\n /**\n * Gets contents of the user entity.\n */\n protected static getUserEntityTemplate(database: string): string {\n return `import { Entity, ${\n database === \"mongodb\"\n ? \"ObjectIdColumn, ObjectId\"\n : \"PrimaryGeneratedColumn\"\n }, Column } from \"typeorm\"\n\n@Entity()\nexport class User {\n\n ${\n database === \"mongodb\"\n ? \"@ObjectIdColumn()\"\n : \"@PrimaryGeneratedColumn()\"\n }\n id: ${database === \"mongodb\" ? \"ObjectId\" : \"number\"}\n\n @Column()\n firstName: string\n\n @Column()\n lastName: string\n\n @Column()\n age: number\n\n}\n`\n }\n\n /**\n * Gets contents of the route file (used when express is enabled).\n */\n protected static getRoutesTemplate(isEsm: boolean): string {\n return `import { UserController } from \"./controller/UserController${\n isEsm ? \".js\" : \"\"\n }\"\n\nexport const Routes = [{\n method: \"get\",\n route: \"/users\",\n controller: UserController,\n action: \"all\"\n}, {\n method: \"get\",\n route: \"/users/:id\",\n controller: UserController,\n action: \"one\"\n}, {\n method: \"post\",\n route: \"/users\",\n controller: UserController,\n action: \"save\"\n}, {\n method: \"delete\",\n route: \"/users/:id\",\n controller: UserController,\n action: \"remove\"\n}]`\n }\n\n /**\n * Gets contents of the user controller file (used when express is enabled).\n */\n protected static getControllerTemplate(isEsm: boolean): string {\n return `import { AppDataSource } from \"../data-source${\n isEsm ? \".js\" : \"\"\n }\"\nimport { NextFunction, Request, Response } from \"express\"\nimport { User } from \"../entity/User${isEsm ? \".js\" : \"\"}\"\n\nexport class UserController {\n\n private userRepository = AppDataSource.getRepository(User)\n\n async all(request: Request, response: Response, next: NextFunction) {\n return this.userRepository.find()\n }\n\n async one(request: Request, response: Response, next: NextFunction) {\n const id = parseInt(request.params.id)\n\n\n const user = await this.userRepository.findOne({\n where: { id }\n })\n\n if (!user) {\n return \"unregistered user\"\n }\n return user\n }\n\n async save(request: Request, response: Response, next: NextFunction) {\n const { firstName, lastName, age } = request.body;\n\n const user = Object.assign(new User(), {\n firstName,\n lastName,\n age\n })\n\n return this.userRepository.save(user)\n }\n\n async remove(request: Request, response: Response, next: NextFunction) {\n const id = parseInt(request.params.id)\n\n let userToRemove = await this.userRepository.findOneBy({ id })\n\n if (!userToRemove) {\n return \"this user not exist\"\n }\n\n await this.userRepository.remove(userToRemove)\n\n return \"user has been removed\"\n }\n\n}`\n }\n\n /**\n * Gets contents of the main (index) application file.\n */\n protected static getAppIndexTemplate(\n express: boolean,\n isEsm: boolean,\n ): string {\n if (express) {\n return `import ${!isEsm ? \"* as \" : \"\"}express from \"express\"\nimport ${!isEsm ? \"* as \" : \"\"}bodyParser from \"body-parser\"\nimport { Request, Response } from \"express\"\nimport { AppDataSource } from \"./data-source${isEsm ? \".js\" : \"\"}\"\nimport { Routes } from \"./routes${isEsm ? \".js\" : \"\"}\"\nimport { User } from \"./entity/User${isEsm ? \".js\" : \"\"}\"\n\nAppDataSource.initialize().then(async () => {\n\n // create express app\n const app = express()\n app.use(bodyParser.json())\n\n // register express routes from defined application routes\n Routes.forEach(route => {\n (app as any)[route.method](route.route, (req: Request, res: Response, next: Function) => {\n const result = (new (route.controller as any))[route.action](req, res, next)\n if (result instanceof Promise) {\n result.then(result => result !== null && result !== undefined ? res.send(result) : undefined)\n\n } else if (result !== null && result !== undefined) {\n res.json(result)\n }\n })\n })\n\n // setup express app here\n // ...\n\n // start express server\n app.listen(3000)\n\n // insert new users for test\n await AppDataSource.manager.save(\n AppDataSource.manager.create(User, {\n firstName: \"Timber\",\n lastName: \"Saw\",\n age: 27\n })\n )\n\n await AppDataSource.manager.save(\n AppDataSource.manager.create(User, {\n firstName: \"Phantom\",\n lastName: \"Assassin\",\n age: 24\n })\n )\n\n console.log(\"Express server has started on port 3000. Open http://localhost:3000/users to see results\")\n\n}).catch(error => console.log(error))\n`\n } else {\n return `import { AppDataSource } from \"./data-source${\n isEsm ? \".js\" : \"\"\n }\"\nimport { User } from \"./entity/User${isEsm ? \".js\" : \"\"}\"\n\nAppDataSource.initialize().then(async () => {\n\n console.log(\"Inserting a new user into the database...\")\n const user = new User()\n user.firstName = \"Timber\"\n user.lastName = \"Saw\"\n user.age = 25\n await AppDataSource.manager.save(user)\n console.log(\"Saved a new user with id: \" + user.id)\n\n console.log(\"Loading users from the database...\")\n const users = await AppDataSource.manager.find(User)\n console.log(\"Loaded users: \", users)\n\n console.log(\"Here you can setup and run express / fastify / any other framework.\")\n\n}).catch(error => console.log(error))\n`\n }\n }\n\n /**\n * Gets contents of the new package.json file.\n */\n protected static getPackageJsonTemplate(\n projectName?: string,\n projectIsEsm?: boolean,\n ): string {\n return JSON.stringify(\n {\n name: projectName || \"typeorm-sample\",\n version: \"0.0.1\",\n description: \"Awesome project developed with TypeORM.\",\n type: projectIsEsm ? \"module\" : \"commonjs\",\n devDependencies: {},\n dependencies: {},\n scripts: {},\n },\n undefined,\n 3,\n )\n }\n\n /**\n * Gets contents of the new docker-compose.yml file.\n */\n protected static getDockerComposeTemplate(database: string): string {\n switch (database) {\n case \"mysql\":\n return `services:\n\n mysql:\n image: \"mysql:9.2.0\"\n ports:\n - \"3306:3306\"\n environment:\n MYSQL_ROOT_PASSWORD: \"admin\"\n MYSQL_USER: \"test\"\n MYSQL_PASSWORD: \"test\"\n MYSQL_DATABASE: \"test\"\n\n`\n case \"mariadb\":\n return `services:\n\n mariadb:\n image: \"mariadb:11.7.2\"\n ports:\n - \"3306:3306\"\n environment:\n MYSQL_ROOT_PASSWORD: \"admin\"\n MYSQL_USER: \"test\"\n MYSQL_PASSWORD: \"test\"\n MYSQL_DATABASE: \"test\"\n\n`\n case \"postgres\":\n return `services:\n\n postgres:\n image: \"postgres:17.2\"\n ports:\n - \"5432:5432\"\n environment:\n POSTGRES_USER: \"test\"\n POSTGRES_PASSWORD: \"test\"\n POSTGRES_DB: \"test\"\n\n`\n case \"cockroachdb\":\n return `services:\n\n cockroachdb:\n image: \"cockroachdb/cockroach:v25.1.2\"\n command: start --insecure\n ports:\n - \"26257:26257\"\n\n`\n case \"sqlite\":\n case \"better-sqlite3\":\n return `services:\n`\n case \"oracle\":\n throw new TypeORMError(\n `You cannot initialize a project with docker for Oracle driver yet.`,\n ) // todo: implement for oracle as well\n\n case \"mssql\":\n return `services:\n\n mssql:\n image: \"mcr.microsoft.com/mssql/server:2022-latest\"\n ports:\n - \"1433:1433\"\n environment:\n SA_PASSWORD: \"Admin12345\"\n ACCEPT_EULA: \"Y\"\n MSSQL_PID: \"Express\"\n\n`\n case \"mongodb\":\n return `services:\n\n mongodb:\n image: \"mongo:8\"\n container_name: \"typeorm-mongodb\"\n ports:\n - \"27017:27017\"\n\n`\n case \"spanner\":\n return `services:\n\n spanner:\n image: gcr.io/cloud-spanner-emulator/emulator:1.5.30\n ports:\n - \"9010:9010\"\n - \"9020:9020\"\n\n`\n }\n return \"\"\n }\n\n /**\n * Gets contents of the new readme.md file.\n */\n protected static getReadmeTemplate(options: { docker: boolean }): string {\n let template = `# Awesome Project Build with TypeORM\n\nSteps to run this project:\n\n1. Run \\`npm i\\` command\n`\n\n if (options.docker) {\n template += `2. Run \\`docker-compose up\\` command\n`\n } else {\n template += `2. Setup database settings inside \\`data-source.ts\\` file\n`\n }\n\n template += `3. Run \\`npm start\\` command\n`\n return template\n }\n\n /**\n * Appends to a given package.json template everything needed.\n */\n protected static appendPackageJson(\n packageJsonContents: string,\n database: string,\n express: boolean,\n projectIsEsm: boolean /*, docker: boolean*/,\n ): string {\n const packageJson = JSON.parse(packageJsonContents)\n\n if (!packageJson.devDependencies) packageJson.devDependencies = {}\n packageJson.devDependencies = {\n \"@types/node\": ourPackageJson.devDependencies[\"@types/node\"],\n \"ts-node\": ourPackageJson.devDependencies[\"ts-node\"],\n typescript: ourPackageJson.devDependencies.typescript,\n ...packageJson.devDependencies,\n }\n\n if (!packageJson.dependencies) packageJson.dependencies = {}\n packageJson.dependencies = {\n ...packageJson.dependencies,\n \"reflect-metadata\": ourPackageJson.dependencies[\"reflect-metadata\"],\n typeorm: ourPackageJson.version,\n }\n\n switch (database) {\n case \"mysql\":\n case \"mariadb\":\n packageJson.dependencies[\"mysql2\"] =\n ourPackageJson.devDependencies.mysql2\n break\n case \"postgres\":\n case \"cockroachdb\":\n packageJson.dependencies[\"pg\"] =\n ourPackageJson.devDependencies.pg\n break\n case \"sqlite\":\n packageJson.dependencies[\"sqlite3\"] =\n ourPackageJson.devDependencies.sqlite3\n break\n case \"better-sqlite3\":\n packageJson.dependencies[\"better-sqlite3\"] =\n ourPackageJson.devDependencies[\"better-sqlite3\"]\n break\n case \"oracle\":\n packageJson.dependencies[\"oracledb\"] =\n ourPackageJson.devDependencies.oracledb\n break\n case \"mssql\":\n packageJson.dependencies[\"mssql\"] =\n ourPackageJson.devDependencies.mssql\n break\n case \"mongodb\":\n packageJson.dependencies[\"mongodb\"] =\n ourPackageJson.devDependencies.mongodb\n break\n case \"spanner\":\n packageJson.dependencies[\"@google-cloud/spanner\"] =\n ourPackageJson.devDependencies[\"@google-cloud/spanner\"]\n break\n }\n\n if (express) {\n packageJson.dependencies[\"express\"] = \"^4.21.2\"\n packageJson.dependencies[\"body-parser\"] = \"^1.20.3\"\n }\n\n if (!packageJson.scripts) packageJson.scripts = {}\n\n if (projectIsEsm)\n Object.assign(packageJson.scripts, {\n start: /*(docker ? \"docker-compose up && \" : \"\") + */ \"node --loader ts-node/esm src/index.ts\",\n typeorm: \"typeorm-ts-node-esm\",\n })\n else\n Object.assign(packageJson.scripts, {\n start: /*(docker ? \"docker-compose up && \" : \"\") + */ \"ts-node src/index.ts\",\n typeorm: \"typeorm-ts-node-commonjs\",\n })\n\n return JSON.stringify(packageJson, undefined, 3)\n }\n}\n"],"sourceRoot":".."}
@@ -166,4 +166,22 @@ export interface BaseDataSourceOptions {
166
166
  * Allows automatic isolation of where clauses
167
167
  */
168
168
  readonly isolateWhereStatements?: boolean;
169
+ /**
170
+ * Controls how null and undefined values are handled in find operations.
171
+ */
172
+ readonly invalidWhereValuesBehavior?: {
173
+ /**
174
+ * How to handle null values in where conditions.
175
+ * - 'ignore': Skip null properties (default)
176
+ * - 'sql-null': Transform null to SQL NULL
177
+ * - 'throw': Throw an error when null is encountered
178
+ */
179
+ readonly null?: "ignore" | "sql-null" | "throw";
180
+ /**
181
+ * How to handle undefined values in where conditions.
182
+ * - 'ignore': Skip undefined properties (default)
183
+ * - 'throw': Throw an error when undefined is encountered
184
+ */
185
+ readonly undefined?: "ignore" | "throw";
186
+ };
169
187
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/data-source/BaseDataSourceOptions.ts"],"names":[],"mappings":"","file":"BaseDataSourceOptions.js","sourcesContent":["import { EntitySchema } from \"../entity-schema/EntitySchema\"\nimport { LoggerOptions } from \"../logger/LoggerOptions\"\nimport { NamingStrategyInterface } from \"../naming-strategy/NamingStrategyInterface\"\nimport { DatabaseType } from \"../driver/types/DatabaseType\"\nimport { Logger } from \"../logger/Logger\"\nimport { DataSource } from \"../data-source/DataSource\"\nimport { QueryResultCache } from \"../cache/QueryResultCache\"\nimport { MixedList } from \"../common/MixedList\"\n\n/**\n * BaseDataSourceOptions is set of DataSourceOptions shared by all database types.\n */\nexport interface BaseDataSourceOptions {\n /**\n * Database type. This value is required.\n */\n readonly type: DatabaseType\n\n /**\n * Connection name. If connection name is not given then it will be called \"default\".\n * Different connections must have different names.\n *\n * @deprecated\n */\n readonly name?: string\n\n /**\n * Entities to be loaded for this connection.\n * Accepts both entity classes and directories where from entities need to be loaded.\n * Directories support glob patterns.\n */\n readonly entities?: MixedList<Function | string | EntitySchema>\n\n /**\n * Subscribers to be loaded for this connection.\n * Accepts both subscriber classes and directories where from subscribers need to be loaded.\n * Directories support glob patterns.\n */\n readonly subscribers?: MixedList<Function | string>\n\n /**\n * Migrations to be loaded for this connection.\n * Accepts both migration classes and glob patterns representing migration files.\n */\n readonly migrations?: MixedList<Function | string>\n\n /**\n * Migrations table name, in case of different name from \"migrations\".\n * Accepts single string name.\n */\n readonly migrationsTableName?: string\n\n /**\n * Transaction mode for migrations to run in\n */\n readonly migrationsTransactionMode?: \"all\" | \"none\" | \"each\"\n\n /**\n * Typeorm metadata table name, in case of different name from \"typeorm_metadata\".\n * Accepts single string name.\n */\n readonly metadataTableName?: string\n\n /**\n * Naming strategy to be used to name tables and columns in the database.\n */\n readonly namingStrategy?: NamingStrategyInterface\n\n /**\n * Logging options.\n */\n readonly logging?: LoggerOptions\n\n /**\n * Logger instance used to log queries and events in the ORM.\n */\n readonly logger?:\n | \"advanced-console\"\n | \"simple-console\"\n | \"formatted-console\"\n | \"file\"\n | \"debug\"\n | Logger\n\n /**\n * Maximum number of milliseconds query should be executed before logger log a warning.\n */\n readonly maxQueryExecutionTime?: number\n\n /**\n * Maximum number of clients the pool should contain.\n */\n readonly poolSize?: number\n\n /**\n * Indicates if database schema should be auto created on every application launch.\n * Be careful with this option and don't use this in production - otherwise you can lose production data.\n * This option is useful during debug and development.\n * Alternative to it, you can use CLI and run schema:sync command.\n *\n * Note that for MongoDB database it does not create schema, because MongoDB is schemaless.\n * Instead, it syncs just by creating indices.\n */\n readonly synchronize?: boolean\n\n /**\n * Indicates if migrations should be auto run on every application launch.\n * Alternative to it, you can use CLI and run migrations:run command.\n */\n readonly migrationsRun?: boolean\n\n /**\n * Drops the schema each time connection is being established.\n * Be careful with this option and don't use this in production - otherwise you'll lose all production data.\n * This option is useful during debug and development.\n */\n readonly dropSchema?: boolean\n\n /**\n * Prefix to use on all tables (collections) of this connection in the database.\n */\n readonly entityPrefix?: string\n\n /**\n * When creating new Entity instances, skip all constructors when true.\n */\n readonly entitySkipConstructor?: boolean\n\n /**\n * Extra connection options to be passed to the underlying driver.\n *\n * todo: deprecate this and move all database-specific types into hts own connection options object.\n */\n readonly extra?: any\n\n /**\n * Specifies how relations must be loaded - using \"joins\" or separate queries.\n * If you are loading too much data with nested joins it's better to load relations\n * using separate queries.\n *\n * Default strategy is \"join\", but this default can be changed here.\n * Also, strategy can be set per-query in FindOptions and QueryBuilder.\n */\n readonly relationLoadStrategy?: \"join\" | \"query\"\n\n /**\n * Optionally applied \"typename\" to the model.\n * If set, then each hydrated model will have this property with the target model / entity name inside.\n *\n * (works like a discriminator property).\n */\n readonly typename?: string\n\n /**\n * Holds reference to the baseDirectory where configuration file are expected.\n *\n * @internal\n */\n baseDirectory?: string\n\n /**\n * Allows to setup cache options.\n */\n readonly cache?:\n | boolean\n | {\n /**\n * Type of caching.\n *\n * - \"database\" means cached values will be stored in the separate table in database. This is default value.\n * - \"redis\" means cached values will be stored inside redis. You must provide redis connection options.\n */\n readonly type?:\n | \"database\"\n | \"redis\"\n | \"ioredis\"\n | \"ioredis/cluster\" // todo: add mongodb and other cache providers as well in the future\n\n /**\n * Factory function for custom cache providers that implement QueryResultCache.\n */\n readonly provider?: (connection: DataSource) => QueryResultCache\n\n /**\n * Configurable table name for \"database\" type cache.\n * Default value is \"query-result-cache\"\n */\n readonly tableName?: string\n\n /**\n * Used to provide redis connection options.\n */\n readonly options?: any\n\n /**\n * If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.\n */\n readonly alwaysEnabled?: boolean\n\n /**\n * Time in milliseconds in which cache will expire.\n * This can be setup per-query.\n * Default value is 1000 which is equivalent to 1 second.\n */\n readonly duration?: number\n\n /**\n * Used to specify if cache errors should be ignored, and pass through the call to the Database.\n */\n readonly ignoreErrors?: boolean\n }\n\n /**\n * Allows automatic isolation of where clauses\n */\n readonly isolateWhereStatements?: boolean\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/data-source/BaseDataSourceOptions.ts"],"names":[],"mappings":"","file":"BaseDataSourceOptions.js","sourcesContent":["import { EntitySchema } from \"../entity-schema/EntitySchema\"\nimport { LoggerOptions } from \"../logger/LoggerOptions\"\nimport { NamingStrategyInterface } from \"../naming-strategy/NamingStrategyInterface\"\nimport { DatabaseType } from \"../driver/types/DatabaseType\"\nimport { Logger } from \"../logger/Logger\"\nimport { DataSource } from \"../data-source/DataSource\"\nimport { QueryResultCache } from \"../cache/QueryResultCache\"\nimport { MixedList } from \"../common/MixedList\"\n\n/**\n * BaseDataSourceOptions is set of DataSourceOptions shared by all database types.\n */\nexport interface BaseDataSourceOptions {\n /**\n * Database type. This value is required.\n */\n readonly type: DatabaseType\n\n /**\n * Connection name. If connection name is not given then it will be called \"default\".\n * Different connections must have different names.\n *\n * @deprecated\n */\n readonly name?: string\n\n /**\n * Entities to be loaded for this connection.\n * Accepts both entity classes and directories where from entities need to be loaded.\n * Directories support glob patterns.\n */\n readonly entities?: MixedList<Function | string | EntitySchema>\n\n /**\n * Subscribers to be loaded for this connection.\n * Accepts both subscriber classes and directories where from subscribers need to be loaded.\n * Directories support glob patterns.\n */\n readonly subscribers?: MixedList<Function | string>\n\n /**\n * Migrations to be loaded for this connection.\n * Accepts both migration classes and glob patterns representing migration files.\n */\n readonly migrations?: MixedList<Function | string>\n\n /**\n * Migrations table name, in case of different name from \"migrations\".\n * Accepts single string name.\n */\n readonly migrationsTableName?: string\n\n /**\n * Transaction mode for migrations to run in\n */\n readonly migrationsTransactionMode?: \"all\" | \"none\" | \"each\"\n\n /**\n * Typeorm metadata table name, in case of different name from \"typeorm_metadata\".\n * Accepts single string name.\n */\n readonly metadataTableName?: string\n\n /**\n * Naming strategy to be used to name tables and columns in the database.\n */\n readonly namingStrategy?: NamingStrategyInterface\n\n /**\n * Logging options.\n */\n readonly logging?: LoggerOptions\n\n /**\n * Logger instance used to log queries and events in the ORM.\n */\n readonly logger?:\n | \"advanced-console\"\n | \"simple-console\"\n | \"formatted-console\"\n | \"file\"\n | \"debug\"\n | Logger\n\n /**\n * Maximum number of milliseconds query should be executed before logger log a warning.\n */\n readonly maxQueryExecutionTime?: number\n\n /**\n * Maximum number of clients the pool should contain.\n */\n readonly poolSize?: number\n\n /**\n * Indicates if database schema should be auto created on every application launch.\n * Be careful with this option and don't use this in production - otherwise you can lose production data.\n * This option is useful during debug and development.\n * Alternative to it, you can use CLI and run schema:sync command.\n *\n * Note that for MongoDB database it does not create schema, because MongoDB is schemaless.\n * Instead, it syncs just by creating indices.\n */\n readonly synchronize?: boolean\n\n /**\n * Indicates if migrations should be auto run on every application launch.\n * Alternative to it, you can use CLI and run migrations:run command.\n */\n readonly migrationsRun?: boolean\n\n /**\n * Drops the schema each time connection is being established.\n * Be careful with this option and don't use this in production - otherwise you'll lose all production data.\n * This option is useful during debug and development.\n */\n readonly dropSchema?: boolean\n\n /**\n * Prefix to use on all tables (collections) of this connection in the database.\n */\n readonly entityPrefix?: string\n\n /**\n * When creating new Entity instances, skip all constructors when true.\n */\n readonly entitySkipConstructor?: boolean\n\n /**\n * Extra connection options to be passed to the underlying driver.\n *\n * todo: deprecate this and move all database-specific types into hts own connection options object.\n */\n readonly extra?: any\n\n /**\n * Specifies how relations must be loaded - using \"joins\" or separate queries.\n * If you are loading too much data with nested joins it's better to load relations\n * using separate queries.\n *\n * Default strategy is \"join\", but this default can be changed here.\n * Also, strategy can be set per-query in FindOptions and QueryBuilder.\n */\n readonly relationLoadStrategy?: \"join\" | \"query\"\n\n /**\n * Optionally applied \"typename\" to the model.\n * If set, then each hydrated model will have this property with the target model / entity name inside.\n *\n * (works like a discriminator property).\n */\n readonly typename?: string\n\n /**\n * Holds reference to the baseDirectory where configuration file are expected.\n *\n * @internal\n */\n baseDirectory?: string\n\n /**\n * Allows to setup cache options.\n */\n readonly cache?:\n | boolean\n | {\n /**\n * Type of caching.\n *\n * - \"database\" means cached values will be stored in the separate table in database. This is default value.\n * - \"redis\" means cached values will be stored inside redis. You must provide redis connection options.\n */\n readonly type?:\n | \"database\"\n | \"redis\"\n | \"ioredis\"\n | \"ioredis/cluster\" // todo: add mongodb and other cache providers as well in the future\n\n /**\n * Factory function for custom cache providers that implement QueryResultCache.\n */\n readonly provider?: (connection: DataSource) => QueryResultCache\n\n /**\n * Configurable table name for \"database\" type cache.\n * Default value is \"query-result-cache\"\n */\n readonly tableName?: string\n\n /**\n * Used to provide redis connection options.\n */\n readonly options?: any\n\n /**\n * If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.\n */\n readonly alwaysEnabled?: boolean\n\n /**\n * Time in milliseconds in which cache will expire.\n * This can be setup per-query.\n * Default value is 1000 which is equivalent to 1 second.\n */\n readonly duration?: number\n\n /**\n * Used to specify if cache errors should be ignored, and pass through the call to the Database.\n */\n readonly ignoreErrors?: boolean\n }\n\n /**\n * Allows automatic isolation of where clauses\n */\n readonly isolateWhereStatements?: boolean\n\n /**\n * Controls how null and undefined values are handled in find operations.\n */\n readonly invalidWhereValuesBehavior?: {\n /**\n * How to handle null values in where conditions.\n * - 'ignore': Skip null properties (default)\n * - 'sql-null': Transform null to SQL NULL\n * - 'throw': Throw an error when null is encountered\n */\n readonly null?: \"ignore\" | \"sql-null\" | \"throw\"\n\n /**\n * How to handle undefined values in where conditions.\n * - 'ignore': Skip undefined properties (default)\n * - 'throw': Throw an error when undefined is encountered\n */\n readonly undefined?: \"ignore\" | \"throw\"\n }\n}\n"],"sourceRoot":".."}
@@ -1,13 +1,13 @@
1
- import { SimpleColumnType, SpatialColumnType, WithLengthColumnType, WithPrecisionColumnType, WithWidthColumnType } from "../../driver/types/ColumnTypes";
1
+ import { SimpleColumnType, SpatialColumnType, UnsignedColumnType, WithLengthColumnType, WithPrecisionColumnType } from "../../driver/types/ColumnTypes";
2
2
  import { ColumnCommonOptions } from "../options/ColumnCommonOptions";
3
- import { SpatialColumnOptions } from "../options/SpatialColumnOptions";
4
- import { ColumnWithLengthOptions } from "../options/ColumnWithLengthOptions";
5
- import { ColumnNumericOptions } from "../options/ColumnNumericOptions";
6
- import { ColumnEnumOptions } from "../options/ColumnEnumOptions";
7
3
  import { ColumnEmbeddedOptions } from "../options/ColumnEmbeddedOptions";
4
+ import { ColumnEnumOptions } from "../options/ColumnEnumOptions";
8
5
  import { ColumnHstoreOptions } from "../options/ColumnHstoreOptions";
9
- import { ColumnWithWidthOptions } from "../options/ColumnWithWidthOptions";
6
+ import { ColumnNumericOptions } from "../options/ColumnNumericOptions";
10
7
  import { ColumnOptions } from "../options/ColumnOptions";
8
+ import { ColumnUnsignedOptions } from "../options/ColumnUnsignedOptions";
9
+ import { ColumnWithLengthOptions } from "../options/ColumnWithLengthOptions";
10
+ import { SpatialColumnOptions } from "../options/SpatialColumnOptions";
11
11
  /**
12
12
  * Column decorator is used to mark a specific class property as a table column. Only properties decorated with this
13
13
  * decorator will be persisted to the database when entity be saved.
@@ -37,7 +37,7 @@ export declare function Column(type: WithLengthColumnType, options?: ColumnCommo
37
37
  * Column decorator is used to mark a specific class property as a table column.
38
38
  * Only properties decorated with this decorator will be persisted to the database when entity be saved.
39
39
  */
40
- export declare function Column(type: WithWidthColumnType, options?: ColumnCommonOptions & ColumnWithWidthOptions): PropertyDecorator;
40
+ export declare function Column(type: UnsignedColumnType, options?: ColumnCommonOptions & ColumnUnsignedOptions): PropertyDecorator;
41
41
  /**
42
42
  * Column decorator is used to mark a specific class property as a table column.
43
43
  * Only properties decorated with this decorator will be persisted to the database when entity be saved.
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Column = Column;
4
- const globals_1 = require("../../globals");
5
4
  const ColumnTypeUndefinedError_1 = require("../../error/ColumnTypeUndefinedError");
5
+ const globals_1 = require("../../globals");
6
6
  /**
7
7
  * Column decorator is used to mark a specific class property as a table column.
8
8
  * Only properties decorated with this decorator will be persisted to the database when entity be saved.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/decorator/columns/Column.ts"],"names":[],"mappings":"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","file":"Column.js","sourcesContent":["import { getMetadataArgsStorage } from \"../../globals\"\nimport {\n ColumnType,\n SimpleColumnType,\n SpatialColumnType,\n WithLengthColumnType,\n WithPrecisionColumnType,\n WithWidthColumnType,\n} from \"../../driver/types/ColumnTypes\"\nimport { ColumnMetadataArgs } from \"../../metadata-args/ColumnMetadataArgs\"\nimport { ColumnCommonOptions } from \"../options/ColumnCommonOptions\"\nimport { SpatialColumnOptions } from \"../options/SpatialColumnOptions\"\nimport { ColumnWithLengthOptions } from \"../options/ColumnWithLengthOptions\"\nimport { ColumnNumericOptions } from \"../options/ColumnNumericOptions\"\nimport { ColumnEnumOptions } from \"../options/ColumnEnumOptions\"\nimport { ColumnEmbeddedOptions } from \"../options/ColumnEmbeddedOptions\"\nimport { EmbeddedMetadataArgs } from \"../../metadata-args/EmbeddedMetadataArgs\"\nimport { ColumnTypeUndefinedError } from \"../../error/ColumnTypeUndefinedError\"\nimport { ColumnHstoreOptions } from \"../options/ColumnHstoreOptions\"\nimport { ColumnWithWidthOptions } from \"../options/ColumnWithWidthOptions\"\nimport { GeneratedMetadataArgs } from \"../../metadata-args/GeneratedMetadataArgs\"\nimport { ColumnOptions } from \"../options/ColumnOptions\"\n\n/**\n * Column decorator is used to mark a specific class property as a table column. Only properties decorated with this\n * decorator will be persisted to the database when entity be saved.\n */\nexport function Column(): PropertyDecorator\n\n/**\n * Column decorator is used to mark a specific class property as a table column.\n * Only properties decorated with this decorator will be persisted to the database when entity be saved.\n */\nexport function Column(options: ColumnOptions): PropertyDecorator\n\n/**\n * Column decorator is used to mark a specific class property as a table column.\n * Only properties decorated with this decorator will be persisted to the database when entity be saved.\n */\nexport function Column(\n type: SimpleColumnType,\n options?: ColumnCommonOptions,\n): PropertyDecorator\n\n/**\n * Column decorator is used to mark a specific class property as a table column.\n * Only properties decorated with this decorator will be persisted to the database when entity be saved.\n */\nexport function Column(\n type: SpatialColumnType,\n options?: ColumnCommonOptions & SpatialColumnOptions,\n): PropertyDecorator\n\n/**\n * Column decorator is used to mark a specific class property as a table column.\n * Only properties decorated with this decorator will be persisted to the database when entity be saved.\n */\nexport function Column(\n type: WithLengthColumnType,\n options?: ColumnCommonOptions & ColumnWithLengthOptions,\n): PropertyDecorator\n\n/**\n * Column decorator is used to mark a specific class property as a table column.\n * Only properties decorated with this decorator will be persisted to the database when entity be saved.\n */\nexport function Column(\n type: WithWidthColumnType,\n options?: ColumnCommonOptions & ColumnWithWidthOptions,\n): PropertyDecorator\n\n/**\n * Column decorator is used to mark a specific class property as a table column.\n * Only properties decorated with this decorator will be persisted to the database when entity be saved.\n */\nexport function Column(\n type: WithPrecisionColumnType,\n options?: ColumnCommonOptions & ColumnNumericOptions,\n): PropertyDecorator\n\n/**\n * Column decorator is used to mark a specific class property as a table column.\n * Only properties decorated with this decorator will be persisted to the database when entity be saved.\n */\nexport function Column(\n type: \"enum\",\n options?: ColumnCommonOptions & ColumnEnumOptions,\n): PropertyDecorator\n\n/**\n * Column decorator is used to mark a specific class property as a table column.\n * Only properties decorated with this decorator will be persisted to the database when entity be saved.\n */\nexport function Column(\n type: \"simple-enum\",\n options?: ColumnCommonOptions & ColumnEnumOptions,\n): PropertyDecorator\n\n/**\n * Column decorator is used to mark a specific class property as a table column.\n * Only properties decorated with this decorator will be persisted to the database when entity be saved.\n */\nexport function Column(\n type: \"set\",\n options?: ColumnCommonOptions & ColumnEnumOptions,\n): PropertyDecorator\n\n/**\n * Column decorator is used to mark a specific class property as a table column.\n * Only properties decorated with this decorator will be persisted to the database when entity be saved.\n */\nexport function Column(\n type: \"hstore\",\n options?: ColumnCommonOptions & ColumnHstoreOptions,\n): PropertyDecorator\n\n/**\n * Column decorator is used to mark a specific class property as a table column.\n * Only properties decorated with this decorator will be persisted to the database when entity be saved.\n *\n * Property in entity can be marked as Embedded, and on persist all columns from the embedded are mapped to the\n * single table of the entity where Embedded is used. And on hydration all columns which supposed to be in the\n * embedded will be mapped to it from the single table.\n */\nexport function Column(\n type: (type?: any) => Function,\n options?: ColumnEmbeddedOptions,\n): PropertyDecorator\n\n/**\n * Column decorator is used to mark a specific class property as a table column.\n * Only properties decorated with this decorator will be persisted to the database when entity be saved.\n */\nexport function Column(\n typeOrOptions?:\n | ((type?: any) => Function)\n | ColumnType\n | (ColumnOptions & ColumnEmbeddedOptions),\n options?: ColumnOptions & ColumnEmbeddedOptions,\n): PropertyDecorator {\n return function (object: Object, propertyName: string) {\n // normalize parameters\n let type: ColumnType | undefined\n if (\n typeof typeOrOptions === \"string\" ||\n typeof typeOrOptions === \"function\"\n ) {\n type = <ColumnType>typeOrOptions\n } else if (typeOrOptions) {\n options = <ColumnOptions>typeOrOptions\n type = typeOrOptions.type\n }\n if (!options) options = {} as ColumnOptions\n\n // if type is not given explicitly then try to guess it\n const reflectMetadataType =\n Reflect && (Reflect as any).getMetadata\n ? (Reflect as any).getMetadata(\n \"design:type\",\n object,\n propertyName,\n )\n : undefined\n if (!type && reflectMetadataType)\n // if type is not given explicitly then try to guess it\n type = reflectMetadataType\n\n // check if there is no type in column options then set type from first function argument, or guessed one\n if (!options.type && type) options.type = type\n\n // specify HSTORE type if column is HSTORE\n if (options.type === \"hstore\" && !options.hstoreType)\n options.hstoreType =\n reflectMetadataType === Object ? \"object\" : \"string\"\n\n if (typeof typeOrOptions === \"function\") {\n // register an embedded\n getMetadataArgsStorage().embeddeds.push({\n target: object.constructor,\n propertyName: propertyName,\n isArray:\n reflectMetadataType === Array || options.array === true,\n prefix:\n options.prefix !== undefined ? options.prefix : undefined,\n type: typeOrOptions as (type?: any) => Function,\n } as EmbeddedMetadataArgs)\n } else {\n // register a regular column\n\n // if we still don't have a type then we need to give error to user that type is required\n if (!options.type)\n throw new ColumnTypeUndefinedError(object, propertyName)\n\n // create unique\n if (options.unique === true)\n getMetadataArgsStorage().uniques.push({\n target: object.constructor,\n columns: [propertyName],\n })\n\n getMetadataArgsStorage().columns.push({\n target: object.constructor,\n propertyName: propertyName,\n mode: \"regular\",\n options: options,\n } as ColumnMetadataArgs)\n\n if (options.generated) {\n getMetadataArgsStorage().generations.push({\n target: object.constructor,\n propertyName: propertyName,\n strategy:\n typeof options.generated === \"string\"\n ? options.generated\n : \"increment\",\n } as GeneratedMetadataArgs)\n }\n }\n }\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../src/decorator/columns/Column.ts"],"names":[],"mappings":"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","file":"Column.js","sourcesContent":["import {\n ColumnType,\n SimpleColumnType,\n SpatialColumnType,\n UnsignedColumnType,\n WithLengthColumnType,\n WithPrecisionColumnType,\n} from \"../../driver/types/ColumnTypes\"\nimport { ColumnTypeUndefinedError } from \"../../error/ColumnTypeUndefinedError\"\nimport { getMetadataArgsStorage } from \"../../globals\"\nimport { ColumnMetadataArgs } from \"../../metadata-args/ColumnMetadataArgs\"\nimport { EmbeddedMetadataArgs } from \"../../metadata-args/EmbeddedMetadataArgs\"\nimport { GeneratedMetadataArgs } from \"../../metadata-args/GeneratedMetadataArgs\"\nimport { ColumnCommonOptions } from \"../options/ColumnCommonOptions\"\nimport { ColumnEmbeddedOptions } from \"../options/ColumnEmbeddedOptions\"\nimport { ColumnEnumOptions } from \"../options/ColumnEnumOptions\"\nimport { ColumnHstoreOptions } from \"../options/ColumnHstoreOptions\"\nimport { ColumnNumericOptions } from \"../options/ColumnNumericOptions\"\nimport { ColumnOptions } from \"../options/ColumnOptions\"\nimport { ColumnUnsignedOptions } from \"../options/ColumnUnsignedOptions\"\nimport { ColumnWithLengthOptions } from \"../options/ColumnWithLengthOptions\"\nimport { SpatialColumnOptions } from \"../options/SpatialColumnOptions\"\n\n/**\n * Column decorator is used to mark a specific class property as a table column. Only properties decorated with this\n * decorator will be persisted to the database when entity be saved.\n */\nexport function Column(): PropertyDecorator\n\n/**\n * Column decorator is used to mark a specific class property as a table column.\n * Only properties decorated with this decorator will be persisted to the database when entity be saved.\n */\nexport function Column(options: ColumnOptions): PropertyDecorator\n\n/**\n * Column decorator is used to mark a specific class property as a table column.\n * Only properties decorated with this decorator will be persisted to the database when entity be saved.\n */\nexport function Column(\n type: SimpleColumnType,\n options?: ColumnCommonOptions,\n): PropertyDecorator\n\n/**\n * Column decorator is used to mark a specific class property as a table column.\n * Only properties decorated with this decorator will be persisted to the database when entity be saved.\n */\nexport function Column(\n type: SpatialColumnType,\n options?: ColumnCommonOptions & SpatialColumnOptions,\n): PropertyDecorator\n\n/**\n * Column decorator is used to mark a specific class property as a table column.\n * Only properties decorated with this decorator will be persisted to the database when entity be saved.\n */\nexport function Column(\n type: WithLengthColumnType,\n options?: ColumnCommonOptions & ColumnWithLengthOptions,\n): PropertyDecorator\n\n/**\n * Column decorator is used to mark a specific class property as a table column.\n * Only properties decorated with this decorator will be persisted to the database when entity be saved.\n */\nexport function Column(\n type: UnsignedColumnType,\n options?: ColumnCommonOptions & ColumnUnsignedOptions,\n): PropertyDecorator\n\n/**\n * Column decorator is used to mark a specific class property as a table column.\n * Only properties decorated with this decorator will be persisted to the database when entity be saved.\n */\nexport function Column(\n type: WithPrecisionColumnType,\n options?: ColumnCommonOptions & ColumnNumericOptions,\n): PropertyDecorator\n\n/**\n * Column decorator is used to mark a specific class property as a table column.\n * Only properties decorated with this decorator will be persisted to the database when entity be saved.\n */\nexport function Column(\n type: \"enum\",\n options?: ColumnCommonOptions & ColumnEnumOptions,\n): PropertyDecorator\n\n/**\n * Column decorator is used to mark a specific class property as a table column.\n * Only properties decorated with this decorator will be persisted to the database when entity be saved.\n */\nexport function Column(\n type: \"simple-enum\",\n options?: ColumnCommonOptions & ColumnEnumOptions,\n): PropertyDecorator\n\n/**\n * Column decorator is used to mark a specific class property as a table column.\n * Only properties decorated with this decorator will be persisted to the database when entity be saved.\n */\nexport function Column(\n type: \"set\",\n options?: ColumnCommonOptions & ColumnEnumOptions,\n): PropertyDecorator\n\n/**\n * Column decorator is used to mark a specific class property as a table column.\n * Only properties decorated with this decorator will be persisted to the database when entity be saved.\n */\nexport function Column(\n type: \"hstore\",\n options?: ColumnCommonOptions & ColumnHstoreOptions,\n): PropertyDecorator\n\n/**\n * Column decorator is used to mark a specific class property as a table column.\n * Only properties decorated with this decorator will be persisted to the database when entity be saved.\n *\n * Property in entity can be marked as Embedded, and on persist all columns from the embedded are mapped to the\n * single table of the entity where Embedded is used. And on hydration all columns which supposed to be in the\n * embedded will be mapped to it from the single table.\n */\nexport function Column(\n type: (type?: any) => Function,\n options?: ColumnEmbeddedOptions,\n): PropertyDecorator\n\n/**\n * Column decorator is used to mark a specific class property as a table column.\n * Only properties decorated with this decorator will be persisted to the database when entity be saved.\n */\nexport function Column(\n typeOrOptions?:\n | ((type?: any) => Function)\n | ColumnType\n | (ColumnOptions & ColumnEmbeddedOptions),\n options?: ColumnOptions & ColumnEmbeddedOptions,\n): PropertyDecorator {\n return function (object: Object, propertyName: string) {\n // normalize parameters\n let type: ColumnType | undefined\n if (\n typeof typeOrOptions === \"string\" ||\n typeof typeOrOptions === \"function\"\n ) {\n type = <ColumnType>typeOrOptions\n } else if (typeOrOptions) {\n options = <ColumnOptions>typeOrOptions\n type = typeOrOptions.type\n }\n if (!options) options = {} as ColumnOptions\n\n // if type is not given explicitly then try to guess it\n const reflectMetadataType =\n Reflect && (Reflect as any).getMetadata\n ? (Reflect as any).getMetadata(\n \"design:type\",\n object,\n propertyName,\n )\n : undefined\n if (!type && reflectMetadataType)\n // if type is not given explicitly then try to guess it\n type = reflectMetadataType\n\n // check if there is no type in column options then set type from first function argument, or guessed one\n if (!options.type && type) options.type = type\n\n // specify HSTORE type if column is HSTORE\n if (options.type === \"hstore\" && !options.hstoreType)\n options.hstoreType =\n reflectMetadataType === Object ? \"object\" : \"string\"\n\n if (typeof typeOrOptions === \"function\") {\n // register an embedded\n getMetadataArgsStorage().embeddeds.push({\n target: object.constructor,\n propertyName: propertyName,\n isArray:\n reflectMetadataType === Array || options.array === true,\n prefix:\n options.prefix !== undefined ? options.prefix : undefined,\n type: typeOrOptions as (type?: any) => Function,\n } as EmbeddedMetadataArgs)\n } else {\n // register a regular column\n\n // if we still don't have a type then we need to give error to user that type is required\n if (!options.type)\n throw new ColumnTypeUndefinedError(object, propertyName)\n\n // create unique\n if (options.unique === true)\n getMetadataArgsStorage().uniques.push({\n target: object.constructor,\n columns: [propertyName],\n })\n\n getMetadataArgsStorage().columns.push({\n target: object.constructor,\n propertyName: propertyName,\n mode: \"regular\",\n options: options,\n } as ColumnMetadataArgs)\n\n if (options.generated) {\n getMetadataArgsStorage().generations.push({\n target: object.constructor,\n propertyName: propertyName,\n strategy:\n typeof options.generated === \"string\"\n ? options.generated\n : \"increment\",\n } as GeneratedMetadataArgs)\n }\n }\n }\n}\n"],"sourceRoot":"../.."}
@@ -14,11 +14,18 @@ export interface ColumnNumericOptions {
14
14
  scale?: number;
15
15
  /**
16
16
  * Puts ZEROFILL attribute on to numeric column. Works only for MySQL.
17
- * If you specify ZEROFILL for a numeric column, MySQL automatically adds the UNSIGNED attribute to the column
17
+ * If you specify ZEROFILL for a numeric column, MySQL automatically adds
18
+ * the UNSIGNED attribute to the column
19
+ * @deprecated MySQL deprecated and removed the ZEROFILL attribute. This
20
+ * will also be removed from TypeORM in an upcoming version. Use a character
21
+ * column and the `LPAD` function as suggested by MySQL or handle the
22
+ * formatting in the application layer.
18
23
  */
19
24
  zerofill?: boolean;
20
25
  /**
21
26
  * Puts UNSIGNED attribute on to numeric column. Works only for MySQL.
27
+ * @deprecated MySQL deprecated the UNSIGNED attribute for non-integer
28
+ * numeric types. This will also be removed from TypeORM in an upcoming version.
22
29
  */
23
30
  unsigned?: boolean;
24
31
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/decorator/options/ColumnNumericOptions.ts"],"names":[],"mappings":"","file":"ColumnNumericOptions.js","sourcesContent":["/**\n * Options for numeric column types where user can specify scale and precision.\n */\nexport interface ColumnNumericOptions {\n /**\n * The precision for a decimal (exact numeric) column (applies only for decimal column), which is the maximum\n * number of digits that are stored for the values.\n */\n precision?: number\n\n /**\n * The scale for a decimal (exact numeric) column (applies only for decimal column), which represents the number\n * of digits to the right of the decimal point and must not be greater than precision.\n */\n scale?: number\n\n /**\n * Puts ZEROFILL attribute on to numeric column. Works only for MySQL.\n * If you specify ZEROFILL for a numeric column, MySQL automatically adds the UNSIGNED attribute to the column\n */\n zerofill?: boolean\n\n /**\n * Puts UNSIGNED attribute on to numeric column. Works only for MySQL.\n */\n unsigned?: boolean\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../src/decorator/options/ColumnNumericOptions.ts"],"names":[],"mappings":"","file":"ColumnNumericOptions.js","sourcesContent":["/**\n * Options for numeric column types where user can specify scale and precision.\n */\nexport interface ColumnNumericOptions {\n /**\n * The precision for a decimal (exact numeric) column (applies only for decimal column), which is the maximum\n * number of digits that are stored for the values.\n */\n precision?: number\n\n /**\n * The scale for a decimal (exact numeric) column (applies only for decimal column), which represents the number\n * of digits to the right of the decimal point and must not be greater than precision.\n */\n scale?: number\n\n /**\n * Puts ZEROFILL attribute on to numeric column. Works only for MySQL.\n * If you specify ZEROFILL for a numeric column, MySQL automatically adds\n * the UNSIGNED attribute to the column\n * @deprecated MySQL deprecated and removed the ZEROFILL attribute. This\n * will also be removed from TypeORM in an upcoming version. Use a character\n * column and the `LPAD` function as suggested by MySQL or handle the\n * formatting in the application layer.\n */\n zerofill?: boolean\n\n /**\n * Puts UNSIGNED attribute on to numeric column. Works only for MySQL.\n * @deprecated MySQL deprecated the UNSIGNED attribute for non-integer\n * numeric types. This will also be removed from TypeORM in an upcoming version.\n */\n unsigned?: boolean\n}\n"],"sourceRoot":"../.."}
@@ -21,6 +21,9 @@ export interface ColumnOptions extends ColumnCommonOptions {
21
21
  /**
22
22
  * Column type's display width. Used only on some column types in MySQL.
23
23
  * For example, INT(4) specifies an INT with a display width of four digits.
24
+ * @deprecated No longer supported in newer MySQL versions, will be removed
25
+ * from TypeORM in an upcoming version. Use a character column and the
26
+ * `LPAD` function as suggested by MySQL
24
27
  */
25
28
  width?: number;
26
29
  /**
@@ -88,6 +91,9 @@ export interface ColumnOptions extends ColumnCommonOptions {
88
91
  /**
89
92
  * Puts ZEROFILL attribute on to numeric column. Works only for MySQL.
90
93
  * If you specify ZEROFILL for a numeric column, MySQL automatically adds the UNSIGNED attribute to this column
94
+ * @deprecated No longer supported in newer MySQL versions, will be removed
95
+ * from TypeORM in an upcoming version. Use a character column and the
96
+ * `LPAD` function as suggested by MySQL
91
97
  */
92
98
  zerofill?: boolean;
93
99
  /**