typeorm 0.3.21-dev.67c896f → 0.3.21-dev.71addb2

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 (208) hide show
  1. package/browser/connection/ConnectionOptionsReader.d.ts +4 -4
  2. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts +0 -1
  3. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js +2 -2
  4. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  5. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  6. package/browser/driver/cockroachdb/CockroachConnectionCredentialsOptions.d.ts +0 -1
  7. package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +0 -1
  8. package/browser/driver/mongodb/MongoConnectionOptions.d.ts +0 -1
  9. package/browser/driver/mongodb/MongoQueryRunner.d.ts +0 -1
  10. package/browser/driver/mongodb/typings.d.ts +0 -8
  11. package/browser/driver/mongodb/typings.js +0 -1
  12. package/browser/driver/mongodb/typings.js.map +1 -1
  13. package/browser/driver/mysql/MysqlQueryRunner.d.ts +0 -1
  14. package/browser/driver/oracle/OracleQueryRunner.d.ts +0 -1
  15. package/browser/driver/postgres/PostgresConnectionCredentialsOptions.d.ts +0 -1
  16. package/browser/driver/postgres/PostgresQueryRunner.d.ts +0 -1
  17. package/browser/driver/sap/SapQueryRunner.d.ts +0 -1
  18. package/browser/driver/spanner/SpannerQueryRunner.d.ts +0 -1
  19. package/browser/driver/sqlite/SqliteDriver.js +2 -2
  20. package/browser/driver/sqlite/SqliteDriver.js.map +1 -1
  21. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +0 -1
  22. package/browser/driver/sqlserver/SqlServerQueryRunner.d.ts +0 -1
  23. package/browser/find-options/FindOptionsOrder.d.ts +0 -1
  24. package/browser/find-options/FindOptionsRelations.d.ts +0 -1
  25. package/browser/find-options/FindOptionsSelect.d.ts +0 -1
  26. package/browser/find-options/FindOptionsWhere.d.ts +0 -1
  27. package/browser/platform/PlatformTools.d.ts +0 -4
  28. package/browser/platform/PlatformTools.js +3 -9
  29. package/browser/platform/PlatformTools.js.map +1 -1
  30. package/browser/query-builder/SelectQueryBuilder.d.ts +0 -1
  31. package/browser/query-runner/QueryRunner.d.ts +0 -1
  32. package/browser/util/ImportUtils.js +22 -34
  33. package/browser/util/ImportUtils.js.map +1 -1
  34. package/commands/CommandUtils.d.ts +1 -1
  35. package/commands/CommandUtils.js +18 -16
  36. package/commands/CommandUtils.js.map +1 -1
  37. package/connection/ConnectionOptionsReader.d.ts +4 -4
  38. package/container.js +2 -3
  39. package/container.js.map +1 -1
  40. package/decorator/Check.js +1 -2
  41. package/decorator/Check.js.map +1 -1
  42. package/decorator/EntityRepository.js +1 -2
  43. package/decorator/EntityRepository.js.map +1 -1
  44. package/decorator/Exclusion.js +1 -2
  45. package/decorator/Exclusion.js.map +1 -1
  46. package/decorator/Generated.js +1 -2
  47. package/decorator/Generated.js.map +1 -1
  48. package/decorator/Index.js +1 -2
  49. package/decorator/Index.js.map +1 -1
  50. package/decorator/Unique.js +1 -2
  51. package/decorator/Unique.js.map +1 -1
  52. package/decorator/columns/Column.js +1 -2
  53. package/decorator/columns/Column.js.map +1 -1
  54. package/decorator/columns/CreateDateColumn.js +1 -2
  55. package/decorator/columns/CreateDateColumn.js.map +1 -1
  56. package/decorator/columns/DeleteDateColumn.js +1 -2
  57. package/decorator/columns/DeleteDateColumn.js.map +1 -1
  58. package/decorator/columns/ObjectIdColumn.js +1 -2
  59. package/decorator/columns/ObjectIdColumn.js.map +1 -1
  60. package/decorator/columns/PrimaryColumn.js +1 -2
  61. package/decorator/columns/PrimaryColumn.js.map +1 -1
  62. package/decorator/columns/PrimaryGeneratedColumn.js +1 -2
  63. package/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
  64. package/decorator/columns/UpdateDateColumn.js +1 -2
  65. package/decorator/columns/UpdateDateColumn.js.map +1 -1
  66. package/decorator/columns/VersionColumn.js +1 -2
  67. package/decorator/columns/VersionColumn.js.map +1 -1
  68. package/decorator/columns/ViewColumn.js +1 -2
  69. package/decorator/columns/ViewColumn.js.map +1 -1
  70. package/decorator/columns/VirtualColumn.js +1 -2
  71. package/decorator/columns/VirtualColumn.js.map +1 -1
  72. package/decorator/entity/ChildEntity.js +1 -2
  73. package/decorator/entity/ChildEntity.js.map +1 -1
  74. package/decorator/entity/Entity.js +1 -2
  75. package/decorator/entity/Entity.js.map +1 -1
  76. package/decorator/entity/TableInheritance.js +1 -2
  77. package/decorator/entity/TableInheritance.js.map +1 -1
  78. package/decorator/entity-view/ViewEntity.js +1 -2
  79. package/decorator/entity-view/ViewEntity.js.map +1 -1
  80. package/decorator/listeners/AfterInsert.js +1 -2
  81. package/decorator/listeners/AfterInsert.js.map +1 -1
  82. package/decorator/listeners/AfterLoad.js +1 -2
  83. package/decorator/listeners/AfterLoad.js.map +1 -1
  84. package/decorator/listeners/AfterRecover.js +1 -2
  85. package/decorator/listeners/AfterRecover.js.map +1 -1
  86. package/decorator/listeners/AfterRemove.js +1 -2
  87. package/decorator/listeners/AfterRemove.js.map +1 -1
  88. package/decorator/listeners/AfterSoftRemove.js +1 -2
  89. package/decorator/listeners/AfterSoftRemove.js.map +1 -1
  90. package/decorator/listeners/AfterUpdate.js +1 -2
  91. package/decorator/listeners/AfterUpdate.js.map +1 -1
  92. package/decorator/listeners/BeforeInsert.js +1 -2
  93. package/decorator/listeners/BeforeInsert.js.map +1 -1
  94. package/decorator/listeners/BeforeRecover.js +1 -2
  95. package/decorator/listeners/BeforeRecover.js.map +1 -1
  96. package/decorator/listeners/BeforeRemove.js +1 -2
  97. package/decorator/listeners/BeforeRemove.js.map +1 -1
  98. package/decorator/listeners/BeforeSoftRemove.js +1 -2
  99. package/decorator/listeners/BeforeSoftRemove.js.map +1 -1
  100. package/decorator/listeners/BeforeUpdate.js +1 -2
  101. package/decorator/listeners/BeforeUpdate.js.map +1 -1
  102. package/decorator/listeners/EventSubscriber.js +1 -2
  103. package/decorator/listeners/EventSubscriber.js.map +1 -1
  104. package/decorator/relations/JoinColumn.js +1 -2
  105. package/decorator/relations/JoinColumn.js.map +1 -1
  106. package/decorator/relations/JoinTable.js +1 -2
  107. package/decorator/relations/JoinTable.js.map +1 -1
  108. package/decorator/relations/ManyToMany.js +1 -2
  109. package/decorator/relations/ManyToMany.js.map +1 -1
  110. package/decorator/relations/ManyToOne.js +1 -2
  111. package/decorator/relations/ManyToOne.js.map +1 -1
  112. package/decorator/relations/OneToMany.js +1 -2
  113. package/decorator/relations/OneToMany.js.map +1 -1
  114. package/decorator/relations/OneToOne.js +1 -2
  115. package/decorator/relations/OneToOne.js.map +1 -1
  116. package/decorator/relations/RelationCount.js +1 -2
  117. package/decorator/relations/RelationCount.js.map +1 -1
  118. package/decorator/relations/RelationId.js +1 -2
  119. package/decorator/relations/RelationId.js.map +1 -1
  120. package/decorator/tree/Tree.js +1 -2
  121. package/decorator/tree/Tree.js.map +1 -1
  122. package/decorator/tree/TreeChildren.js +1 -2
  123. package/decorator/tree/TreeChildren.js.map +1 -1
  124. package/decorator/tree/TreeLevelColumn.js +1 -2
  125. package/decorator/tree/TreeLevelColumn.js.map +1 -1
  126. package/decorator/tree/TreeParent.js +1 -2
  127. package/decorator/tree/TreeParent.js.map +1 -1
  128. package/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts +0 -1
  129. package/driver/better-sqlite3/BetterSqlite3Driver.js +2 -2
  130. package/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  131. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  132. package/driver/cockroachdb/CockroachConnectionCredentialsOptions.d.ts +0 -1
  133. package/driver/cockroachdb/CockroachQueryRunner.d.ts +0 -1
  134. package/driver/mongodb/MongoConnectionOptions.d.ts +0 -1
  135. package/driver/mongodb/MongoQueryRunner.d.ts +0 -1
  136. package/driver/mongodb/typings.d.ts +0 -8
  137. package/driver/mongodb/typings.js +0 -1
  138. package/driver/mongodb/typings.js.map +1 -1
  139. package/driver/mysql/MysqlQueryRunner.d.ts +0 -1
  140. package/driver/oracle/OracleQueryRunner.d.ts +0 -1
  141. package/driver/postgres/PostgresConnectionCredentialsOptions.d.ts +0 -1
  142. package/driver/postgres/PostgresQueryRunner.d.ts +0 -1
  143. package/driver/sap/SapQueryRunner.d.ts +0 -1
  144. package/driver/spanner/SpannerQueryRunner.d.ts +0 -1
  145. package/driver/sqlite/SqliteDriver.js +2 -2
  146. package/driver/sqlite/SqliteDriver.js.map +1 -1
  147. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +0 -1
  148. package/driver/sqlserver/SqlServerQueryRunner.d.ts +0 -1
  149. package/find-options/FindOptionsOrder.d.ts +0 -1
  150. package/find-options/FindOptionsRelations.d.ts +0 -1
  151. package/find-options/FindOptionsSelect.d.ts +0 -1
  152. package/find-options/FindOptionsWhere.d.ts +0 -1
  153. package/find-options/operator/And.js +1 -2
  154. package/find-options/operator/And.js.map +1 -1
  155. package/find-options/operator/Any.js +1 -2
  156. package/find-options/operator/Any.js.map +1 -1
  157. package/find-options/operator/ArrayContainedBy.js +1 -2
  158. package/find-options/operator/ArrayContainedBy.js.map +1 -1
  159. package/find-options/operator/ArrayContains.js +1 -2
  160. package/find-options/operator/ArrayContains.js.map +1 -1
  161. package/find-options/operator/ArrayOverlap.js +1 -2
  162. package/find-options/operator/ArrayOverlap.js.map +1 -1
  163. package/find-options/operator/Between.js +1 -2
  164. package/find-options/operator/Between.js.map +1 -1
  165. package/find-options/operator/Equal.js +1 -2
  166. package/find-options/operator/Equal.js.map +1 -1
  167. package/find-options/operator/ILike.js +1 -2
  168. package/find-options/operator/ILike.js.map +1 -1
  169. package/find-options/operator/In.js +1 -2
  170. package/find-options/operator/In.js.map +1 -1
  171. package/find-options/operator/IsNull.js +1 -2
  172. package/find-options/operator/IsNull.js.map +1 -1
  173. package/find-options/operator/JsonContains.js +1 -2
  174. package/find-options/operator/JsonContains.js.map +1 -1
  175. package/find-options/operator/LessThan.js +1 -2
  176. package/find-options/operator/LessThan.js.map +1 -1
  177. package/find-options/operator/LessThanOrEqual.js +1 -2
  178. package/find-options/operator/LessThanOrEqual.js.map +1 -1
  179. package/find-options/operator/Like.js +1 -2
  180. package/find-options/operator/Like.js.map +1 -1
  181. package/find-options/operator/MoreThan.js +1 -2
  182. package/find-options/operator/MoreThan.js.map +1 -1
  183. package/find-options/operator/MoreThanOrEqual.js +1 -2
  184. package/find-options/operator/MoreThanOrEqual.js.map +1 -1
  185. package/find-options/operator/Not.js +1 -2
  186. package/find-options/operator/Not.js.map +1 -1
  187. package/find-options/operator/Or.js +1 -2
  188. package/find-options/operator/Or.js.map +1 -1
  189. package/find-options/operator/Raw.js +1 -2
  190. package/find-options/operator/Raw.js.map +1 -1
  191. package/globals.js +14 -15
  192. package/globals.js.map +1 -1
  193. package/package.json +1 -1
  194. package/platform/PlatformTools.d.ts +0 -4
  195. package/platform/PlatformTools.js +12 -18
  196. package/platform/PlatformTools.js.map +1 -1
  197. package/query-builder/SelectQueryBuilder.d.ts +0 -1
  198. package/query-builder/index.js +1 -2
  199. package/query-builder/index.js.map +1 -1
  200. package/query-runner/QueryRunner.d.ts +0 -1
  201. package/util/DirectoryExportedClassesLoader.js +2 -3
  202. package/util/DirectoryExportedClassesLoader.js.map +1 -1
  203. package/util/ImportUtils.js +23 -36
  204. package/util/ImportUtils.js.map +1 -1
  205. package/util/PathUtils.js +3 -4
  206. package/util/PathUtils.js.map +1 -1
  207. package/util/StringUtils.js +6 -7
  208. package/util/StringUtils.js.map +1 -1
@@ -1,4 +1,3 @@
1
-
2
1
  import { QueryRunner } from "../../query-runner/QueryRunner";
3
2
  import { TableColumn } from "../../schema-builder/table/TableColumn";
4
3
  import { Table } from "../../schema-builder/table/Table";
@@ -1,4 +1,3 @@
1
-
2
1
  import { QueryRunner } from "../../query-runner/QueryRunner";
3
2
  import { TableColumn } from "../../schema-builder/table/TableColumn";
4
3
  import { Table } from "../../schema-builder/table/Table";
@@ -1,4 +1,3 @@
1
-
2
1
  import { TlsOptions } from "tls";
3
2
  /**
4
3
  * Postgres specific connection credential options.
@@ -1,4 +1,3 @@
1
-
2
1
  import { ReadStream } from "../../platform/PlatformTools";
3
2
  import { BaseQueryRunner } from "../../query-runner/BaseQueryRunner";
4
3
  import { QueryRunner } from "../../query-runner/QueryRunner";
@@ -1,4 +1,3 @@
1
-
2
1
  import { ReadStream } from "../../platform/PlatformTools";
3
2
  import { BaseQueryRunner } from "../../query-runner/BaseQueryRunner";
4
3
  import { QueryRunner } from "../../query-runner/QueryRunner";
@@ -1,4 +1,3 @@
1
-
2
1
  import { ReadStream } from "../../platform/PlatformTools";
3
2
  import { BaseQueryRunner } from "../../query-runner/BaseQueryRunner";
4
3
  import { QueryRunner } from "../../query-runner/QueryRunner";
@@ -1,4 +1,4 @@
1
- import mkdirp from "mkdirp";
1
+ import fs from "fs/promises";
2
2
  import path from "path";
3
3
  import { DriverPackageNotInstalledError } from "../../error/DriverPackageNotInstalledError";
4
4
  import { SqliteQueryRunner } from "./SqliteQueryRunner";
@@ -143,7 +143,7 @@ export class SqliteDriver extends AbstractSqliteDriver {
143
143
  * Auto creates database directory if it does not exist.
144
144
  */
145
145
  async createDatabaseDirectory(fullPath) {
146
- await mkdirp(path.dirname(fullPath));
146
+ await fs.mkdir(path.dirname(fullPath), { recursive: true });
147
147
  }
148
148
  /**
149
149
  * Performs the attaching of the database files. The attachedDatabase should have been populated during calls to #buildTableName
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/driver/sqlite/SqliteDriver.ts"],"names":[],"mappings":"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","file":"SqliteDriver.js","sourcesContent":["import mkdirp from \"mkdirp\"\nimport path from \"path\"\nimport { DriverPackageNotInstalledError } from \"../../error/DriverPackageNotInstalledError\"\nimport { SqliteQueryRunner } from \"./SqliteQueryRunner\"\nimport { PlatformTools } from \"../../platform/PlatformTools\"\nimport { DataSource } from \"../../data-source/DataSource\"\nimport { SqliteConnectionOptions } from \"./SqliteConnectionOptions\"\nimport { ColumnType } from \"../types/ColumnTypes\"\nimport { QueryRunner } from \"../../query-runner/QueryRunner\"\nimport { AbstractSqliteDriver } from \"../sqlite-abstract/AbstractSqliteDriver\"\nimport { ReplicationMode } from \"../types/ReplicationMode\"\nimport { filepathToName, isAbsolute } from \"../../util/PathUtils\"\n\n/**\n * Organizes communication with sqlite DBMS.\n */\nexport class SqliteDriver extends AbstractSqliteDriver {\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Connection options.\n */\n options: SqliteConnectionOptions\n\n /**\n * SQLite underlying library.\n */\n sqlite: any\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(connection: DataSource) {\n super(connection)\n this.connection = connection\n this.options = connection.options as SqliteConnectionOptions\n this.database = this.options.database\n\n // load sqlite package\n this.loadDependencies()\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Closes connection with database.\n */\n async disconnect(): Promise<void> {\n return new Promise<void>((ok, fail) => {\n this.queryRunner = undefined\n this.databaseConnection.close((err: any) =>\n err ? fail(err) : ok(),\n )\n })\n }\n\n /**\n * Creates a query runner used to execute database queries.\n */\n createQueryRunner(mode: ReplicationMode): QueryRunner {\n if (!this.queryRunner) this.queryRunner = new SqliteQueryRunner(this)\n\n return this.queryRunner\n }\n\n normalizeType(column: {\n type?: ColumnType\n length?: number | string\n precision?: number | null\n scale?: number\n }): string {\n if ((column.type as any) === Buffer) {\n return \"blob\"\n }\n\n return super.normalizeType(column)\n }\n\n async afterConnect(): Promise<void> {\n return this.attachDatabases()\n }\n\n /**\n * For SQLite, the database may be added in the decorator metadata. It will be a filepath to a database file.\n */\n buildTableName(\n tableName: string,\n _schema?: string,\n database?: string,\n ): string {\n if (!database) return tableName\n if (this.getAttachedDatabaseHandleByRelativePath(database))\n return `${this.getAttachedDatabaseHandleByRelativePath(\n database,\n )}.${tableName}`\n\n if (database === this.options.database) return tableName\n\n // we use the decorated name as supplied when deriving attach handle (ideally without non-portable absolute path)\n const identifierHash = filepathToName(database)\n // decorated name will be assumed relative to main database file when non absolute. Paths supplied as absolute won't be portable\n const absFilepath = isAbsolute(database)\n ? database\n : path.join(this.getMainDatabasePath(), database)\n\n this.attachedDatabases[database] = {\n attachFilepathAbsolute: absFilepath,\n attachFilepathRelative: database,\n attachHandle: identifierHash,\n }\n\n return `${identifierHash}.${tableName}`\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates connection with the database.\n */\n protected async createDatabaseConnection() {\n if (\n this.options.flags === undefined ||\n !(this.options.flags & this.sqlite.OPEN_URI)\n ) {\n await this.createDatabaseDirectory(this.options.database)\n }\n\n const databaseConnection: any = await new Promise((ok, fail) => {\n if (this.options.flags === undefined) {\n const connection = new this.sqlite.Database(\n this.options.database,\n (err: any) => {\n if (err) return fail(err)\n ok(connection)\n },\n )\n } else {\n const connection = new this.sqlite.Database(\n this.options.database,\n this.options.flags,\n (err: any) => {\n if (err) return fail(err)\n ok(connection)\n },\n )\n }\n })\n\n // Internal function to run a command on the connection and fail if an error occured.\n function run(line: string): Promise<void> {\n return new Promise((ok, fail) => {\n databaseConnection.run(line, (err: any) => {\n if (err) return fail(err)\n ok()\n })\n })\n }\n // in the options, if encryption key for SQLCipher is setted.\n // Must invoke key pragma before trying to do any other interaction with the database.\n if (this.options.key) {\n await run(`PRAGMA key = ${JSON.stringify(this.options.key)}`)\n }\n\n if (this.options.enableWAL) {\n await run(`PRAGMA journal_mode = WAL`)\n }\n\n if (\n this.options.busyTimeout &&\n typeof this.options.busyTimeout === \"number\" &&\n this.options.busyTimeout > 0\n ) {\n await run(`PRAGMA busy_timeout = ${this.options.busyTimeout}`)\n }\n\n // we need to enable foreign keys in sqlite to make sure all foreign key related features\n // working properly. this also makes onDelete to work with sqlite.\n await run(`PRAGMA foreign_keys = ON`)\n\n return databaseConnection\n }\n\n /**\n * If driver dependency is not given explicitly, then try to load it via \"require\".\n */\n protected loadDependencies(): void {\n try {\n const sqlite = this.options.driver || PlatformTools.load(\"sqlite3\")\n this.sqlite = sqlite.verbose()\n } catch (e) {\n throw new DriverPackageNotInstalledError(\"SQLite\", \"sqlite3\")\n }\n }\n\n /**\n * Auto creates database directory if it does not exist.\n */\n protected async createDatabaseDirectory(fullPath: string): Promise<void> {\n await mkdirp(path.dirname(fullPath))\n }\n\n /**\n * Performs the attaching of the database files. The attachedDatabase should have been populated during calls to #buildTableName\n * during EntityMetadata production (see EntityMetadata#buildTablePath)\n *\n * https://sqlite.org/lang_attach.html\n */\n protected async attachDatabases() {\n // @todo - possibly check number of databases (but unqueriable at runtime sadly) - https://www.sqlite.org/limits.html#max_attached\n for await (const {\n attachHandle,\n attachFilepathAbsolute,\n } of Object.values(this.attachedDatabases)) {\n await this.createDatabaseDirectory(attachFilepathAbsolute)\n await this.connection.query(\n `ATTACH \"${attachFilepathAbsolute}\" AS \"${attachHandle}\"`,\n )\n }\n }\n\n protected getMainDatabasePath(): string {\n const optionsDb = this.options.database\n return path.dirname(\n isAbsolute(optionsDb)\n ? optionsDb\n : path.join(process.cwd(), optionsDb),\n )\n }\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../browser/src/driver/sqlite/SqliteDriver.ts"],"names":[],"mappings":"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","file":"SqliteDriver.js","sourcesContent":["import fs from \"fs/promises\"\nimport path from \"path\"\nimport { DriverPackageNotInstalledError } from \"../../error/DriverPackageNotInstalledError\"\nimport { SqliteQueryRunner } from \"./SqliteQueryRunner\"\nimport { PlatformTools } from \"../../platform/PlatformTools\"\nimport { DataSource } from \"../../data-source/DataSource\"\nimport { SqliteConnectionOptions } from \"./SqliteConnectionOptions\"\nimport { ColumnType } from \"../types/ColumnTypes\"\nimport { QueryRunner } from \"../../query-runner/QueryRunner\"\nimport { AbstractSqliteDriver } from \"../sqlite-abstract/AbstractSqliteDriver\"\nimport { ReplicationMode } from \"../types/ReplicationMode\"\nimport { filepathToName, isAbsolute } from \"../../util/PathUtils\"\n\n/**\n * Organizes communication with sqlite DBMS.\n */\nexport class SqliteDriver extends AbstractSqliteDriver {\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Connection options.\n */\n options: SqliteConnectionOptions\n\n /**\n * SQLite underlying library.\n */\n sqlite: any\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(connection: DataSource) {\n super(connection)\n this.connection = connection\n this.options = connection.options as SqliteConnectionOptions\n this.database = this.options.database\n\n // load sqlite package\n this.loadDependencies()\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Closes connection with database.\n */\n async disconnect(): Promise<void> {\n return new Promise<void>((ok, fail) => {\n this.queryRunner = undefined\n this.databaseConnection.close((err: any) =>\n err ? fail(err) : ok(),\n )\n })\n }\n\n /**\n * Creates a query runner used to execute database queries.\n */\n createQueryRunner(mode: ReplicationMode): QueryRunner {\n if (!this.queryRunner) this.queryRunner = new SqliteQueryRunner(this)\n\n return this.queryRunner\n }\n\n normalizeType(column: {\n type?: ColumnType\n length?: number | string\n precision?: number | null\n scale?: number\n }): string {\n if ((column.type as any) === Buffer) {\n return \"blob\"\n }\n\n return super.normalizeType(column)\n }\n\n async afterConnect(): Promise<void> {\n return this.attachDatabases()\n }\n\n /**\n * For SQLite, the database may be added in the decorator metadata. It will be a filepath to a database file.\n */\n buildTableName(\n tableName: string,\n _schema?: string,\n database?: string,\n ): string {\n if (!database) return tableName\n if (this.getAttachedDatabaseHandleByRelativePath(database))\n return `${this.getAttachedDatabaseHandleByRelativePath(\n database,\n )}.${tableName}`\n\n if (database === this.options.database) return tableName\n\n // we use the decorated name as supplied when deriving attach handle (ideally without non-portable absolute path)\n const identifierHash = filepathToName(database)\n // decorated name will be assumed relative to main database file when non absolute. Paths supplied as absolute won't be portable\n const absFilepath = isAbsolute(database)\n ? database\n : path.join(this.getMainDatabasePath(), database)\n\n this.attachedDatabases[database] = {\n attachFilepathAbsolute: absFilepath,\n attachFilepathRelative: database,\n attachHandle: identifierHash,\n }\n\n return `${identifierHash}.${tableName}`\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates connection with the database.\n */\n protected async createDatabaseConnection() {\n if (\n this.options.flags === undefined ||\n !(this.options.flags & this.sqlite.OPEN_URI)\n ) {\n await this.createDatabaseDirectory(this.options.database)\n }\n\n const databaseConnection: any = await new Promise((ok, fail) => {\n if (this.options.flags === undefined) {\n const connection = new this.sqlite.Database(\n this.options.database,\n (err: any) => {\n if (err) return fail(err)\n ok(connection)\n },\n )\n } else {\n const connection = new this.sqlite.Database(\n this.options.database,\n this.options.flags,\n (err: any) => {\n if (err) return fail(err)\n ok(connection)\n },\n )\n }\n })\n\n // Internal function to run a command on the connection and fail if an error occured.\n function run(line: string): Promise<void> {\n return new Promise((ok, fail) => {\n databaseConnection.run(line, (err: any) => {\n if (err) return fail(err)\n ok()\n })\n })\n }\n // in the options, if encryption key for SQLCipher is setted.\n // Must invoke key pragma before trying to do any other interaction with the database.\n if (this.options.key) {\n await run(`PRAGMA key = ${JSON.stringify(this.options.key)}`)\n }\n\n if (this.options.enableWAL) {\n await run(`PRAGMA journal_mode = WAL`)\n }\n\n if (\n this.options.busyTimeout &&\n typeof this.options.busyTimeout === \"number\" &&\n this.options.busyTimeout > 0\n ) {\n await run(`PRAGMA busy_timeout = ${this.options.busyTimeout}`)\n }\n\n // we need to enable foreign keys in sqlite to make sure all foreign key related features\n // working properly. this also makes onDelete to work with sqlite.\n await run(`PRAGMA foreign_keys = ON`)\n\n return databaseConnection\n }\n\n /**\n * If driver dependency is not given explicitly, then try to load it via \"require\".\n */\n protected loadDependencies(): void {\n try {\n const sqlite = this.options.driver || PlatformTools.load(\"sqlite3\")\n this.sqlite = sqlite.verbose()\n } catch (e) {\n throw new DriverPackageNotInstalledError(\"SQLite\", \"sqlite3\")\n }\n }\n\n /**\n * Auto creates database directory if it does not exist.\n */\n protected async createDatabaseDirectory(fullPath: string): Promise<void> {\n await fs.mkdir(path.dirname(fullPath), { recursive: true })\n }\n\n /**\n * Performs the attaching of the database files. The attachedDatabase should have been populated during calls to #buildTableName\n * during EntityMetadata production (see EntityMetadata#buildTablePath)\n *\n * https://sqlite.org/lang_attach.html\n */\n protected async attachDatabases() {\n // @todo - possibly check number of databases (but unqueriable at runtime sadly) - https://www.sqlite.org/limits.html#max_attached\n for await (const {\n attachHandle,\n attachFilepathAbsolute,\n } of Object.values(this.attachedDatabases)) {\n await this.createDatabaseDirectory(attachFilepathAbsolute)\n await this.connection.query(\n `ATTACH \"${attachFilepathAbsolute}\" AS \"${attachHandle}\"`,\n )\n }\n }\n\n protected getMainDatabasePath(): string {\n const optionsDb = this.options.database\n return path.dirname(\n isAbsolute(optionsDb)\n ? optionsDb\n : path.join(process.cwd(), optionsDb),\n )\n }\n}\n"],"sourceRoot":"../.."}
@@ -1,4 +1,3 @@
1
-
2
1
  import { QueryRunner } from "../../query-runner/QueryRunner";
3
2
  import { TableColumn } from "../../schema-builder/table/TableColumn";
4
3
  import { Table } from "../../schema-builder/table/Table";
@@ -1,4 +1,3 @@
1
-
2
1
  import { ReadStream } from "../../platform/PlatformTools";
3
2
  import { BaseQueryRunner } from "../../query-runner/BaseQueryRunner";
4
3
  import { QueryRunner } from "../../query-runner/QueryRunner";
@@ -1,4 +1,3 @@
1
-
2
1
  import { ObjectId } from "../driver/mongodb/typings";
3
2
  /**
4
3
  * A single property handler for FindOptionsOrder.
@@ -1,4 +1,3 @@
1
-
2
1
  import { ObjectId } from "../driver/mongodb/typings";
3
2
  /**
4
3
  * A single property handler for FindOptionsRelations.
@@ -1,4 +1,3 @@
1
-
2
1
  import { ObjectId } from "../driver/mongodb/typings";
3
2
  /**
4
3
  * A single property handler for FindOptionsSelect.
@@ -1,4 +1,3 @@
1
-
2
1
  import { FindOperator } from "./FindOperator";
3
2
  import { ObjectId } from "../driver/mongodb/typings";
4
3
  import { EqualOperator } from "./EqualOperator";
@@ -1,7 +1,3 @@
1
-
2
-
3
-
4
-
5
1
  export { ReadStream } from "fs";
6
2
  export { EventEmitter } from "events";
7
3
  export { Readable, Writable } from "stream";
@@ -1,5 +1,5 @@
1
- import * as path from "path";
2
- import * as fs from "fs";
1
+ import path from "path";
2
+ import fs from "fs";
3
3
  import dotenv from "dotenv";
4
4
  import chalk from "chalk";
5
5
  import { highlight } from "cli-highlight";
@@ -146,13 +146,7 @@ export class PlatformTools {
146
146
  fs.appendFileSync(filename, data);
147
147
  }
148
148
  static async writeFile(path, data) {
149
- return new Promise((ok, fail) => {
150
- fs.writeFile(path, data, (err) => {
151
- if (err)
152
- fail(err);
153
- ok();
154
- });
155
- });
149
+ return fs.promises.writeFile(path, data);
156
150
  }
157
151
  /**
158
152
  * Loads a dotenv file into the environment variables.
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/platform/PlatformTools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,MAAM,MAAM,QAAQ,CAAA;AAC3B,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,SAAS,EAAS,MAAM,eAAe,CAAA;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAE3C;;GAEG;AACH,MAAM,OAAO,aAAa;IAMtB;;OAEG;IACH,MAAM,CAAC,iBAAiB;QACpB,OAAO,MAAM,CAAA;IACjB,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,IAAI,CAAC,IAAY;QACpB,2HAA2H;QAC3H,8FAA8F;QAC9F,kCAAkC;QAElC,IAAI,CAAC;YACD,wEAAwE;YACxE,QAAQ,IAAI,EAAE,CAAC;gBACX;;mBAEG;gBACH,KAAK,SAAS;oBACV,OAAO,OAAO,CAAC,uBAAuB,CAAC,CAAA;gBAE3C;;mBAEG;gBACH,KAAK,SAAS;oBACV,OAAO,OAAO,CAAC,SAAS,CAAC,CAAA;gBAE7B;;mBAEG;gBACH,KAAK,kBAAkB;oBACnB,OAAO,OAAO,CAAC,kBAAkB,CAAC,CAAA;gBAEtC,KAAK,mCAAmC;oBACpC,OAAO,OAAO,CAAC,mCAAmC,CAAC,CAAA;gBAEvD,KAAK,UAAU;oBACX,OAAO,OAAO,CAAC,UAAU,CAAC,CAAA;gBAE9B;;mBAEG;gBACH,KAAK,OAAO;oBACR,OAAO,OAAO,CAAC,OAAO,CAAC,CAAA;gBAE3B,KAAK,QAAQ;oBACT,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAA;gBAE5B;;mBAEG;gBACH,KAAK,UAAU;oBACX,OAAO,OAAO,CAAC,UAAU,CAAC,CAAA;gBAE9B;;mBAEG;gBACH,KAAK,IAAI;oBACL,OAAO,OAAO,CAAC,IAAI,CAAC,CAAA;gBAExB,KAAK,WAAW;oBACZ,OAAO,OAAO,CAAC,WAAW,CAAC,CAAA;gBAE/B,KAAK,iBAAiB;oBAClB,OAAO,OAAO,CAAC,iBAAiB,CAAC,CAAA;gBAErC,KAAK,gCAAgC;oBACjC,OAAO,OAAO,CAAC,gCAAgC,CAAC,CAAA;gBAEpD;;mBAEG;gBACH,KAAK,OAAO;oBACR,OAAO,OAAO,CAAC,OAAO,CAAC,CAAA;gBAE3B,KAAK,SAAS;oBACV,OAAO,OAAO,CAAC,SAAS,CAAC,CAAA;gBAE7B;;mBAEG;gBACH,KAAK,gBAAgB;oBACjB,OAAO,OAAO,CAAC,gBAAgB,CAAC,CAAA;gBAEpC;;mBAEG;gBACH,KAAK,SAAS;oBACV,OAAO,OAAO,CAAC,SAAS,CAAC,CAAA;gBAE7B;;mBAEG;gBACH,KAAK,QAAQ;oBACT,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAA;gBAE5B;;mBAEG;gBACH,KAAK,OAAO;oBACR,OAAO,OAAO,CAAC,OAAO,CAAC,CAAA;gBAE3B;;mBAEG;gBACH,KAAK,6BAA6B;oBAC9B,OAAO,OAAO,CAAC,6BAA6B,CAAC,CAAA;YACrD,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CACvB,OAAO,CAAC,GAAG,EAAE,GAAG,gBAAgB,GAAG,IAAI,CAC1C,CAAC,CAAA;QACN,CAAC;QAED,4FAA4F;QAC5F,6FAA6F;QAC7F,8FAA8F;QAC9F,YAAY;QACZ,MAAM,IAAI,SAAS,CAAC,2CAA2C,IAAI,EAAE,CAAC,CAAA;IAC1E,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,OAAe;QAChC,IAAI,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QAC5C,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;YAC5B,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QACvD,OAAO,cAAc,CAAA;IACzB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,OAAe;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAChC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,OAAe;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAChC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,OAAe;QAC5B,OAAO,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IACjC,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,QAAgB;QAChC,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;IACpC,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,QAAgB,EAAE,IAAS;QAC7C,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;IACrC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,IAAS;QAC1C,OAAO,IAAI,OAAO,CAAO,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE;YAClC,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC7B,IAAI,GAAG;oBAAE,IAAI,CAAC,GAAG,CAAC,CAAA;gBAClB,EAAE,EAAE,CAAA;YACR,CAAC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACN,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,MAAM,CAAC,OAAe;QACzB,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;IACpC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,IAAY;QAC9B,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC5B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,GAAW;QAC3B,MAAM,KAAK,GAAU;YACjB,OAAO,EAAE,KAAK,CAAC,UAAU;YACzB,OAAO,EAAE,KAAK,CAAC,UAAU;YACzB,MAAM,EAAE,KAAK,CAAC,KAAK;YACnB,IAAI,EAAE,KAAK,CAAC,aAAa;YACzB,QAAQ,EAAE,KAAK,CAAC,aAAa;YAC7B,OAAO,EAAE,KAAK,CAAC,IAAI;SACtB,CAAA;QACD,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAA;IAC5D,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,IAAY;QAC7B,OAAO,SAAS,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;IAChD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,MAAc,EAAE,IAAS;QACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAA;IACnD,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,MAAc,EAAE,KAAU;QACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAA;IACnD,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,MAAc,EAAE,OAAY;QACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAA;IACxD,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,OAAe;QACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IACzC,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,IAAS;QACjB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC3B,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,KAAU;QACnB,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC3B,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,OAAe;QACvB,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAChC,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,MAAc,EAAE,GAAS;QACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;QACtC,IAAI,GAAG;YAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC/B,CAAC;;AA1PD;;GAEG;AACI,kBAAI,GAAuB,MAAM,CAAA","file":"PlatformTools.js","sourcesContent":["import * as path from \"path\"\nimport * as fs from \"fs\"\nimport dotenv from \"dotenv\"\nimport chalk from \"chalk\"\nimport { highlight, Theme } from \"cli-highlight\"\n\nexport { ReadStream } from \"fs\"\nexport { EventEmitter } from \"events\"\nexport { Readable, Writable } from \"stream\"\n\n/**\n * Platform-specific tools.\n */\nexport class PlatformTools {\n /**\n * Type of the currently running platform.\n */\n static type: \"browser\" | \"node\" = \"node\"\n\n /**\n * Gets global variable where global stuff can be stored.\n */\n static getGlobalVariable(): any {\n return global\n }\n\n /**\n * Loads (\"require\"-s) given file or package.\n * This operation only supports on node platform\n */\n static load(name: string): any {\n // if name is not absolute or relative, then try to load package from the node_modules of the directory we are currently in\n // this is useful when we are using typeorm package globally installed and it accesses drivers\n // that are not installed globally\n\n try {\n // switch case to explicit require statements for webpack compatibility.\n switch (name) {\n /**\n * spanner\n */\n case \"spanner\":\n return require(\"@google-cloud/spanner\")\n\n /**\n * mongodb\n */\n case \"mongodb\":\n return require(\"mongodb\")\n\n /**\n * hana\n */\n case \"@sap/hana-client\":\n return require(\"@sap/hana-client\")\n\n case \"@sap/hana-client/extension/Stream\":\n return require(\"@sap/hana-client/extension/Stream\")\n\n case \"hdb-pool\":\n return require(\"hdb-pool\")\n\n /**\n * mysql\n */\n case \"mysql\":\n return require(\"mysql\")\n\n case \"mysql2\":\n return require(\"mysql2\")\n\n /**\n * oracle\n */\n case \"oracledb\":\n return require(\"oracledb\")\n\n /**\n * postgres\n */\n case \"pg\":\n return require(\"pg\")\n\n case \"pg-native\":\n return require(\"pg-native\")\n\n case \"pg-query-stream\":\n return require(\"pg-query-stream\")\n\n case \"typeorm-aurora-data-api-driver\":\n return require(\"typeorm-aurora-data-api-driver\")\n\n /**\n * redis\n */\n case \"redis\":\n return require(\"redis\")\n\n case \"ioredis\":\n return require(\"ioredis\")\n\n /**\n * better-sqlite3\n */\n case \"better-sqlite3\":\n return require(\"better-sqlite3\")\n\n /**\n * sqlite\n */\n case \"sqlite3\":\n return require(\"sqlite3\")\n\n /**\n * sql.js\n */\n case \"sql.js\":\n return require(\"sql.js\")\n\n /**\n * sqlserver\n */\n case \"mssql\":\n return require(\"mssql\")\n\n /**\n * react-native-sqlite\n */\n case \"react-native-sqlite-storage\":\n return require(\"react-native-sqlite-storage\")\n }\n } catch (err) {\n return require(path.resolve(\n process.cwd() + \"/node_modules/\" + name,\n ))\n }\n\n // If nothing above matched and we get here, the package was not listed within PlatformTools\n // and is an Invalid Package. To make it explicit that this is NOT the intended use case for\n // PlatformTools.load - it's not just a way to replace `require` all willy-nilly - let's throw\n // an error.\n throw new TypeError(`Invalid Package for PlatformTools.load: ${name}`)\n }\n\n /**\n * Normalizes given path. Does \"path.normalize\" and replaces backslashes with forward slashes on Windows.\n */\n static pathNormalize(pathStr: string): string {\n let normalizedPath = path.normalize(pathStr)\n if (process.platform === \"win32\")\n normalizedPath = normalizedPath.replace(/\\\\/g, \"/\")\n return normalizedPath\n }\n\n /**\n * Gets file extension. Does \"path.extname\".\n */\n static pathExtname(pathStr: string): string {\n return path.extname(pathStr)\n }\n\n /**\n * Resolved given path. Does \"path.resolve\".\n */\n static pathResolve(pathStr: string): string {\n return path.resolve(pathStr)\n }\n\n /**\n * Synchronously checks if file exist. Does \"fs.existsSync\".\n */\n static fileExist(pathStr: string): boolean {\n return fs.existsSync(pathStr)\n }\n\n static readFileSync(filename: string): Buffer {\n return fs.readFileSync(filename)\n }\n\n static appendFileSync(filename: string, data: any): void {\n fs.appendFileSync(filename, data)\n }\n\n static async writeFile(path: string, data: any): Promise<void> {\n return new Promise<void>((ok, fail) => {\n fs.writeFile(path, data, (err) => {\n if (err) fail(err)\n ok()\n })\n })\n }\n\n /**\n * Loads a dotenv file into the environment variables.\n *\n * @param path The file to load as a dotenv configuration\n */\n static dotenv(pathStr: string): void {\n dotenv.config({ path: pathStr })\n }\n\n /**\n * Gets environment variable.\n */\n static getEnvVariable(name: string): any {\n return process.env[name]\n }\n\n /**\n * Highlights sql string to be print in the console.\n */\n static highlightSql(sql: string) {\n const theme: Theme = {\n keyword: chalk.blueBright,\n literal: chalk.blueBright,\n string: chalk.white,\n type: chalk.magentaBright,\n built_in: chalk.magentaBright,\n comment: chalk.gray,\n }\n return highlight(sql, { theme: theme, language: \"sql\" })\n }\n\n /**\n * Highlights json string to be print in the console.\n */\n static highlightJson(json: string) {\n return highlight(json, { language: \"json\" })\n }\n\n /**\n * Logging functions needed by AdvancedConsoleLogger\n */\n static logInfo(prefix: string, info: any) {\n console.log(chalk.gray.underline(prefix), info)\n }\n\n static logError(prefix: string, error: any) {\n console.log(chalk.underline.red(prefix), error)\n }\n\n static logWarn(prefix: string, warning: any) {\n console.log(chalk.underline.yellow(prefix), warning)\n }\n\n static log(message: string) {\n console.log(chalk.underline(message))\n }\n\n static info(info: any) {\n return chalk.gray(info)\n }\n\n static error(error: any) {\n return chalk.red(error)\n }\n\n static warn(message: string) {\n return chalk.yellow(message)\n }\n\n static logCmdErr(prefix: string, err?: any) {\n console.log(chalk.black.bgRed(prefix))\n if (err) console.error(err)\n }\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/platform/PlatformTools.ts"],"names":[],"mappings":"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","file":"PlatformTools.js","sourcesContent":["import path from \"path\"\nimport fs from \"fs\"\nimport dotenv from \"dotenv\"\nimport chalk from \"chalk\"\nimport { highlight, Theme } from \"cli-highlight\"\n\nexport { ReadStream } from \"fs\"\nexport { EventEmitter } from \"events\"\nexport { Readable, Writable } from \"stream\"\n\n/**\n * Platform-specific tools.\n */\nexport class PlatformTools {\n /**\n * Type of the currently running platform.\n */\n static type: \"browser\" | \"node\" = \"node\"\n\n /**\n * Gets global variable where global stuff can be stored.\n */\n static getGlobalVariable(): any {\n return global\n }\n\n /**\n * Loads (\"require\"-s) given file or package.\n * This operation only supports on node platform\n */\n static load(name: string): any {\n // if name is not absolute or relative, then try to load package from the node_modules of the directory we are currently in\n // this is useful when we are using typeorm package globally installed and it accesses drivers\n // that are not installed globally\n\n try {\n // switch case to explicit require statements for webpack compatibility.\n switch (name) {\n /**\n * spanner\n */\n case \"spanner\":\n return require(\"@google-cloud/spanner\")\n\n /**\n * mongodb\n */\n case \"mongodb\":\n return require(\"mongodb\")\n\n /**\n * hana\n */\n case \"@sap/hana-client\":\n return require(\"@sap/hana-client\")\n\n case \"@sap/hana-client/extension/Stream\":\n return require(\"@sap/hana-client/extension/Stream\")\n\n case \"hdb-pool\":\n return require(\"hdb-pool\")\n\n /**\n * mysql\n */\n case \"mysql\":\n return require(\"mysql\")\n\n case \"mysql2\":\n return require(\"mysql2\")\n\n /**\n * oracle\n */\n case \"oracledb\":\n return require(\"oracledb\")\n\n /**\n * postgres\n */\n case \"pg\":\n return require(\"pg\")\n\n case \"pg-native\":\n return require(\"pg-native\")\n\n case \"pg-query-stream\":\n return require(\"pg-query-stream\")\n\n case \"typeorm-aurora-data-api-driver\":\n return require(\"typeorm-aurora-data-api-driver\")\n\n /**\n * redis\n */\n case \"redis\":\n return require(\"redis\")\n\n case \"ioredis\":\n return require(\"ioredis\")\n\n /**\n * better-sqlite3\n */\n case \"better-sqlite3\":\n return require(\"better-sqlite3\")\n\n /**\n * sqlite\n */\n case \"sqlite3\":\n return require(\"sqlite3\")\n\n /**\n * sql.js\n */\n case \"sql.js\":\n return require(\"sql.js\")\n\n /**\n * sqlserver\n */\n case \"mssql\":\n return require(\"mssql\")\n\n /**\n * react-native-sqlite\n */\n case \"react-native-sqlite-storage\":\n return require(\"react-native-sqlite-storage\")\n }\n } catch (err) {\n return require(path.resolve(\n process.cwd() + \"/node_modules/\" + name,\n ))\n }\n\n // If nothing above matched and we get here, the package was not listed within PlatformTools\n // and is an Invalid Package. To make it explicit that this is NOT the intended use case for\n // PlatformTools.load - it's not just a way to replace `require` all willy-nilly - let's throw\n // an error.\n throw new TypeError(`Invalid Package for PlatformTools.load: ${name}`)\n }\n\n /**\n * Normalizes given path. Does \"path.normalize\" and replaces backslashes with forward slashes on Windows.\n */\n static pathNormalize(pathStr: string): string {\n let normalizedPath = path.normalize(pathStr)\n if (process.platform === \"win32\")\n normalizedPath = normalizedPath.replace(/\\\\/g, \"/\")\n return normalizedPath\n }\n\n /**\n * Gets file extension. Does \"path.extname\".\n */\n static pathExtname(pathStr: string): string {\n return path.extname(pathStr)\n }\n\n /**\n * Resolved given path. Does \"path.resolve\".\n */\n static pathResolve(pathStr: string): string {\n return path.resolve(pathStr)\n }\n\n /**\n * Synchronously checks if file exist. Does \"fs.existsSync\".\n */\n static fileExist(pathStr: string): boolean {\n return fs.existsSync(pathStr)\n }\n\n static readFileSync(filename: string): Buffer {\n return fs.readFileSync(filename)\n }\n\n static appendFileSync(filename: string, data: any): void {\n fs.appendFileSync(filename, data)\n }\n\n static async writeFile(path: string, data: any): Promise<void> {\n return fs.promises.writeFile(path, data)\n }\n\n /**\n * Loads a dotenv file into the environment variables.\n *\n * @param path The file to load as a dotenv configuration\n */\n static dotenv(pathStr: string): void {\n dotenv.config({ path: pathStr })\n }\n\n /**\n * Gets environment variable.\n */\n static getEnvVariable(name: string): any {\n return process.env[name]\n }\n\n /**\n * Highlights sql string to be print in the console.\n */\n static highlightSql(sql: string) {\n const theme: Theme = {\n keyword: chalk.blueBright,\n literal: chalk.blueBright,\n string: chalk.white,\n type: chalk.magentaBright,\n built_in: chalk.magentaBright,\n comment: chalk.gray,\n }\n return highlight(sql, { theme: theme, language: \"sql\" })\n }\n\n /**\n * Highlights json string to be print in the console.\n */\n static highlightJson(json: string) {\n return highlight(json, { language: \"json\" })\n }\n\n /**\n * Logging functions needed by AdvancedConsoleLogger\n */\n static logInfo(prefix: string, info: any) {\n console.log(chalk.gray.underline(prefix), info)\n }\n\n static logError(prefix: string, error: any) {\n console.log(chalk.underline.red(prefix), error)\n }\n\n static logWarn(prefix: string, warning: any) {\n console.log(chalk.underline.yellow(prefix), warning)\n }\n\n static log(message: string) {\n console.log(chalk.underline(message))\n }\n\n static info(info: any) {\n return chalk.gray(info)\n }\n\n static error(error: any) {\n return chalk.red(error)\n }\n\n static warn(message: string) {\n return chalk.yellow(message)\n }\n\n static logCmdErr(prefix: string, err?: any) {\n console.log(chalk.black.bgRed(prefix))\n if (err) console.error(err)\n }\n}\n"],"sourceRoot":".."}
@@ -1,4 +1,3 @@
1
-
2
1
  import { ObjectLiteral } from "../common/ObjectLiteral";
3
2
  import { QueryBuilder } from "./QueryBuilder";
4
3
  import { ReadStream } from "../platform/PlatformTools";
@@ -1,4 +1,3 @@
1
-
2
1
  import { TableColumn } from "../schema-builder/table/TableColumn";
3
2
  import { Table } from "../schema-builder/table/Table";
4
3
  import { TableForeignKey } from "../schema-builder/table/TableForeignKey";
@@ -1,4 +1,4 @@
1
- import fs from "fs";
1
+ import fs from "fs/promises";
2
2
  import path from "path";
3
3
  import { pathToFileURL } from "url";
4
4
  export async function importOrRequireFile(filePath) {
@@ -34,41 +34,29 @@ export async function importOrRequireFile(filePath) {
34
34
  }
35
35
  return tryToRequire();
36
36
  }
37
- function getNearestPackageJson(filePath) {
38
- return new Promise((accept) => {
39
- let currentPath = filePath;
40
- function searchPackageJson() {
41
- const nextPath = path.dirname(currentPath);
42
- if (currentPath === nextPath)
43
- // the top of the file tree is reached
44
- accept(null);
45
- else {
46
- currentPath = nextPath;
47
- const potentialPackageJson = path.join(currentPath, "package.json");
48
- fs.stat(potentialPackageJson, (err, stats) => {
49
- if (err != null)
50
- searchPackageJson();
51
- else if (stats.isFile()) {
52
- fs.readFile(potentialPackageJson, "utf8", (err, data) => {
53
- if (err != null)
54
- accept(null);
55
- else {
56
- try {
57
- accept(JSON.parse(data));
58
- }
59
- catch (err) {
60
- accept(null);
61
- }
62
- }
63
- });
64
- }
65
- else
66
- searchPackageJson();
67
- });
37
+ async function getNearestPackageJson(filePath) {
38
+ let currentPath = filePath;
39
+ while (currentPath !== path.dirname(currentPath)) {
40
+ currentPath = path.dirname(currentPath);
41
+ const potentialPackageJson = path.join(currentPath, "package.json");
42
+ try {
43
+ const stats = await fs.stat(potentialPackageJson);
44
+ if (!stats.isFile()) {
45
+ continue;
46
+ }
47
+ try {
48
+ return JSON.parse(await fs.readFile(potentialPackageJson, "utf8"));
49
+ }
50
+ catch {
51
+ return null;
68
52
  }
69
53
  }
70
- searchPackageJson();
71
- });
54
+ catch {
55
+ continue;
56
+ }
57
+ }
58
+ // the top of the file tree is reached
59
+ return null;
72
60
  }
73
61
 
74
62
  //# sourceMappingURL=ImportUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/util/ImportUtils.ts"],"names":[],"mappings":"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","file":"ImportUtils.js","sourcesContent":["import fs from \"fs\"\nimport path from \"path\"\nimport { pathToFileURL } from \"url\"\n\nexport async function importOrRequireFile(\n filePath: string,\n): Promise<[result: any, moduleType: \"esm\" | \"commonjs\"]> {\n const tryToImport = async (): Promise<[any, \"esm\"]> => {\n // `Function` is required to make sure the `import` statement wil stay `import` after\n // transpilation and won't be converted to `require`\n return [\n await Function(\"return filePath => import(filePath)\")()(\n filePath.startsWith(\"file://\")\n ? filePath\n : pathToFileURL(filePath).toString(),\n ),\n \"esm\",\n ]\n }\n const tryToRequire = async (): Promise<[any, \"commonjs\"]> => {\n return [require(filePath), \"commonjs\"]\n }\n\n const extension = filePath.substring(filePath.lastIndexOf(\".\") + \".\".length)\n\n if (extension === \"mjs\" || extension === \"mts\") return tryToImport()\n else if (extension === \"cjs\" || extension === \"cts\") return tryToRequire()\n else if (extension === \"js\" || extension === \"ts\") {\n const packageJson = await getNearestPackageJson(filePath)\n\n if (packageJson != null) {\n const isModule = (packageJson as any)?.type === \"module\"\n\n if (isModule) return tryToImport()\n else return tryToRequire()\n } else return tryToRequire()\n }\n\n return tryToRequire()\n}\n\nfunction getNearestPackageJson(filePath: string): Promise<object | null> {\n return new Promise((accept) => {\n let currentPath = filePath\n\n function searchPackageJson() {\n const nextPath = path.dirname(currentPath)\n\n if (currentPath === nextPath)\n // the top of the file tree is reached\n accept(null)\n else {\n currentPath = nextPath\n const potentialPackageJson = path.join(\n currentPath,\n \"package.json\",\n )\n\n fs.stat(potentialPackageJson, (err, stats) => {\n if (err != null) searchPackageJson()\n else if (stats.isFile()) {\n fs.readFile(\n potentialPackageJson,\n \"utf8\",\n (err, data) => {\n if (err != null) accept(null)\n else {\n try {\n accept(JSON.parse(data))\n } catch (err) {\n accept(null)\n }\n }\n },\n )\n } else searchPackageJson()\n })\n }\n }\n\n searchPackageJson()\n })\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/util/ImportUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAA;AAC5B,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AAEnC,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,QAAgB;IAEhB,MAAM,WAAW,GAAG,KAAK,IAA2B,EAAE;QAClD,qFAAqF;QACrF,oDAAoD;QACpD,OAAO;YACH,MAAM,QAAQ,CAAC,qCAAqC,CAAC,EAAE,CACnD,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC;gBAC1B,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAC3C;YACD,KAAK;SACR,CAAA;IACL,CAAC,CAAA;IACD,MAAM,YAAY,GAAG,KAAK,IAAgC,EAAE;QACxD,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAA;IAC1C,CAAC,CAAA;IAED,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAA;IAE5E,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,KAAK;QAAE,OAAO,WAAW,EAAE,CAAA;SAC/D,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,KAAK;QAAE,OAAO,YAAY,EAAE,CAAA;SACrE,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QAChD,MAAM,WAAW,GAAG,MAAM,qBAAqB,CAAC,QAAQ,CAAC,CAAA;QAEzD,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;YACtB,MAAM,QAAQ,GAAI,WAAmB,EAAE,IAAI,KAAK,QAAQ,CAAA;YAExD,IAAI,QAAQ;gBAAE,OAAO,WAAW,EAAE,CAAA;;gBAC7B,OAAO,YAAY,EAAE,CAAA;QAC9B,CAAC;;YAAM,OAAO,YAAY,EAAE,CAAA;IAChC,CAAC;IAED,OAAO,YAAY,EAAE,CAAA;AACzB,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,QAAgB;IACjD,IAAI,WAAW,GAAG,QAAQ,CAAA;IAE1B,OAAO,WAAW,KAAK,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/C,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;QACvC,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAA;QAEnE,IAAI,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;YACjD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBAClB,SAAQ;YACZ,CAAC;YAED,IAAI,CAAC;gBACD,OAAO,IAAI,CAAC,KAAK,CACb,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAClD,CAAA;YACL,CAAC;YAAC,MAAM,CAAC;gBACL,OAAO,IAAI,CAAA;YACf,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACL,SAAQ;QACZ,CAAC;IACL,CAAC;IAED,sCAAsC;IACtC,OAAO,IAAI,CAAA;AACf,CAAC","file":"ImportUtils.js","sourcesContent":["import fs from \"fs/promises\"\nimport path from \"path\"\nimport { pathToFileURL } from \"url\"\n\nexport async function importOrRequireFile(\n filePath: string,\n): Promise<[result: any, moduleType: \"esm\" | \"commonjs\"]> {\n const tryToImport = async (): Promise<[any, \"esm\"]> => {\n // `Function` is required to make sure the `import` statement wil stay `import` after\n // transpilation and won't be converted to `require`\n return [\n await Function(\"return filePath => import(filePath)\")()(\n filePath.startsWith(\"file://\")\n ? filePath\n : pathToFileURL(filePath).toString(),\n ),\n \"esm\",\n ]\n }\n const tryToRequire = async (): Promise<[any, \"commonjs\"]> => {\n return [require(filePath), \"commonjs\"]\n }\n\n const extension = filePath.substring(filePath.lastIndexOf(\".\") + \".\".length)\n\n if (extension === \"mjs\" || extension === \"mts\") return tryToImport()\n else if (extension === \"cjs\" || extension === \"cts\") return tryToRequire()\n else if (extension === \"js\" || extension === \"ts\") {\n const packageJson = await getNearestPackageJson(filePath)\n\n if (packageJson != null) {\n const isModule = (packageJson as any)?.type === \"module\"\n\n if (isModule) return tryToImport()\n else return tryToRequire()\n } else return tryToRequire()\n }\n\n return tryToRequire()\n}\n\nasync function getNearestPackageJson(filePath: string): Promise<object | null> {\n let currentPath = filePath\n\n while (currentPath !== path.dirname(currentPath)) {\n currentPath = path.dirname(currentPath)\n const potentialPackageJson = path.join(currentPath, \"package.json\")\n\n try {\n const stats = await fs.stat(potentialPackageJson)\n if (!stats.isFile()) {\n continue\n }\n\n try {\n return JSON.parse(\n await fs.readFile(potentialPackageJson, \"utf8\"),\n )\n } catch {\n return null\n }\n } catch {\n continue\n }\n }\n\n // the top of the file tree is reached\n return null\n}\n"],"sourceRoot":".."}
@@ -7,7 +7,7 @@ export declare class CommandUtils {
7
7
  /**
8
8
  * Creates directories recursively.
9
9
  */
10
- static createDirectories(directory: string): Promise<string | void | undefined>;
10
+ static createDirectories(directory: string): Promise<void>;
11
11
  /**
12
12
  * Creates a file with the given content in the given path.
13
13
  */
@@ -2,9 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CommandUtils = void 0;
4
4
  const tslib_1 = require("tslib");
5
- const fs = tslib_1.__importStar(require("fs"));
6
- const path = tslib_1.__importStar(require("path"));
7
- const mkdirp_1 = tslib_1.__importDefault(require("mkdirp"));
5
+ const promises_1 = tslib_1.__importDefault(require("fs/promises"));
6
+ const path_1 = tslib_1.__importDefault(require("path"));
8
7
  const error_1 = require("../error");
9
8
  const InstanceChecker_1 = require("../util/InstanceChecker");
10
9
  const ImportUtils_1 = require("../util/ImportUtils");
@@ -15,7 +14,6 @@ class CommandUtils {
15
14
  static async loadDataSource(dataSourceFilePath) {
16
15
  let dataSourceFileExports;
17
16
  try {
18
- ;
19
17
  [dataSourceFileExports] = await (0, ImportUtils_1.importOrRequireFile)(dataSourceFilePath);
20
18
  }
21
19
  catch (err) {
@@ -51,30 +49,34 @@ class CommandUtils {
51
49
  /**
52
50
  * Creates directories recursively.
53
51
  */
54
- static createDirectories(directory) {
55
- return (0, mkdirp_1.default)(directory);
52
+ static async createDirectories(directory) {
53
+ await promises_1.default.mkdir(directory, { recursive: true });
56
54
  }
57
55
  /**
58
56
  * Creates a file with the given content in the given path.
59
57
  */
60
58
  static async createFile(filePath, content, override = true) {
61
- await CommandUtils.createDirectories(path.dirname(filePath));
62
- return new Promise((ok, fail) => {
63
- if (override === false && fs.existsSync(filePath))
64
- return ok();
65
- fs.writeFile(filePath, content, (err) => (err ? fail(err) : ok()));
66
- });
59
+ await CommandUtils.createDirectories(path_1.default.dirname(filePath));
60
+ if (override === false && (await CommandUtils.fileExists(filePath))) {
61
+ return;
62
+ }
63
+ await promises_1.default.writeFile(filePath, content);
67
64
  }
68
65
  /**
69
66
  * Reads everything from a given file and returns its content as a string.
70
67
  */
71
68
  static async readFile(filePath) {
72
- return new Promise((ok, fail) => {
73
- fs.readFile(filePath, (err, data) => err ? fail(err) : ok(data.toString()));
74
- });
69
+ const file = await promises_1.default.readFile(filePath);
70
+ return file.toString();
75
71
  }
76
72
  static async fileExists(filePath) {
77
- return fs.existsSync(filePath);
73
+ try {
74
+ await promises_1.default.access(filePath, promises_1.default.constants.F_OK);
75
+ return true;
76
+ }
77
+ catch {
78
+ return false;
79
+ }
78
80
  }
79
81
  /**
80
82
  * Gets migration timestamp and validates argument (if sent)
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/commands/CommandUtils.ts"],"names":[],"mappings":"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","file":"CommandUtils.js","sourcesContent":["import * as fs from \"fs\"\nimport * as path from \"path\"\nimport mkdirp from \"mkdirp\"\nimport { TypeORMError } from \"../error\"\nimport { DataSource } from \"../data-source\"\nimport { InstanceChecker } from \"../util/InstanceChecker\"\nimport { importOrRequireFile } from \"../util/ImportUtils\"\n\n/**\n * Command line utils functions.\n */\nexport class CommandUtils {\n static async loadDataSource(\n dataSourceFilePath: string,\n ): Promise<DataSource> {\n let dataSourceFileExports\n try {\n ;[dataSourceFileExports] = await importOrRequireFile(\n dataSourceFilePath,\n )\n } catch (err) {\n throw new Error(\n `Unable to open file: \"${dataSourceFilePath}\". ${err.message}`,\n )\n }\n\n if (\n !dataSourceFileExports ||\n typeof dataSourceFileExports !== \"object\"\n ) {\n throw new Error(\n `Given data source file must contain export of a DataSource instance`,\n )\n }\n\n if (InstanceChecker.isDataSource(dataSourceFileExports)) {\n return dataSourceFileExports\n }\n\n const dataSourceExports = []\n for (const fileExportKey in dataSourceFileExports) {\n const fileExport = dataSourceFileExports[fileExportKey]\n // It is necessary to await here in case of the exported async value (Promise<DataSource>).\n // e.g. the DataSource is instantiated with an async factory in the source file\n // It is safe to await regardless of the export being async or not due to `awaits` definition:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await#return_value\n const awaitedFileExport = await fileExport\n if (InstanceChecker.isDataSource(awaitedFileExport)) {\n dataSourceExports.push(awaitedFileExport)\n }\n }\n\n if (dataSourceExports.length === 0) {\n throw new Error(\n `Given data source file must contain export of a DataSource instance`,\n )\n }\n if (dataSourceExports.length > 1) {\n throw new Error(\n `Given data source file must contain only one export of DataSource instance`,\n )\n }\n return dataSourceExports[0]\n }\n\n /**\n * Creates directories recursively.\n */\n static createDirectories(directory: string) {\n return mkdirp(directory)\n }\n\n /**\n * Creates a file with the given content in the given path.\n */\n static async createFile(\n filePath: string,\n content: string,\n override: boolean = true,\n ): Promise<void> {\n await CommandUtils.createDirectories(path.dirname(filePath))\n return new Promise<void>((ok, fail) => {\n if (override === false && fs.existsSync(filePath)) return ok()\n\n fs.writeFile(filePath, content, (err) => (err ? fail(err) : ok()))\n })\n }\n\n /**\n * Reads everything from a given file and returns its content as a string.\n */\n static async readFile(filePath: string): Promise<string> {\n return new Promise<string>((ok, fail) => {\n fs.readFile(filePath, (err, data) =>\n err ? fail(err) : ok(data.toString()),\n )\n })\n }\n\n static async fileExists(filePath: string) {\n return fs.existsSync(filePath)\n }\n\n /**\n * Gets migration timestamp and validates argument (if sent)\n */\n static getTimestamp(timestampOptionArgument: any): number {\n if (\n timestampOptionArgument &&\n (isNaN(timestampOptionArgument) || timestampOptionArgument < 0)\n ) {\n throw new TypeORMError(\n `timestamp option should be a non-negative number. received: ${timestampOptionArgument}`,\n )\n }\n return timestampOptionArgument\n ? new Date(Number(timestampOptionArgument)).getTime()\n : Date.now()\n }\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/commands/CommandUtils.ts"],"names":[],"mappings":"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","file":"CommandUtils.js","sourcesContent":["import fs from \"fs/promises\"\nimport path from \"path\"\nimport { TypeORMError } from \"../error\"\nimport { DataSource } from \"../data-source\"\nimport { InstanceChecker } from \"../util/InstanceChecker\"\nimport { importOrRequireFile } from \"../util/ImportUtils\"\n\n/**\n * Command line utils functions.\n */\nexport class CommandUtils {\n static async loadDataSource(\n dataSourceFilePath: string,\n ): Promise<DataSource> {\n let dataSourceFileExports\n try {\n [dataSourceFileExports] = await importOrRequireFile(\n dataSourceFilePath,\n )\n } catch (err) {\n throw new Error(\n `Unable to open file: \"${dataSourceFilePath}\". ${err.message}`,\n )\n }\n\n if (\n !dataSourceFileExports ||\n typeof dataSourceFileExports !== \"object\"\n ) {\n throw new Error(\n `Given data source file must contain export of a DataSource instance`,\n )\n }\n\n if (InstanceChecker.isDataSource(dataSourceFileExports)) {\n return dataSourceFileExports\n }\n\n const dataSourceExports = []\n for (const fileExportKey in dataSourceFileExports) {\n const fileExport = dataSourceFileExports[fileExportKey]\n // It is necessary to await here in case of the exported async value (Promise<DataSource>).\n // e.g. the DataSource is instantiated with an async factory in the source file\n // It is safe to await regardless of the export being async or not due to `awaits` definition:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await#return_value\n const awaitedFileExport = await fileExport\n if (InstanceChecker.isDataSource(awaitedFileExport)) {\n dataSourceExports.push(awaitedFileExport)\n }\n }\n\n if (dataSourceExports.length === 0) {\n throw new Error(\n `Given data source file must contain export of a DataSource instance`,\n )\n }\n if (dataSourceExports.length > 1) {\n throw new Error(\n `Given data source file must contain only one export of DataSource instance`,\n )\n }\n return dataSourceExports[0]\n }\n\n /**\n * Creates directories recursively.\n */\n static async createDirectories(directory: string): Promise<void> {\n await fs.mkdir(directory, { recursive: true })\n }\n\n /**\n * Creates a file with the given content in the given path.\n */\n static async createFile(\n filePath: string,\n content: string,\n override: boolean = true,\n ): Promise<void> {\n await CommandUtils.createDirectories(path.dirname(filePath))\n if (override === false && (await CommandUtils.fileExists(filePath))) {\n return\n }\n await fs.writeFile(filePath, content)\n }\n\n /**\n * Reads everything from a given file and returns its content as a string.\n */\n static async readFile(filePath: string): Promise<string> {\n const file = await fs.readFile(filePath)\n\n return file.toString()\n }\n\n static async fileExists(filePath: string) {\n try {\n await fs.access(filePath, fs.constants.F_OK)\n return true\n } catch {\n return false\n }\n }\n\n /**\n * Gets migration timestamp and validates argument (if sent)\n */\n static getTimestamp(timestampOptionArgument: any): number {\n if (\n timestampOptionArgument &&\n (isNaN(timestampOptionArgument) || timestampOptionArgument < 0)\n ) {\n throw new TypeORMError(\n `timestamp option should be a non-negative number. received: ${timestampOptionArgument}`,\n )\n }\n return timestampOptionArgument\n ? new Date(Number(timestampOptionArgument)).getTime()\n : Date.now()\n }\n}\n"],"sourceRoot":".."}
@@ -8,22 +8,22 @@ export declare class ConnectionOptionsReader {
8
8
  * Directory where ormconfig should be read from.
9
9
  * By default its your application root (where your app package.json is located).
10
10
  */
11
- root?: string | undefined;
11
+ root?: string;
12
12
  /**
13
13
  * Filename of the ormconfig configuration. By default its equal to "ormconfig".
14
14
  */
15
- configName?: string | undefined;
15
+ configName?: string;
16
16
  } | undefined;
17
17
  constructor(options?: {
18
18
  /**
19
19
  * Directory where ormconfig should be read from.
20
20
  * By default its your application root (where your app package.json is located).
21
21
  */
22
- root?: string | undefined;
22
+ root?: string;
23
23
  /**
24
24
  * Filename of the ormconfig configuration. By default its equal to "ormconfig".
25
25
  */
26
- configName?: string | undefined;
26
+ configName?: string;
27
27
  } | undefined);
28
28
  /**
29
29
  * Returns all connection options read from the ormconfig.
package/container.js CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getFromContainer = exports.useContainer = void 0;
3
+ exports.useContainer = useContainer;
4
+ exports.getFromContainer = getFromContainer;
4
5
  /**
5
6
  * Container to be used by this library for inversion control. If container was not implicitly set then by default
6
7
  * container simply creates a new instance of the given class.
@@ -34,7 +35,6 @@ function useContainer(iocContainer, options) {
34
35
  userContainer = iocContainer;
35
36
  userContainerOptions = options;
36
37
  }
37
- exports.useContainer = useContainer;
38
38
  /**
39
39
  * Gets the IOC container used by this library.
40
40
  *
@@ -56,6 +56,5 @@ function getFromContainer(someClass) {
56
56
  }
57
57
  return defaultContainer.get(someClass);
58
58
  }
59
- exports.getFromContainer = getFromContainer;
60
59
 
61
60
  //# sourceMappingURL=container.js.map
package/container.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/container.ts"],"names":[],"mappings":";;;AA6BA;;;;;GAKG;AACH,MAAM,gBAAgB,GAAuB,IAAI,CAAC;IAAA;QAGtC,cAAS,GAAsC,EAAE,CAAA;IAc7D,CAAC;IAZG,GAAG,CAAI,SAA2B;QAC9B,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;QAC/D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,QAAQ,GAAG;gBACP,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,IAAK,SAAyB,EAAE;aAC3C,CAAA;YACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACjC,CAAC;QAED,OAAO,QAAQ,CAAC,MAAM,CAAA;IAC1B,CAAC;CACJ,CAAC,EAAE,CAAA;AAEJ,IAAI,aAAiC,CAAA;AACrC,IAAI,oBAAqD,CAAA;AAEzD;;;;GAIG;AACH,SAAgB,YAAY,CACxB,YAAgC,EAChC,OAA6B;IAE7B,aAAa,GAAG,YAAY,CAAA;IAC5B,oBAAoB,GAAG,OAAO,CAAA;AAClC,CAAC;AAND,oCAMC;AAED;;;;GAIG;AACH,SAAgB,gBAAgB,CAAI,SAA2B;IAC3D,IAAI,aAAa,EAAE,CAAC;QAChB,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YAC7C,IAAI,QAAQ;gBAAE,OAAO,QAAQ,CAAA;YAE7B,IAAI,CAAC,oBAAoB,IAAI,CAAC,oBAAoB,CAAC,QAAQ;gBACvD,OAAO,QAAQ,CAAA;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,oBAAoB,IAAI,CAAC,oBAAoB,CAAC,gBAAgB;gBAC/D,MAAM,KAAK,CAAA;QACnB,CAAC;IACL,CAAC;IACD,OAAO,gBAAgB,CAAC,GAAG,CAAI,SAAS,CAAC,CAAA;AAC7C,CAAC;AAdD,4CAcC","file":"container.js","sourcesContent":["/**\n * Container options.\n *\n * @deprecated\n */\nexport interface UseContainerOptions {\n /**\n * If set to true, then default container will be used in the case if given container haven't returned anything.\n */\n fallback?: boolean\n\n /**\n * If set to true, then default container will be used in the case if given container thrown an exception.\n */\n fallbackOnErrors?: boolean\n}\n\n/**\n * @deprecated\n */\nexport type ContainedType<T> = { new (...args: any[]): T } | Function\n\n/**\n * @deprecated\n */\nexport interface ContainerInterface {\n get<T>(someClass: ContainedType<T>): T\n}\n\n/**\n * Container to be used by this library for inversion control. If container was not implicitly set then by default\n * container simply creates a new instance of the given class.\n *\n * @deprecated\n */\nconst defaultContainer: ContainerInterface = new (class\n implements ContainerInterface\n{\n private instances: { type: Function; object: any }[] = []\n\n get<T>(someClass: ContainedType<T>): T {\n let instance = this.instances.find((i) => i.type === someClass)\n if (!instance) {\n instance = {\n type: someClass,\n object: new (someClass as new () => T)(),\n }\n this.instances.push(instance)\n }\n\n return instance.object\n }\n})()\n\nlet userContainer: ContainerInterface\nlet userContainerOptions: UseContainerOptions | undefined\n\n/**\n * Sets container to be used by this library.\n *\n * @deprecated\n */\nexport function useContainer(\n iocContainer: ContainerInterface,\n options?: UseContainerOptions,\n) {\n userContainer = iocContainer\n userContainerOptions = options\n}\n\n/**\n * Gets the IOC container used by this library.\n *\n * @deprecated\n */\nexport function getFromContainer<T>(someClass: ContainedType<T>): T {\n if (userContainer) {\n try {\n const instance = userContainer.get(someClass)\n if (instance) return instance\n\n if (!userContainerOptions || !userContainerOptions.fallback)\n return instance\n } catch (error) {\n if (!userContainerOptions || !userContainerOptions.fallbackOnErrors)\n throw error\n }\n }\n return defaultContainer.get<T>(someClass)\n}\n"],"sourceRoot":"."}
1
+ {"version":3,"sources":["../../src/container.ts"],"names":[],"mappings":";;AA8DA,oCAMC;AAOD,4CAcC;AA5DD;;;;;GAKG;AACH,MAAM,gBAAgB,GAAuB,IAAI,CAAC;IAAA;QAGtC,cAAS,GAAsC,EAAE,CAAA;IAc7D,CAAC;IAZG,GAAG,CAAI,SAA2B;QAC9B,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;QAC/D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,QAAQ,GAAG;gBACP,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,IAAK,SAAyB,EAAE;aAC3C,CAAA;YACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACjC,CAAC;QAED,OAAO,QAAQ,CAAC,MAAM,CAAA;IAC1B,CAAC;CACJ,CAAC,EAAE,CAAA;AAEJ,IAAI,aAAiC,CAAA;AACrC,IAAI,oBAAqD,CAAA;AAEzD;;;;GAIG;AACH,SAAgB,YAAY,CACxB,YAAgC,EAChC,OAA6B;IAE7B,aAAa,GAAG,YAAY,CAAA;IAC5B,oBAAoB,GAAG,OAAO,CAAA;AAClC,CAAC;AAED;;;;GAIG;AACH,SAAgB,gBAAgB,CAAI,SAA2B;IAC3D,IAAI,aAAa,EAAE,CAAC;QAChB,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YAC7C,IAAI,QAAQ;gBAAE,OAAO,QAAQ,CAAA;YAE7B,IAAI,CAAC,oBAAoB,IAAI,CAAC,oBAAoB,CAAC,QAAQ;gBACvD,OAAO,QAAQ,CAAA;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,oBAAoB,IAAI,CAAC,oBAAoB,CAAC,gBAAgB;gBAC/D,MAAM,KAAK,CAAA;QACnB,CAAC;IACL,CAAC;IACD,OAAO,gBAAgB,CAAC,GAAG,CAAI,SAAS,CAAC,CAAA;AAC7C,CAAC","file":"container.js","sourcesContent":["/**\n * Container options.\n *\n * @deprecated\n */\nexport interface UseContainerOptions {\n /**\n * If set to true, then default container will be used in the case if given container haven't returned anything.\n */\n fallback?: boolean\n\n /**\n * If set to true, then default container will be used in the case if given container thrown an exception.\n */\n fallbackOnErrors?: boolean\n}\n\n/**\n * @deprecated\n */\nexport type ContainedType<T> = { new (...args: any[]): T } | Function\n\n/**\n * @deprecated\n */\nexport interface ContainerInterface {\n get<T>(someClass: ContainedType<T>): T\n}\n\n/**\n * Container to be used by this library for inversion control. If container was not implicitly set then by default\n * container simply creates a new instance of the given class.\n *\n * @deprecated\n */\nconst defaultContainer: ContainerInterface = new (class\n implements ContainerInterface\n{\n private instances: { type: Function; object: any }[] = []\n\n get<T>(someClass: ContainedType<T>): T {\n let instance = this.instances.find((i) => i.type === someClass)\n if (!instance) {\n instance = {\n type: someClass,\n object: new (someClass as new () => T)(),\n }\n this.instances.push(instance)\n }\n\n return instance.object\n }\n})()\n\nlet userContainer: ContainerInterface\nlet userContainerOptions: UseContainerOptions | undefined\n\n/**\n * Sets container to be used by this library.\n *\n * @deprecated\n */\nexport function useContainer(\n iocContainer: ContainerInterface,\n options?: UseContainerOptions,\n) {\n userContainer = iocContainer\n userContainerOptions = options\n}\n\n/**\n * Gets the IOC container used by this library.\n *\n * @deprecated\n */\nexport function getFromContainer<T>(someClass: ContainedType<T>): T {\n if (userContainer) {\n try {\n const instance = userContainer.get(someClass)\n if (instance) return instance\n\n if (!userContainerOptions || !userContainerOptions.fallback)\n return instance\n } catch (error) {\n if (!userContainerOptions || !userContainerOptions.fallbackOnErrors)\n throw error\n }\n }\n return defaultContainer.get<T>(someClass)\n}\n"],"sourceRoot":"."}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Check = void 0;
3
+ exports.Check = Check;
4
4
  const globals_1 = require("../globals");
5
5
  const error_1 = require("../error");
6
6
  /**
@@ -23,6 +23,5 @@ function Check(nameOrExpression, maybeExpression) {
23
23
  });
24
24
  };
25
25
  }
26
- exports.Check = Check;
27
26
 
28
27
  //# sourceMappingURL=Check.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/decorator/Check.ts"],"names":[],"mappings":";;;AAAA,wCAAmD;AAEnD,oCAAuC;AAmBvC;;;;GAIG;AACH,SAAgB,KAAK,CACjB,gBAAwB,EACxB,eAAwB;IAExB,MAAM,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAA;IAC3D,MAAM,UAAU,GAAG,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAA;IAEvE,IAAI,CAAC,UAAU;QAAE,MAAM,IAAI,oBAAY,CAAC,8BAA8B,CAAC,CAAA;IAEvE,OAAO,UACH,WAA8B,EAC9B,YAA8B;QAE9B,IAAA,gCAAsB,GAAE,CAAC,MAAM,CAAC,IAAI,CAAC;YACjC,MAAM,EAAE,YAAY;gBAChB,CAAC,CAAC,WAAW,CAAC,WAAW;gBACzB,CAAC,CAAE,WAAwB;YAC/B,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,UAAU;SACJ,CAAC,CAAA;IAC3B,CAAC,CAAA;AACL,CAAC;AArBD,sBAqBC","file":"Check.js","sourcesContent":["import { getMetadataArgsStorage } from \"../globals\"\nimport { CheckMetadataArgs } from \"../metadata-args/CheckMetadataArgs\"\nimport { TypeORMError } from \"../error\"\n\n/**\n * Creates a database check.\n * Can be used on entity property or on entity.\n * Can create checks with composite columns when used on entity.\n */\nexport function Check(expression: string): ClassDecorator & PropertyDecorator\n\n/**\n * Creates a database check.\n * Can be used on entity property or on entity.\n * Can create checks with composite columns when used on entity.\n */\nexport function Check(\n name: string,\n expression: string,\n): ClassDecorator & PropertyDecorator\n\n/**\n * Creates a database check.\n * Can be used on entity property or on entity.\n * Can create checks with composite columns when used on entity.\n */\nexport function Check(\n nameOrExpression: string,\n maybeExpression?: string,\n): ClassDecorator & PropertyDecorator {\n const name = maybeExpression ? nameOrExpression : undefined\n const expression = maybeExpression ? maybeExpression : nameOrExpression\n\n if (!expression) throw new TypeORMError(`Check expression is required`)\n\n return function (\n clsOrObject: Function | Object,\n propertyName?: string | symbol,\n ) {\n getMetadataArgsStorage().checks.push({\n target: propertyName\n ? clsOrObject.constructor\n : (clsOrObject as Function),\n name: name,\n expression: expression,\n } as CheckMetadataArgs)\n }\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/decorator/Check.ts"],"names":[],"mappings":";;AA0BA,sBAqBC;AA/CD,wCAAmD;AAEnD,oCAAuC;AAmBvC;;;;GAIG;AACH,SAAgB,KAAK,CACjB,gBAAwB,EACxB,eAAwB;IAExB,MAAM,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAA;IAC3D,MAAM,UAAU,GAAG,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAA;IAEvE,IAAI,CAAC,UAAU;QAAE,MAAM,IAAI,oBAAY,CAAC,8BAA8B,CAAC,CAAA;IAEvE,OAAO,UACH,WAA8B,EAC9B,YAA8B;QAE9B,IAAA,gCAAsB,GAAE,CAAC,MAAM,CAAC,IAAI,CAAC;YACjC,MAAM,EAAE,YAAY;gBAChB,CAAC,CAAC,WAAW,CAAC,WAAW;gBACzB,CAAC,CAAE,WAAwB;YAC/B,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,UAAU;SACJ,CAAC,CAAA;IAC3B,CAAC,CAAA;AACL,CAAC","file":"Check.js","sourcesContent":["import { getMetadataArgsStorage } from \"../globals\"\nimport { CheckMetadataArgs } from \"../metadata-args/CheckMetadataArgs\"\nimport { TypeORMError } from \"../error\"\n\n/**\n * Creates a database check.\n * Can be used on entity property or on entity.\n * Can create checks with composite columns when used on entity.\n */\nexport function Check(expression: string): ClassDecorator & PropertyDecorator\n\n/**\n * Creates a database check.\n * Can be used on entity property or on entity.\n * Can create checks with composite columns when used on entity.\n */\nexport function Check(\n name: string,\n expression: string,\n): ClassDecorator & PropertyDecorator\n\n/**\n * Creates a database check.\n * Can be used on entity property or on entity.\n * Can create checks with composite columns when used on entity.\n */\nexport function Check(\n nameOrExpression: string,\n maybeExpression?: string,\n): ClassDecorator & PropertyDecorator {\n const name = maybeExpression ? nameOrExpression : undefined\n const expression = maybeExpression ? maybeExpression : nameOrExpression\n\n if (!expression) throw new TypeORMError(`Check expression is required`)\n\n return function (\n clsOrObject: Function | Object,\n propertyName?: string | symbol,\n ) {\n getMetadataArgsStorage().checks.push({\n target: propertyName\n ? clsOrObject.constructor\n : (clsOrObject as Function),\n name: name,\n expression: expression,\n } as CheckMetadataArgs)\n }\n}\n"],"sourceRoot":".."}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EntityRepository = void 0;
3
+ exports.EntityRepository = EntityRepository;
4
4
  const globals_1 = require("../globals");
5
5
  /**
6
6
  * Used to declare a class as a custom repository.
@@ -17,6 +17,5 @@ function EntityRepository(entity) {
17
17
  });
18
18
  };
19
19
  }
20
- exports.EntityRepository = EntityRepository;
21
20
 
22
21
  //# sourceMappingURL=EntityRepository.js.map