typeorm 0.2.42-dev.54cf660 → 0.2.42-dev.6316e26

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 (296) hide show
  1. package/README.md +38 -0
  2. package/browser/cache/RedisQueryResultCache.js +40 -35
  3. package/browser/cache/RedisQueryResultCache.js.map +1 -1
  4. package/browser/common/RelationType.d.ts +14 -0
  5. package/browser/common/RelationType.js +3 -0
  6. package/browser/common/RelationType.js.map +1 -0
  7. package/browser/connection/BaseConnectionOptions.d.ts +5 -0
  8. package/browser/connection/BaseConnectionOptions.js.map +1 -1
  9. package/browser/connection/Connection.d.ts +7 -3
  10. package/browser/connection/Connection.js +47 -31
  11. package/browser/connection/Connection.js.map +1 -1
  12. package/browser/connection/ConnectionMetadataBuilder.d.ts +3 -3
  13. package/browser/connection/ConnectionMetadataBuilder.js +54 -22
  14. package/browser/connection/ConnectionMetadataBuilder.js.map +1 -1
  15. package/browser/connection/ConnectionOptionsReader.js +33 -28
  16. package/browser/connection/ConnectionOptionsReader.js.map +1 -1
  17. package/browser/connection/options-reader/ConnectionOptionsEnvReader.js +1 -0
  18. package/browser/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
  19. package/browser/decorator/Unique.d.ts +5 -4
  20. package/browser/decorator/Unique.js +7 -3
  21. package/browser/decorator/Unique.js.map +1 -1
  22. package/browser/decorator/options/RelationOptions.d.ts +1 -1
  23. package/browser/decorator/options/RelationOptions.js.map +1 -1
  24. package/browser/decorator/options/UniqueOptions.d.ts +10 -0
  25. package/browser/decorator/options/UniqueOptions.js +3 -0
  26. package/browser/decorator/options/UniqueOptions.js.map +1 -0
  27. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js +1 -1
  28. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  29. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js +7 -5
  30. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  31. package/browser/driver/cockroachdb/CockroachQueryRunner.js +1 -1
  32. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  33. package/browser/driver/mysql/MysqlQueryRunner.js +1 -1
  34. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  35. package/browser/driver/oracle/OracleQueryRunner.js +1 -1
  36. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  37. package/browser/driver/postgres/PostgresQueryRunner.js +13 -5
  38. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  39. package/browser/driver/sap/SapQueryRunner.js +1 -1
  40. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  41. package/browser/driver/sqlite/SqliteDriver.js +11 -10
  42. package/browser/driver/sqlite/SqliteDriver.js.map +1 -1
  43. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +1 -1
  44. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  45. package/browser/entity-manager/EntityManager.d.ts +2 -2
  46. package/browser/entity-manager/EntityManager.js +1 -1
  47. package/browser/entity-manager/EntityManager.js.map +1 -1
  48. package/browser/entity-manager/MongoEntityManager.js +2 -1
  49. package/browser/entity-manager/MongoEntityManager.js.map +1 -1
  50. package/browser/entity-schema/EntitySchemaOptions.d.ts +6 -0
  51. package/browser/entity-schema/EntitySchemaOptions.js.map +1 -1
  52. package/browser/entity-schema/EntitySchemaRelationOptions.d.ts +1 -1
  53. package/browser/entity-schema/EntitySchemaRelationOptions.js.map +1 -1
  54. package/browser/entity-schema/EntitySchemaTransformer.js +3 -1
  55. package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
  56. package/browser/entity-schema/EntitySchemaUniqueOptions.d.ts +5 -0
  57. package/browser/entity-schema/EntitySchemaUniqueOptions.js.map +1 -1
  58. package/browser/find-options/FindOneOptions.d.ts +6 -0
  59. package/browser/find-options/FindOneOptions.js.map +1 -1
  60. package/browser/find-options/FindOptionsUtils.js +4 -0
  61. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  62. package/browser/find-options/operator/Like.d.ts +1 -1
  63. package/browser/find-options/operator/Like.js +1 -1
  64. package/browser/find-options/operator/Like.js.map +1 -1
  65. package/browser/find-options/operator/Not.d.ts +1 -1
  66. package/browser/find-options/operator/Not.js +1 -1
  67. package/browser/find-options/operator/Not.js.map +1 -1
  68. package/browser/globals.js +34 -7
  69. package/browser/globals.js.map +1 -1
  70. package/browser/index.d.ts +2 -0
  71. package/browser/index.js +2 -0
  72. package/browser/index.js.map +1 -1
  73. package/browser/metadata/RelationMetadata.d.ts +1 -1
  74. package/browser/metadata/RelationMetadata.js.map +1 -1
  75. package/browser/metadata/UniqueMetadata.d.ts +5 -0
  76. package/browser/metadata/UniqueMetadata.js +1 -0
  77. package/browser/metadata/UniqueMetadata.js.map +1 -1
  78. package/browser/metadata-args/UniqueMetadataArgs.d.ts +5 -0
  79. package/browser/metadata-args/UniqueMetadataArgs.js.map +1 -1
  80. package/browser/metadata-builder/EntityMetadataValidator.js +1 -0
  81. package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
  82. package/browser/migration/MigrationExecutor.js +1 -1
  83. package/browser/migration/MigrationExecutor.js.map +1 -1
  84. package/browser/persistence/subject-builder/OneToManySubjectBuilder.js +3 -0
  85. package/browser/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  86. package/browser/query-builder/DeleteQueryBuilder.d.ts +4 -2
  87. package/browser/query-builder/DeleteQueryBuilder.js +4 -2
  88. package/browser/query-builder/DeleteQueryBuilder.js.map +1 -1
  89. package/browser/query-builder/InsertQueryBuilder.d.ts +1 -1
  90. package/browser/query-builder/InsertQueryBuilder.js +1 -1
  91. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  92. package/browser/query-builder/NotBrackets.d.ts +7 -0
  93. package/browser/query-builder/NotBrackets.js +16 -0
  94. package/browser/query-builder/NotBrackets.js.map +1 -0
  95. package/browser/query-builder/QueryBuilder.d.ts +3 -2
  96. package/browser/query-builder/QueryBuilder.js +2 -1
  97. package/browser/query-builder/QueryBuilder.js.map +1 -1
  98. package/browser/query-builder/RelationLoader.js +11 -6
  99. package/browser/query-builder/RelationLoader.js.map +1 -1
  100. package/browser/query-builder/RelationQueryBuilder.d.ts +1 -1
  101. package/browser/query-builder/RelationQueryBuilder.js +1 -1
  102. package/browser/query-builder/RelationQueryBuilder.js.map +1 -1
  103. package/browser/query-builder/SelectQueryBuilder.d.ts +10 -1
  104. package/browser/query-builder/SelectQueryBuilder.js +28 -21
  105. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  106. package/browser/query-builder/SoftDeleteQueryBuilder.d.ts +1 -1
  107. package/browser/query-builder/SoftDeleteQueryBuilder.js +1 -1
  108. package/browser/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  109. package/browser/query-builder/UpdateQueryBuilder.d.ts +4 -2
  110. package/browser/query-builder/UpdateQueryBuilder.js +11 -6
  111. package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
  112. package/browser/query-builder/WhereExpressionBuilder.d.ts +3 -1
  113. package/browser/query-builder/WhereExpressionBuilder.js.map +1 -1
  114. package/browser/query-runner/BaseQueryRunner.d.ts +2 -2
  115. package/browser/query-runner/BaseQueryRunner.js +3 -3
  116. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  117. package/browser/repository/AbstractRepository.d.ts +2 -2
  118. package/browser/repository/AbstractRepository.js +2 -2
  119. package/browser/repository/AbstractRepository.js.map +1 -1
  120. package/browser/repository/BaseEntity.d.ts +1 -1
  121. package/browser/repository/BaseEntity.js +1 -1
  122. package/browser/repository/BaseEntity.js.map +1 -1
  123. package/browser/repository/Repository.d.ts +1 -1
  124. package/browser/repository/Repository.js +1 -1
  125. package/browser/repository/Repository.js.map +1 -1
  126. package/browser/repository/TreeRepository.js +1 -1
  127. package/browser/repository/TreeRepository.js.map +1 -1
  128. package/browser/schema-builder/RdbmsSchemaBuilder.js +1 -1
  129. package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  130. package/browser/schema-builder/options/TableUniqueOptions.d.ts +5 -0
  131. package/browser/schema-builder/options/TableUniqueOptions.js.map +1 -1
  132. package/browser/schema-builder/table/TableUnique.d.ts +5 -0
  133. package/browser/schema-builder/table/TableUnique.js +5 -2
  134. package/browser/schema-builder/table/TableUnique.js.map +1 -1
  135. package/browser/util/DirectoryExportedClassesLoader.d.ts +1 -1
  136. package/browser/util/DirectoryExportedClassesLoader.js +55 -31
  137. package/browser/util/DirectoryExportedClassesLoader.js.map +1 -1
  138. package/browser/util/ImportUtils.d.ts +1 -0
  139. package/browser/util/ImportUtils.js +90 -0
  140. package/browser/util/ImportUtils.js.map +1 -0
  141. package/cache/RedisQueryResultCache.js +39 -34
  142. package/cache/RedisQueryResultCache.js.map +1 -1
  143. package/commands/CommandUtils.d.ts +4 -0
  144. package/commands/CommandUtils.js +10 -0
  145. package/commands/CommandUtils.js.map +1 -1
  146. package/commands/InitCommand.d.ts +9 -7
  147. package/commands/InitCommand.js +72 -43
  148. package/commands/InitCommand.js.map +1 -1
  149. package/commands/MigrationCreateCommand.d.ts +2 -0
  150. package/commands/MigrationCreateCommand.js +7 -1
  151. package/commands/MigrationCreateCommand.js.map +1 -1
  152. package/commands/MigrationGenerateCommand.d.ts +2 -0
  153. package/commands/MigrationGenerateCommand.js +7 -1
  154. package/commands/MigrationGenerateCommand.js.map +1 -1
  155. package/commands/QueryCommand.d.ts +1 -1
  156. package/commands/QueryCommand.js +1 -1
  157. package/commands/QueryCommand.js.map +1 -1
  158. package/common/RelationType.d.ts +14 -0
  159. package/common/RelationType.js +4 -0
  160. package/common/RelationType.js.map +1 -0
  161. package/connection/BaseConnectionOptions.d.ts +5 -0
  162. package/connection/BaseConnectionOptions.js.map +1 -1
  163. package/connection/Connection.d.ts +7 -3
  164. package/connection/Connection.js +47 -31
  165. package/connection/Connection.js.map +1 -1
  166. package/connection/ConnectionMetadataBuilder.d.ts +3 -3
  167. package/connection/ConnectionMetadataBuilder.js +53 -21
  168. package/connection/ConnectionMetadataBuilder.js.map +1 -1
  169. package/connection/ConnectionOptionsReader.js +32 -27
  170. package/connection/ConnectionOptionsReader.js.map +1 -1
  171. package/connection/options-reader/ConnectionOptionsEnvReader.js +1 -0
  172. package/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
  173. package/decorator/Unique.d.ts +5 -4
  174. package/decorator/Unique.js +7 -3
  175. package/decorator/Unique.js.map +1 -1
  176. package/decorator/options/RelationOptions.d.ts +1 -1
  177. package/decorator/options/RelationOptions.js.map +1 -1
  178. package/decorator/options/UniqueOptions.d.ts +10 -0
  179. package/decorator/options/UniqueOptions.js +4 -0
  180. package/decorator/options/UniqueOptions.js.map +1 -0
  181. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js +1 -1
  182. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  183. package/driver/better-sqlite3/BetterSqlite3Driver.js +7 -5
  184. package/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  185. package/driver/cockroachdb/CockroachQueryRunner.js +1 -1
  186. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  187. package/driver/mysql/MysqlQueryRunner.js +1 -1
  188. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  189. package/driver/oracle/OracleQueryRunner.js +1 -1
  190. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  191. package/driver/postgres/PostgresQueryRunner.js +13 -5
  192. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  193. package/driver/sap/SapQueryRunner.js +1 -1
  194. package/driver/sap/SapQueryRunner.js.map +1 -1
  195. package/driver/sqlite/SqliteDriver.js +11 -10
  196. package/driver/sqlite/SqliteDriver.js.map +1 -1
  197. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +1 -1
  198. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  199. package/entity-manager/EntityManager.d.ts +2 -2
  200. package/entity-manager/EntityManager.js +1 -1
  201. package/entity-manager/EntityManager.js.map +1 -1
  202. package/entity-manager/MongoEntityManager.js +2 -1
  203. package/entity-manager/MongoEntityManager.js.map +1 -1
  204. package/entity-schema/EntitySchemaOptions.d.ts +6 -0
  205. package/entity-schema/EntitySchemaOptions.js.map +1 -1
  206. package/entity-schema/EntitySchemaRelationOptions.d.ts +1 -1
  207. package/entity-schema/EntitySchemaRelationOptions.js.map +1 -1
  208. package/entity-schema/EntitySchemaTransformer.js +3 -1
  209. package/entity-schema/EntitySchemaTransformer.js.map +1 -1
  210. package/entity-schema/EntitySchemaUniqueOptions.d.ts +5 -0
  211. package/entity-schema/EntitySchemaUniqueOptions.js.map +1 -1
  212. package/find-options/FindOneOptions.d.ts +6 -0
  213. package/find-options/FindOneOptions.js.map +1 -1
  214. package/find-options/FindOptionsUtils.js +4 -0
  215. package/find-options/FindOptionsUtils.js.map +1 -1
  216. package/find-options/operator/Like.d.ts +1 -1
  217. package/find-options/operator/Like.js +1 -1
  218. package/find-options/operator/Like.js.map +1 -1
  219. package/find-options/operator/Not.d.ts +1 -1
  220. package/find-options/operator/Not.js +1 -1
  221. package/find-options/operator/Not.js.map +1 -1
  222. package/globals.js +33 -6
  223. package/globals.js.map +1 -1
  224. package/index.d.ts +2 -0
  225. package/index.js +4 -1
  226. package/index.js.map +1 -1
  227. package/index.mjs +352 -0
  228. package/metadata/RelationMetadata.d.ts +1 -1
  229. package/metadata/RelationMetadata.js.map +1 -1
  230. package/metadata/UniqueMetadata.d.ts +5 -0
  231. package/metadata/UniqueMetadata.js +1 -0
  232. package/metadata/UniqueMetadata.js.map +1 -1
  233. package/metadata-args/UniqueMetadataArgs.d.ts +5 -0
  234. package/metadata-args/UniqueMetadataArgs.js.map +1 -1
  235. package/metadata-builder/EntityMetadataValidator.js +1 -0
  236. package/metadata-builder/EntityMetadataValidator.js.map +1 -1
  237. package/migration/MigrationExecutor.js +1 -1
  238. package/migration/MigrationExecutor.js.map +1 -1
  239. package/package.json +1 -1
  240. package/persistence/subject-builder/OneToManySubjectBuilder.js +3 -0
  241. package/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  242. package/query-builder/DeleteQueryBuilder.d.ts +4 -2
  243. package/query-builder/DeleteQueryBuilder.js +4 -2
  244. package/query-builder/DeleteQueryBuilder.js.map +1 -1
  245. package/query-builder/InsertQueryBuilder.d.ts +1 -1
  246. package/query-builder/InsertQueryBuilder.js +1 -1
  247. package/query-builder/InsertQueryBuilder.js.map +1 -1
  248. package/query-builder/NotBrackets.d.ts +7 -0
  249. package/query-builder/NotBrackets.js +19 -0
  250. package/query-builder/NotBrackets.js.map +1 -0
  251. package/query-builder/QueryBuilder.d.ts +3 -2
  252. package/query-builder/QueryBuilder.js +2 -1
  253. package/query-builder/QueryBuilder.js.map +1 -1
  254. package/query-builder/RelationLoader.js +11 -6
  255. package/query-builder/RelationLoader.js.map +1 -1
  256. package/query-builder/RelationQueryBuilder.d.ts +1 -1
  257. package/query-builder/RelationQueryBuilder.js +1 -1
  258. package/query-builder/RelationQueryBuilder.js.map +1 -1
  259. package/query-builder/SelectQueryBuilder.d.ts +10 -1
  260. package/query-builder/SelectQueryBuilder.js +28 -21
  261. package/query-builder/SelectQueryBuilder.js.map +1 -1
  262. package/query-builder/SoftDeleteQueryBuilder.d.ts +1 -1
  263. package/query-builder/SoftDeleteQueryBuilder.js +1 -1
  264. package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  265. package/query-builder/UpdateQueryBuilder.d.ts +4 -2
  266. package/query-builder/UpdateQueryBuilder.js +11 -6
  267. package/query-builder/UpdateQueryBuilder.js.map +1 -1
  268. package/query-builder/WhereExpressionBuilder.d.ts +3 -1
  269. package/query-builder/WhereExpressionBuilder.js.map +1 -1
  270. package/query-runner/BaseQueryRunner.d.ts +2 -2
  271. package/query-runner/BaseQueryRunner.js +3 -3
  272. package/query-runner/BaseQueryRunner.js.map +1 -1
  273. package/repository/AbstractRepository.d.ts +2 -2
  274. package/repository/AbstractRepository.js +2 -2
  275. package/repository/AbstractRepository.js.map +1 -1
  276. package/repository/BaseEntity.d.ts +1 -1
  277. package/repository/BaseEntity.js +1 -1
  278. package/repository/BaseEntity.js.map +1 -1
  279. package/repository/Repository.d.ts +1 -1
  280. package/repository/Repository.js +1 -1
  281. package/repository/Repository.js.map +1 -1
  282. package/repository/TreeRepository.js +1 -1
  283. package/repository/TreeRepository.js.map +1 -1
  284. package/schema-builder/RdbmsSchemaBuilder.js +1 -1
  285. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  286. package/schema-builder/options/TableUniqueOptions.d.ts +5 -0
  287. package/schema-builder/options/TableUniqueOptions.js.map +1 -1
  288. package/schema-builder/table/TableUnique.d.ts +5 -0
  289. package/schema-builder/table/TableUnique.js +5 -2
  290. package/schema-builder/table/TableUnique.js.map +1 -1
  291. package/util/DirectoryExportedClassesLoader.d.ts +1 -1
  292. package/util/DirectoryExportedClassesLoader.js +54 -31
  293. package/util/DirectoryExportedClassesLoader.js.map +1 -1
  294. package/util/ImportUtils.d.ts +1 -0
  295. package/util/ImportUtils.js +94 -0
  296. package/util/ImportUtils.js.map +1 -0
@@ -1,42 +1,66 @@
1
+ import { __awaiter, __generator, __read } from "tslib";
1
2
  import glob from "glob";
2
3
  import { PlatformTools } from "../platform/PlatformTools";
3
4
  import { EntitySchema } from "../entity-schema/EntitySchema";
5
+ import { importOrRequireFile } from "./ImportUtils";
4
6
  /**
5
7
  * Loads all exported classes from the given directory.
6
8
  */
7
9
  export function importClassesFromDirectories(logger, directories, formats) {
8
- if (formats === void 0) { formats = [".js", ".cjs", ".ts"]; }
9
- var logLevel = "info";
10
- var classesNotFoundMessage = "No classes were found using the provided glob pattern: ";
11
- var classesFoundMessage = "All classes found using provided glob pattern";
12
- function loadFileClasses(exported, allLoaded) {
13
- if (typeof exported === "function" || exported instanceof EntitySchema) {
14
- allLoaded.push(exported);
10
+ if (formats === void 0) { formats = [".js", ".mjs", ".cjs", ".ts", ".mts", ".cts"]; }
11
+ return __awaiter(this, void 0, void 0, function () {
12
+ function loadFileClasses(exported, allLoaded) {
13
+ if (typeof exported === "function" || exported instanceof EntitySchema) {
14
+ allLoaded.push(exported);
15
+ }
16
+ else if (Array.isArray(exported)) {
17
+ exported.forEach(function (i) { return loadFileClasses(i, allLoaded); });
18
+ }
19
+ else if (typeof exported === "object" && exported !== null) {
20
+ Object.keys(exported).forEach(function (key) { return loadFileClasses(exported[key], allLoaded); });
21
+ }
22
+ return allLoaded;
15
23
  }
16
- else if (Array.isArray(exported)) {
17
- exported.forEach(function (i) { return loadFileClasses(i, allLoaded); });
18
- }
19
- else if (typeof exported === "object" && exported !== null) {
20
- Object.keys(exported).forEach(function (key) { return loadFileClasses(exported[key], allLoaded); });
21
- }
22
- return allLoaded;
23
- }
24
- var allFiles = directories.reduce(function (allDirs, dir) {
25
- return allDirs.concat(glob.sync(PlatformTools.pathNormalize(dir)));
26
- }, []);
27
- if (directories.length > 0 && allFiles.length === 0) {
28
- logger.log(logLevel, classesNotFoundMessage + " \"" + directories + "\"");
29
- }
30
- else if (allFiles.length > 0) {
31
- logger.log(logLevel, classesFoundMessage + " \"" + directories + "\" : \"" + allFiles + "\"");
32
- }
33
- var dirs = allFiles
34
- .filter(function (file) {
35
- var dtsExtension = file.substring(file.length - 5, file.length);
36
- return formats.indexOf(PlatformTools.pathExtname(file)) !== -1 && dtsExtension !== ".d.ts";
37
- })
38
- .map(function (file) { return require(PlatformTools.pathResolve(file)); });
39
- return loadFileClasses(dirs, []);
24
+ var logLevel, classesNotFoundMessage, classesFoundMessage, allFiles, dirPromises, dirs;
25
+ var _this = this;
26
+ return __generator(this, function (_a) {
27
+ switch (_a.label) {
28
+ case 0:
29
+ logLevel = "info";
30
+ classesNotFoundMessage = "No classes were found using the provided glob pattern: ";
31
+ classesFoundMessage = "All classes found using provided glob pattern";
32
+ allFiles = directories.reduce(function (allDirs, dir) {
33
+ return allDirs.concat(glob.sync(PlatformTools.pathNormalize(dir)));
34
+ }, []);
35
+ if (directories.length > 0 && allFiles.length === 0) {
36
+ logger.log(logLevel, classesNotFoundMessage + " \"" + directories + "\"");
37
+ }
38
+ else if (allFiles.length > 0) {
39
+ logger.log(logLevel, classesFoundMessage + " \"" + directories + "\" : \"" + allFiles + "\"");
40
+ }
41
+ dirPromises = allFiles
42
+ .filter(function (file) {
43
+ var dtsExtension = file.substring(file.length - 5, file.length);
44
+ return formats.indexOf(PlatformTools.pathExtname(file)) !== -1 && dtsExtension !== ".d.ts";
45
+ })
46
+ .map(function (file) { return __awaiter(_this, void 0, void 0, function () {
47
+ var _a, importOrRequireResult;
48
+ return __generator(this, function (_b) {
49
+ switch (_b.label) {
50
+ case 0: return [4 /*yield*/, importOrRequireFile(PlatformTools.pathResolve(file))];
51
+ case 1:
52
+ _a = __read.apply(void 0, [_b.sent(), 1]), importOrRequireResult = _a[0];
53
+ return [2 /*return*/, importOrRequireResult];
54
+ }
55
+ });
56
+ }); });
57
+ return [4 /*yield*/, Promise.all(dirPromises)];
58
+ case 1:
59
+ dirs = _a.sent();
60
+ return [2 /*return*/, loadFileClasses(dirs, [])];
61
+ }
62
+ });
63
+ });
40
64
  }
41
65
  /**
42
66
  * Loads all json files from the given directory.
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/util/DirectoryExportedClassesLoader.ts"],"names":[],"mappings":"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","file":"DirectoryExportedClassesLoader.js","sourcesContent":["import glob from \"glob\";\nimport {PlatformTools} from \"../platform/PlatformTools\";\nimport {EntitySchema} from \"../entity-schema/EntitySchema\";\nimport {Logger} from \"../logger/Logger\";\n/**\n * Loads all exported classes from the given directory.\n */\nexport function importClassesFromDirectories(logger: Logger, directories: string[], formats = [\".js\", \".cjs\", \".ts\"]): Function[] {\n\n const logLevel = \"info\";\n const classesNotFoundMessage = \"No classes were found using the provided glob pattern: \";\n const classesFoundMessage = \"All classes found using provided glob pattern\";\n function loadFileClasses(exported: any, allLoaded: Function[]) {\n if (typeof exported === \"function\" || exported instanceof EntitySchema) {\n allLoaded.push(exported);\n\n } else if (Array.isArray(exported)) {\n exported.forEach((i: any) => loadFileClasses(i, allLoaded));\n\n } else if (typeof exported === \"object\" && exported !== null) {\n Object.keys(exported).forEach(key => loadFileClasses(exported[key], allLoaded));\n\n }\n return allLoaded;\n }\n\n const allFiles = directories.reduce((allDirs, dir) => {\n return allDirs.concat(glob.sync(PlatformTools.pathNormalize(dir)));\n }, [] as string[]);\n\n if (directories.length > 0 && allFiles.length === 0) {\n logger.log(logLevel, `${classesNotFoundMessage} \"${directories}\"`);\n } else if (allFiles.length > 0) {\n logger.log(logLevel, `${classesFoundMessage} \"${directories}\" : \"${allFiles}\"`);\n }\n const dirs = allFiles\n .filter(file => {\n const dtsExtension = file.substring(file.length - 5, file.length);\n return formats.indexOf(PlatformTools.pathExtname(file)) !== -1 && dtsExtension !== \".d.ts\";\n })\n .map(file => require(PlatformTools.pathResolve(file)));\n\n return loadFileClasses(dirs, []);\n}\n\n/**\n * Loads all json files from the given directory.\n */\nexport function importJsonsFromDirectories(directories: string[], format = \".json\"): any[] {\n\n const allFiles = directories.reduce((allDirs, dir) => {\n return allDirs.concat(glob.sync(PlatformTools.pathNormalize(dir)));\n }, [] as string[]);\n\n return allFiles\n .filter(file => PlatformTools.pathExtname(file) === format)\n .map(file => require(PlatformTools.pathResolve(file)));\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/util/DirectoryExportedClassesLoader.ts"],"names":[],"mappings":";AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAC,aAAa,EAAC,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAC,YAAY,EAAC,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAC,mBAAmB,EAAC,MAAM,eAAe,CAAC;AAClD;;GAEG;AACH,MAAM,UAAgB,4BAA4B,CAAC,MAAc,EAAE,WAAqB,EAAE,OAAwD;IAAxD,wBAAA,EAAA,WAAW,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC;;QAK9I,SAAS,eAAe,CAAC,QAAa,EAAE,SAAqB;YACzD,IAAI,OAAO,QAAQ,KAAK,UAAU,IAAI,QAAQ,YAAY,YAAY,EAAE;gBACpE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAE5B;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAChC,QAAQ,CAAC,OAAO,CAAC,UAAC,CAAM,IAAK,OAAA,eAAe,CAAC,CAAC,EAAE,SAAS,CAAC,EAA7B,CAA6B,CAAC,CAAC;aAE/D;iBAAM,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE;gBAC1D,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAA,GAAG,IAAI,OAAA,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,EAAzC,CAAyC,CAAC,CAAC;aAEnF;YACD,OAAO,SAAS,CAAC;QACrB,CAAC;;;;;;oBAfK,QAAQ,GAAG,MAAM,CAAC;oBAClB,sBAAsB,GAAG,yDAAyD,CAAC;oBACnF,mBAAmB,GAAG,+CAA+C,CAAC;oBAetE,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,UAAC,OAAO,EAAE,GAAG;wBAC7C,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACvE,CAAC,EAAE,EAAc,CAAC,CAAC;oBAEnB,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;wBACjD,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAK,sBAAsB,WAAK,WAAW,OAAG,CAAC,CAAC;qBACtE;yBAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC5B,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAK,mBAAmB,WAAK,WAAW,eAAQ,QAAQ,OAAG,CAAC,CAAC;qBACnF;oBACK,WAAW,GAAG,QAAQ;yBACvB,MAAM,CAAC,UAAA,IAAI;wBACR,IAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;wBAClE,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,YAAY,KAAK,OAAO,CAAC;oBAC/F,CAAC,CAAC;yBACD,GAAG,CAAC,UAAM,IAAI;;;;wCACqB,qBAAM,mBAAmB,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAA;;oCAApF,KAAA,sBAA0B,SAA0D,KAAA,EAAnF,qBAAqB,QAAA;oCAC5B,sBAAO,qBAAqB,EAAC;;;yBAChC,CAAC,CAAC;oBAEM,qBAAM,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAA;;oBAArC,IAAI,GAAG,SAA8B;oBAE3C,sBAAO,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,EAAC;;;;CACpC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CAAC,WAAqB,EAAE,MAAgB;IAAhB,uBAAA,EAAA,gBAAgB;IAE9E,IAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,UAAC,OAAO,EAAE,GAAG;QAC7C,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC,EAAE,EAAc,CAAC,CAAC;IAEnB,OAAO,QAAQ;SACV,MAAM,CAAC,UAAA,IAAI,IAAI,OAAA,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,MAAM,EAA1C,CAA0C,CAAC;SAC1D,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAxC,CAAwC,CAAC,CAAC;AAC/D,CAAC","file":"DirectoryExportedClassesLoader.js","sourcesContent":["import glob from \"glob\";\nimport {PlatformTools} from \"../platform/PlatformTools\";\nimport {EntitySchema} from \"../entity-schema/EntitySchema\";\nimport {Logger} from \"../logger/Logger\";\nimport {importOrRequireFile} from \"./ImportUtils\";\n/**\n * Loads all exported classes from the given directory.\n */\nexport async function importClassesFromDirectories(logger: Logger, directories: string[], formats = [\".js\", \".mjs\", \".cjs\", \".ts\", \".mts\", \".cts\"]): Promise<Function[]> {\n\n const logLevel = \"info\";\n const classesNotFoundMessage = \"No classes were found using the provided glob pattern: \";\n const classesFoundMessage = \"All classes found using provided glob pattern\";\n function loadFileClasses(exported: any, allLoaded: Function[]) {\n if (typeof exported === \"function\" || exported instanceof EntitySchema) {\n allLoaded.push(exported);\n\n } else if (Array.isArray(exported)) {\n exported.forEach((i: any) => loadFileClasses(i, allLoaded));\n\n } else if (typeof exported === \"object\" && exported !== null) {\n Object.keys(exported).forEach(key => loadFileClasses(exported[key], allLoaded));\n\n }\n return allLoaded;\n }\n\n const allFiles = directories.reduce((allDirs, dir) => {\n return allDirs.concat(glob.sync(PlatformTools.pathNormalize(dir)));\n }, [] as string[]);\n\n if (directories.length > 0 && allFiles.length === 0) {\n logger.log(logLevel, `${classesNotFoundMessage} \"${directories}\"`);\n } else if (allFiles.length > 0) {\n logger.log(logLevel, `${classesFoundMessage} \"${directories}\" : \"${allFiles}\"`);\n }\n const dirPromises = allFiles\n .filter(file => {\n const dtsExtension = file.substring(file.length - 5, file.length);\n return formats.indexOf(PlatformTools.pathExtname(file)) !== -1 && dtsExtension !== \".d.ts\";\n })\n .map(async file => {\n const [importOrRequireResult] = await importOrRequireFile(PlatformTools.pathResolve(file));\n return importOrRequireResult;\n });\n\n const dirs = await Promise.all(dirPromises);\n\n return loadFileClasses(dirs, []);\n}\n\n/**\n * Loads all json files from the given directory.\n */\nexport function importJsonsFromDirectories(directories: string[], format = \".json\"): any[] {\n\n const allFiles = directories.reduce((allDirs, dir) => {\n return allDirs.concat(glob.sync(PlatformTools.pathNormalize(dir)));\n }, [] as string[]);\n\n return allFiles\n .filter(file => PlatformTools.pathExtname(file) === format)\n .map(file => require(PlatformTools.pathResolve(file)));\n}\n"],"sourceRoot":".."}
@@ -0,0 +1 @@
1
+ export declare function importOrRequireFile(filePath: string): Promise<[result: any, moduleType: "esm" | "commonjs"]>;
@@ -0,0 +1,90 @@
1
+ import { __awaiter, __generator } from "tslib";
2
+ import fs from "fs";
3
+ import path from "path";
4
+ export function importOrRequireFile(filePath) {
5
+ var _a;
6
+ return __awaiter(this, void 0, void 0, function () {
7
+ var tryToImport, tryToRequire, extension, packageJson, isModule;
8
+ var _this = this;
9
+ return __generator(this, function (_b) {
10
+ switch (_b.label) {
11
+ case 0:
12
+ tryToImport = function () { return __awaiter(_this, void 0, void 0, function () {
13
+ return __generator(this, function (_a) {
14
+ switch (_a.label) {
15
+ case 0: return [4 /*yield*/, Function("return filePath => import(filePath)")()(filePath)];
16
+ case 1:
17
+ // `Function` is required to make sure the `import` statement wil stay `import` after
18
+ // transpilation and won't be converted to `require`
19
+ return [2 /*return*/, [_a.sent(), "esm"]];
20
+ }
21
+ });
22
+ }); };
23
+ tryToRequire = function () { return __awaiter(_this, void 0, void 0, function () {
24
+ return __generator(this, function (_a) {
25
+ return [2 /*return*/, [require(filePath), "commonjs"]];
26
+ });
27
+ }); };
28
+ extension = filePath.substring(filePath.lastIndexOf(".") + ".".length);
29
+ if (!(extension === "mjs" || extension === "mts")) return [3 /*break*/, 1];
30
+ return [2 /*return*/, tryToImport()];
31
+ case 1:
32
+ if (!(extension === "cjs" || extension === "cts")) return [3 /*break*/, 2];
33
+ return [2 /*return*/, tryToRequire()];
34
+ case 2:
35
+ if (!(extension === "js" || extension === "ts")) return [3 /*break*/, 4];
36
+ return [4 /*yield*/, getNearestPackageJson(filePath)];
37
+ case 3:
38
+ packageJson = _b.sent();
39
+ if (packageJson != null) {
40
+ isModule = ((_a = packageJson) === null || _a === void 0 ? void 0 : _a.type) === "module";
41
+ if (isModule)
42
+ return [2 /*return*/, tryToImport()];
43
+ else
44
+ return [2 /*return*/, tryToRequire()];
45
+ }
46
+ else
47
+ return [2 /*return*/, tryToRequire()];
48
+ _b.label = 4;
49
+ case 4: return [2 /*return*/, tryToRequire()];
50
+ }
51
+ });
52
+ });
53
+ }
54
+ function getNearestPackageJson(filePath) {
55
+ return new Promise(function (accept) {
56
+ var currentPath = filePath;
57
+ function searchPackageJson() {
58
+ var nextPath = path.dirname(currentPath);
59
+ if (currentPath === nextPath) // the top of the file tree is reached
60
+ accept(null);
61
+ else {
62
+ currentPath = nextPath;
63
+ var potentialPackageJson_1 = path.join(currentPath, "package.json");
64
+ fs.stat(potentialPackageJson_1, function (err, stats) {
65
+ if (err != null)
66
+ searchPackageJson();
67
+ else if (stats.isFile()) {
68
+ fs.readFile(potentialPackageJson_1, "utf8", function (err, data) {
69
+ if (err != null)
70
+ accept(null);
71
+ else {
72
+ try {
73
+ accept(JSON.parse(data));
74
+ }
75
+ catch (err) {
76
+ accept(null);
77
+ }
78
+ }
79
+ });
80
+ }
81
+ else
82
+ searchPackageJson();
83
+ });
84
+ }
85
+ }
86
+ searchPackageJson();
87
+ });
88
+ }
89
+
90
+ //# sourceMappingURL=ImportUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../browser/src/util/ImportUtils.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,UAAgB,mBAAmB,CAAC,QAAgB;;;;;;;;oBAChD,WAAW,GAAG;;;wCAGR,qBAAM,QAAQ,CAAC,qCAAqC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAA;;gCAFzE,qFAAqF;gCACrF,oDAAoD;gCACpD,uBAAQ,SAAiE,EAAE,KAAK,GAAE;;;yBACrF,CAAC;oBACI,YAAY,GAAG;;4BACjB,sBAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,EAAC;;yBAC1C,CAAC;oBAEI,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;yBAEzE,CAAA,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,KAAK,CAAA,EAA1C,wBAA0C;oBAC1C,sBAAO,WAAW,EAAE,EAAC;;yBAChB,CAAA,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,KAAK,CAAA,EAA1C,wBAA0C;oBAC/C,sBAAO,YAAY,EAAE,EAAC;;yBACjB,CAAA,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,CAAA,EAAxC,wBAAwC;oBACzB,qBAAM,qBAAqB,CAAC,QAAQ,CAAC,EAAA;;oBAAnD,WAAW,GAAG,SAAqC;oBAEzD,IAAI,WAAW,IAAI,IAAI,EAAE;wBACf,QAAQ,GAAG,CAAA,MAAC,WAAmB,0CAAE,IAAI,MAAK,QAAQ,CAAC;wBAEzD,IAAI,QAAQ;4BACR,sBAAO,WAAW,EAAE,EAAC;;4BAErB,sBAAO,YAAY,EAAE,EAAC;qBAC7B;;wBACG,sBAAO,YAAY,EAAE,EAAC;;wBAG9B,sBAAO,YAAY,EAAE,EAAC;;;;CACzB;AAED,SAAS,qBAAqB,CAAC,QAAgB;IAC3C,OAAO,IAAI,OAAO,CAAC,UAAC,MAAM;QACtB,IAAI,WAAW,GAAG,QAAQ,CAAC;QAE3B,SAAS,iBAAiB;YACtB,IAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAE3C,IAAI,WAAW,KAAK,QAAQ,EAAE,sCAAsC;gBAChE,MAAM,CAAC,IAAI,CAAC,CAAC;iBACZ;gBACD,WAAW,GAAG,QAAQ,CAAC;gBACvB,IAAM,sBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;gBAEpE,EAAE,CAAC,IAAI,CAAC,sBAAoB,EAAE,UAAC,GAAG,EAAE,KAAK;oBACrC,IAAI,GAAG,IAAI,IAAI;wBACX,iBAAiB,EAAE,CAAC;yBACnB,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE;wBACrB,EAAE,CAAC,QAAQ,CAAC,sBAAoB,EAAE,MAAM,EAAE,UAAC,GAAG,EAAE,IAAI;4BAChD,IAAI,GAAG,IAAI,IAAI;gCACX,MAAM,CAAC,IAAI,CAAC,CAAC;iCACZ;gCACD,IAAI;oCACA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;iCAC5B;gCAAC,OAAO,GAAG,EAAE;oCACV,MAAM,CAAC,IAAI,CAAC,CAAC;iCAChB;6BACJ;wBACL,CAAC,CAAC,CAAC;qBACN;;wBACG,iBAAiB,EAAE,CAAC;gBAC5B,CAAC,CAAC,CAAC;aACN;QACL,CAAC;QAED,iBAAiB,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;AACP,CAAC","file":"ImportUtils.js","sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\n\nexport async function importOrRequireFile(filePath: string): 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 [await Function(\"return filePath => import(filePath)\")()(filePath), \"esm\"];\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\")\n return tryToImport();\n else if (extension === \"cjs\" || extension === \"cts\")\n 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)\n return tryToImport();\n else\n return tryToRequire();\n } else\n 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) // the top of the file tree is reached\n accept(null);\n else {\n currentPath = nextPath;\n const potentialPackageJson = path.join(currentPath, \"package.json\");\n\n fs.stat(potentialPackageJson, (err, stats) => {\n if (err != null)\n searchPackageJson();\n else if (stats.isFile()) {\n fs.readFile(potentialPackageJson, \"utf8\", (err, data) => {\n if (err != null)\n accept(null);\n else {\n try {\n accept(JSON.parse(data));\n } catch (err) {\n accept(null);\n }\n }\n });\n } else\n searchPackageJson();\n });\n }\n }\n\n searchPackageJson();\n });\n}\n"],"sourceRoot":".."}
@@ -26,43 +26,48 @@ var RedisQueryResultCache = /** @class */ (function () {
26
26
  return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
27
27
  var cacheOptions;
28
28
  return (0, tslib_1.__generator)(this, function (_a) {
29
- cacheOptions = this.connection.options.cache;
30
- if (this.clientType === "redis") {
31
- if (cacheOptions && cacheOptions.options) {
32
- this.client = this.redis.createClient(cacheOptions.options);
33
- }
34
- else {
35
- this.client = this.redis.createClient();
36
- }
37
- }
38
- else if (this.clientType === "ioredis") {
39
- if (cacheOptions && cacheOptions.port) {
40
- if (cacheOptions.options) {
41
- this.client = new this.redis(cacheOptions.port, cacheOptions.options);
29
+ switch (_a.label) {
30
+ case 0:
31
+ cacheOptions = this.connection.options.cache;
32
+ if (!(this.clientType === "redis")) return [3 /*break*/, 3];
33
+ this.client = this.redis.createClient((0, tslib_1.__assign)((0, tslib_1.__assign)({}, cacheOptions === null || cacheOptions === void 0 ? void 0 : cacheOptions.options), { legacyMode: true }));
34
+ if (!("connect" in this.client)) return [3 /*break*/, 2];
35
+ return [4 /*yield*/, this.client.connect()];
36
+ case 1:
37
+ _a.sent();
38
+ _a.label = 2;
39
+ case 2: return [3 /*break*/, 4];
40
+ case 3:
41
+ if (this.clientType === "ioredis") {
42
+ if (cacheOptions && cacheOptions.port) {
43
+ if (cacheOptions.options) {
44
+ this.client = new this.redis(cacheOptions.port, cacheOptions.options);
45
+ }
46
+ else {
47
+ this.client = new this.redis(cacheOptions.port);
48
+ }
49
+ }
50
+ else if (cacheOptions && cacheOptions.options) {
51
+ this.client = new this.redis(cacheOptions.options);
52
+ }
53
+ else {
54
+ this.client = new this.redis();
55
+ }
42
56
  }
43
- else {
44
- this.client = new this.redis(cacheOptions.port);
57
+ else if (this.clientType === "ioredis/cluster") {
58
+ if (cacheOptions && cacheOptions.options && Array.isArray(cacheOptions.options)) {
59
+ this.client = new this.redis.Cluster(cacheOptions.options);
60
+ }
61
+ else if (cacheOptions && cacheOptions.options && cacheOptions.options.startupNodes) {
62
+ this.client = new this.redis.Cluster(cacheOptions.options.startupNodes, cacheOptions.options.options);
63
+ }
64
+ else {
65
+ throw new TypeORMError_1.TypeORMError("options.startupNodes required for " + this.clientType + ".");
66
+ }
45
67
  }
46
- }
47
- else if (cacheOptions && cacheOptions.options) {
48
- this.client = new this.redis(cacheOptions.options);
49
- }
50
- else {
51
- this.client = new this.redis();
52
- }
53
- }
54
- else if (this.clientType === "ioredis/cluster") {
55
- if (cacheOptions && cacheOptions.options && Array.isArray(cacheOptions.options)) {
56
- this.client = new this.redis.Cluster(cacheOptions.options);
57
- }
58
- else if (cacheOptions && cacheOptions.options && cacheOptions.options.startupNodes) {
59
- this.client = new this.redis.Cluster(cacheOptions.options.startupNodes, cacheOptions.options.options);
60
- }
61
- else {
62
- throw new TypeORMError_1.TypeORMError("options.startupNodes required for " + this.clientType + ".");
63
- }
68
+ _a.label = 4;
69
+ case 4: return [2 /*return*/];
64
70
  }
65
- return [2 /*return*/];
66
71
  });
67
72
  });
68
73
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cache/RedisQueryResultCache.ts"],"names":[],"mappings":"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","file":"RedisQueryResultCache.js","sourcesContent":["import {QueryResultCache} from \"./QueryResultCache\";\nimport {QueryResultCacheOptions} from \"./QueryResultCacheOptions\";\nimport {PlatformTools} from \"../platform/PlatformTools\";\nimport {Connection} from \"../connection/Connection\";\nimport {QueryRunner} from \"../query-runner/QueryRunner\";\nimport { TypeORMError } from \"../error/TypeORMError\";\n\n/**\n * Caches query result into Redis database.\n */\nexport class RedisQueryResultCache implements QueryResultCache {\n\n // -------------------------------------------------------------------------\n // Protected Properties\n // -------------------------------------------------------------------------\n\n /**\n * Redis module instance loaded dynamically.\n */\n protected redis: any;\n\n /**\n * Connected redis client.\n */\n protected client: any;\n\n /**\n * Type of the Redis Client (redis or ioredis).\n */\n protected clientType: \"redis\" | \"ioredis\" | \"ioredis/cluster\";\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected connection: Connection, clientType: \"redis\" | \"ioredis\" | \"ioredis/cluster\") {\n this.clientType = clientType;\n this.redis = this.loadRedis();\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates a connection with given cache provider.\n */\n\n\n async connect(): Promise<void> {\n const cacheOptions: any = this.connection.options.cache;\n if (this.clientType === \"redis\") {\n if (cacheOptions && cacheOptions.options) {\n this.client = this.redis.createClient(cacheOptions.options);\n } else {\n this.client = this.redis.createClient();\n }\n } else if (this.clientType === \"ioredis\") {\n if (cacheOptions && cacheOptions.port) {\n if (cacheOptions.options) {\n this.client = new this.redis( cacheOptions.port, cacheOptions.options );\n } else {\n this.client = new this.redis( cacheOptions.port );\n }\n }\n else if (cacheOptions && cacheOptions.options) {\n this.client = new this.redis(cacheOptions.options);\n } else {\n this.client = new this.redis();\n }\n } else if (this.clientType === \"ioredis/cluster\") {\n if (cacheOptions && cacheOptions.options && Array.isArray(cacheOptions.options)) {\n this.client = new this.redis.Cluster(cacheOptions.options);\n } else if (cacheOptions && cacheOptions.options && cacheOptions.options.startupNodes) {\n this.client = new this.redis.Cluster(cacheOptions.options.startupNodes, cacheOptions.options.options);\n } else {\n throw new TypeORMError(`options.startupNodes required for ${this.clientType}.`);\n }\n }\n }\n\n /**\n * Disconnects the connection\n */\n async disconnect(): Promise<void> {\n return new Promise<void>((ok, fail) => {\n this.client.quit((err: any, result: any) => {\n if (err) return fail(err);\n ok();\n this.client = undefined;\n });\n });\n }\n\n /**\n * Creates table for storing cache if it does not exist yet.\n */\n async synchronize(queryRunner: QueryRunner): Promise<void> {\n }\n\n /**\n * Caches given query result.\n * Returns cache result if found.\n * Returns undefined if result is not cached.\n */\n getFromCache(options: QueryResultCacheOptions, queryRunner?: QueryRunner): Promise<QueryResultCacheOptions|undefined> {\n return new Promise<QueryResultCacheOptions|undefined>((ok, fail) => {\n\n if (options.identifier) {\n this.client.get(options.identifier, (err: any, result: any) => {\n if (err) return fail(err);\n ok(JSON.parse(result));\n });\n\n } else if (options.query) {\n this.client.get(options.query, (err: any, result: any) => {\n if (err) return fail(err);\n ok(JSON.parse(result));\n });\n\n } else {\n ok(undefined);\n }\n });\n }\n\n /**\n * Checks if cache is expired or not.\n */\n isExpired(savedCache: QueryResultCacheOptions): boolean {\n return (savedCache.time! + savedCache.duration) < new Date().getTime();\n }\n\n /**\n * Stores given query result in the cache.\n */\n async storeInCache(options: QueryResultCacheOptions, savedCache: QueryResultCacheOptions, queryRunner?: QueryRunner): Promise<void> {\n return new Promise<void>((ok, fail) => {\n if (options.identifier) {\n this.client.set(options.identifier, JSON.stringify(options), \"PX\", options.duration, (err: any, result: any) => {\n if (err) return fail(err);\n ok();\n });\n\n } else if (options.query) {\n this.client.set(options.query, JSON.stringify(options), \"PX\", options.duration, (err: any, result: any) => {\n if (err) return fail(err);\n ok();\n });\n }\n });\n }\n\n /**\n * Clears everything stored in the cache.\n */\n async clear(queryRunner?: QueryRunner): Promise<void> {\n return new Promise<void>((ok, fail) => {\n this.client.flushdb((err: any, result: any) => {\n if (err) return fail(err);\n ok();\n });\n });\n }\n\n /**\n * Removes all cached results by given identifiers from cache.\n */\n async remove(identifiers: string[], queryRunner?: QueryRunner): Promise<void> {\n await Promise.all(identifiers.map(identifier => {\n return this.deleteKey(identifier);\n }));\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Removes a single key from redis database.\n */\n protected deleteKey(key: string): Promise<void> {\n return new Promise<void>((ok, fail) => {\n this.client.del(key, (err: any, result: any) => {\n if (err) return fail(err);\n ok();\n });\n });\n }\n\n /**\n * Loads redis dependency.\n */\n protected loadRedis(): any {\n try {\n if (this.clientType === \"ioredis/cluster\") {\n return PlatformTools.load(\"ioredis\");\n } else {\n return PlatformTools.load(this.clientType);\n }\n } catch (e) {\n throw new TypeORMError(`Cannot use cache because ${this.clientType} is not installed. Please run \"npm i ${this.clientType} --save\".`);\n }\n }\n\n\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/cache/RedisQueryResultCache.ts"],"names":[],"mappings":"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","file":"RedisQueryResultCache.js","sourcesContent":["import {QueryResultCache} from \"./QueryResultCache\";\nimport {QueryResultCacheOptions} from \"./QueryResultCacheOptions\";\nimport {PlatformTools} from \"../platform/PlatformTools\";\nimport {Connection} from \"../connection/Connection\";\nimport {QueryRunner} from \"../query-runner/QueryRunner\";\nimport { TypeORMError } from \"../error/TypeORMError\";\n\n/**\n * Caches query result into Redis database.\n */\nexport class RedisQueryResultCache implements QueryResultCache {\n\n // -------------------------------------------------------------------------\n // Protected Properties\n // -------------------------------------------------------------------------\n\n /**\n * Redis module instance loaded dynamically.\n */\n protected redis: any;\n\n /**\n * Connected redis client.\n */\n protected client: any;\n\n /**\n * Type of the Redis Client (redis or ioredis).\n */\n protected clientType: \"redis\" | \"ioredis\" | \"ioredis/cluster\";\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected connection: Connection, clientType: \"redis\" | \"ioredis\" | \"ioredis/cluster\") {\n this.clientType = clientType;\n this.redis = this.loadRedis();\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates a connection with given cache provider.\n */\n\n\n async connect(): Promise<void> {\n const cacheOptions: any = this.connection.options.cache;\n if (this.clientType === \"redis\") {\n this.client = this.redis.createClient({\n ...cacheOptions?.options,\n legacyMode: true\n });\n if (\"connect\" in this.client) {\n await this.client.connect();\n }\n } else if (this.clientType === \"ioredis\") {\n if (cacheOptions && cacheOptions.port) {\n if (cacheOptions.options) {\n this.client = new this.redis( cacheOptions.port, cacheOptions.options );\n } else {\n this.client = new this.redis( cacheOptions.port );\n }\n }\n else if (cacheOptions && cacheOptions.options) {\n this.client = new this.redis(cacheOptions.options);\n } else {\n this.client = new this.redis();\n }\n } else if (this.clientType === \"ioredis/cluster\") {\n if (cacheOptions && cacheOptions.options && Array.isArray(cacheOptions.options)) {\n this.client = new this.redis.Cluster(cacheOptions.options);\n } else if (cacheOptions && cacheOptions.options && cacheOptions.options.startupNodes) {\n this.client = new this.redis.Cluster(cacheOptions.options.startupNodes, cacheOptions.options.options);\n } else {\n throw new TypeORMError(`options.startupNodes required for ${this.clientType}.`);\n }\n }\n }\n\n /**\n * Disconnects the connection\n */\n async disconnect(): Promise<void> {\n return new Promise<void>((ok, fail) => {\n this.client.quit((err: any, result: any) => {\n if (err) return fail(err);\n ok();\n this.client = undefined;\n });\n });\n }\n\n /**\n * Creates table for storing cache if it does not exist yet.\n */\n async synchronize(queryRunner: QueryRunner): Promise<void> {\n }\n\n /**\n * Caches given query result.\n * Returns cache result if found.\n * Returns undefined if result is not cached.\n */\n getFromCache(options: QueryResultCacheOptions, queryRunner?: QueryRunner): Promise<QueryResultCacheOptions|undefined> {\n return new Promise<QueryResultCacheOptions|undefined>((ok, fail) => {\n\n if (options.identifier) {\n this.client.get(options.identifier, (err: any, result: any) => {\n if (err) return fail(err);\n ok(JSON.parse(result));\n });\n\n } else if (options.query) {\n this.client.get(options.query, (err: any, result: any) => {\n if (err) return fail(err);\n ok(JSON.parse(result));\n });\n\n } else {\n ok(undefined);\n }\n });\n }\n\n /**\n * Checks if cache is expired or not.\n */\n isExpired(savedCache: QueryResultCacheOptions): boolean {\n return (savedCache.time! + savedCache.duration) < new Date().getTime();\n }\n\n /**\n * Stores given query result in the cache.\n */\n async storeInCache(options: QueryResultCacheOptions, savedCache: QueryResultCacheOptions, queryRunner?: QueryRunner): Promise<void> {\n return new Promise<void>((ok, fail) => {\n if (options.identifier) {\n this.client.set(options.identifier, JSON.stringify(options), \"PX\", options.duration, (err: any, result: any) => {\n if (err) return fail(err);\n ok();\n });\n\n } else if (options.query) {\n this.client.set(options.query, JSON.stringify(options), \"PX\", options.duration, (err: any, result: any) => {\n if (err) return fail(err);\n ok();\n });\n }\n });\n }\n\n /**\n * Clears everything stored in the cache.\n */\n async clear(queryRunner?: QueryRunner): Promise<void> {\n return new Promise<void>((ok, fail) => {\n this.client.flushdb((err: any, result: any) => {\n if (err) return fail(err);\n ok();\n });\n });\n }\n\n /**\n * Removes all cached results by given identifiers from cache.\n */\n async remove(identifiers: string[], queryRunner?: QueryRunner): Promise<void> {\n await Promise.all(identifiers.map(identifier => {\n return this.deleteKey(identifier);\n }));\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Removes a single key from redis database.\n */\n protected deleteKey(key: string): Promise<void> {\n return new Promise<void>((ok, fail) => {\n this.client.del(key, (err: any, result: any) => {\n if (err) return fail(err);\n ok();\n });\n });\n }\n\n /**\n * Loads redis dependency.\n */\n protected loadRedis(): any {\n try {\n if (this.clientType === \"ioredis/cluster\") {\n return PlatformTools.load(\"ioredis\");\n } else {\n return PlatformTools.load(this.clientType);\n }\n } catch (e) {\n throw new TypeORMError(`Cannot use cache because ${this.clientType} is not installed. Please run \"npm i ${this.clientType} --save\".`);\n }\n }\n\n\n}\n"],"sourceRoot":".."}
@@ -15,4 +15,8 @@ export declare class CommandUtils {
15
15
  */
16
16
  static readFile(filePath: string): Promise<string>;
17
17
  static fileExists(filePath: string): Promise<boolean>;
18
+ /**
19
+ * Gets migration timestamp and validates argument (if sent)
20
+ */
21
+ static getTimestamp(timestampOptionArgument: any): number;
18
22
  }
@@ -5,6 +5,7 @@ var tslib_1 = require("tslib");
5
5
  var fs = (0, tslib_1.__importStar)(require("fs"));
6
6
  var path = (0, tslib_1.__importStar)(require("path"));
7
7
  var mkdirp_1 = (0, tslib_1.__importDefault)(require("mkdirp"));
8
+ var error_1 = require("../error");
8
9
  /**
9
10
  * Command line utils functions.
10
11
  */
@@ -56,6 +57,15 @@ var CommandUtils = /** @class */ (function () {
56
57
  });
57
58
  });
58
59
  };
60
+ /**
61
+ * Gets migration timestamp and validates argument (if sent)
62
+ */
63
+ CommandUtils.getTimestamp = function (timestampOptionArgument) {
64
+ if (timestampOptionArgument && (isNaN(timestampOptionArgument) || timestampOptionArgument < 0)) {
65
+ throw new error_1.TypeORMError("timestamp option should be a non-negative number. received: " + timestampOptionArgument);
66
+ }
67
+ return timestampOptionArgument ? new Date(Number(timestampOptionArgument)).getTime() : Date.now();
68
+ };
59
69
  return CommandUtils;
60
70
  }());
61
71
  exports.CommandUtils = CommandUtils;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/commands/CommandUtils.ts"],"names":[],"mappings":";;;;AAAA,kDAAyB;AACzB,sDAA6B;AAC7B,+DAA4B;AAE5B;;GAEG;AACH;IAAA;IAmCA,CAAC;IAjCG;;OAEG;IACI,8BAAiB,GAAxB,UAAyB,SAAiB;QACtC,OAAO,IAAA,gBAAM,EAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACU,uBAAU,GAAvB,UAAwB,QAAgB,EAAE,OAAe,EAAE,QAAwB;QAAxB,yBAAA,EAAA,eAAwB;;;;4BAC/E,qBAAM,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAA;;wBAA5D,SAA4D,CAAC;wBAC7D,sBAAO,IAAI,OAAO,CAAO,UAAC,EAAE,EAAE,IAAI;gCAC9B,IAAI,QAAQ,KAAK,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;oCAC7C,OAAO,EAAE,EAAE,CAAC;gCAEhB,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAtB,CAAsB,CAAC,CAAC;4BACnE,CAAC,CAAC,EAAC;;;;KACN;IAED;;OAEG;IACU,qBAAQ,GAArB,UAAsB,QAAgB;;;gBAClC,sBAAO,IAAI,OAAO,CAAS,UAAC,EAAE,EAAE,IAAI;wBAChC,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAC,GAAG,EAAE,IAAI,IAAK,OAAA,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAArC,CAAqC,CAAC,CAAC;oBAChF,CAAC,CAAC,EAAC;;;KACN;IAGY,uBAAU,GAAvB,UAAwB,QAAgB;;;gBACpC,sBAAO,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAC;;;KAClC;IACL,mBAAC;AAAD,CAnCA,AAmCC,IAAA;AAnCY,oCAAY","file":"CommandUtils.js","sourcesContent":["import * as fs from \"fs\";\nimport * as path from \"path\";\nimport mkdirp from \"mkdirp\";\n\n/**\n * Command line utils functions.\n */\nexport class CommandUtils {\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(filePath: string, content: string, override: boolean = true): Promise<void> {\n await CommandUtils.createDirectories(path.dirname(filePath));\n return new Promise<void>((ok, fail) => {\n if (override === false && fs.existsSync(filePath))\n 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) => err ? fail(err) : ok(data.toString()));\n });\n }\n\n\n static async fileExists(filePath: string) {\n return fs.existsSync(filePath);\n }\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/commands/CommandUtils.ts"],"names":[],"mappings":";;;;AAAA,kDAAyB;AACzB,sDAA6B;AAC7B,+DAA4B;AAC5B,kCAAsC;AAEtC;;GAEG;AACH;IAAA;IA6CA,CAAC;IA3CG;;OAEG;IACI,8BAAiB,GAAxB,UAAyB,SAAiB;QACtC,OAAO,IAAA,gBAAM,EAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACU,uBAAU,GAAvB,UAAwB,QAAgB,EAAE,OAAe,EAAE,QAAwB;QAAxB,yBAAA,EAAA,eAAwB;;;;4BAC/E,qBAAM,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAA;;wBAA5D,SAA4D,CAAC;wBAC7D,sBAAO,IAAI,OAAO,CAAO,UAAC,EAAE,EAAE,IAAI;gCAC9B,IAAI,QAAQ,KAAK,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;oCAC7C,OAAO,EAAE,EAAE,CAAC;gCAEhB,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAtB,CAAsB,CAAC,CAAC;4BACnE,CAAC,CAAC,EAAC;;;;KACN;IAED;;OAEG;IACU,qBAAQ,GAArB,UAAsB,QAAgB;;;gBAClC,sBAAO,IAAI,OAAO,CAAS,UAAC,EAAE,EAAE,IAAI;wBAChC,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAC,GAAG,EAAE,IAAI,IAAK,OAAA,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAArC,CAAqC,CAAC,CAAC;oBAChF,CAAC,CAAC,EAAC;;;KACN;IAGY,uBAAU,GAAvB,UAAwB,QAAgB;;;gBACpC,sBAAO,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAC;;;KAClC;IAED;;OAEG;IACI,yBAAY,GAAnB,UAAoB,uBAA4B;QAC5C,IAAI,uBAAuB,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,IAAI,uBAAuB,GAAG,CAAC,CAAC,EAAE;YAC5F,MAAM,IAAI,oBAAY,CAAC,iEAA+D,uBAAyB,CAAC,CAAC;SACpH;QACD,OAAO,uBAAuB,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IACtG,CAAC;IACL,mBAAC;AAAD,CA7CA,AA6CC,IAAA;AA7CY,oCAAY","file":"CommandUtils.js","sourcesContent":["import * as fs from \"fs\";\nimport * as path from \"path\";\nimport mkdirp from \"mkdirp\";\nimport {TypeORMError} from \"../error\";\n\n/**\n * Command line utils functions.\n */\nexport class CommandUtils {\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(filePath: string, content: string, override: boolean = true): Promise<void> {\n await CommandUtils.createDirectories(path.dirname(filePath));\n return new Promise<void>((ok, fail) => {\n if (override === false && fs.existsSync(filePath))\n 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) => 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 (timestampOptionArgument && (isNaN(timestampOptionArgument) || timestampOptionArgument < 0)) {\n throw new TypeORMError(`timestamp option should be a non-negative number. received: ${timestampOptionArgument}`);\n }\n return timestampOptionArgument ? new Date(Number(timestampOptionArgument)).getTime() : Date.now();\n }\n}\n"],"sourceRoot":".."}
@@ -17,9 +17,11 @@ export declare class InitCommand implements yargs.CommandModule {
17
17
  docker: unknown;
18
18
  } & {
19
19
  pm: string;
20
+ } & {
21
+ ms: string;
20
22
  }>;
21
23
  handler(args: yargs.Arguments): Promise<void>;
22
- protected static executeCommand(command: string): Promise<string>;
24
+ protected static executeCommand(command: string, cwd: string): Promise<string>;
23
25
  /**
24
26
  * Gets contents of the ormconfig file.
25
27
  */
@@ -27,7 +29,7 @@ export declare class InitCommand implements yargs.CommandModule {
27
29
  /**
28
30
  * Gets contents of the ormconfig file.
29
31
  */
30
- protected static getTsConfigTemplate(): string;
32
+ protected static getTsConfigTemplate(esmModule: boolean): string;
31
33
  /**
32
34
  * Gets contents of the .gitignore file.
33
35
  */
@@ -39,19 +41,19 @@ export declare class InitCommand implements yargs.CommandModule {
39
41
  /**
40
42
  * Gets contents of the route file (used when express is enabled).
41
43
  */
42
- protected static getRoutesTemplate(): string;
44
+ protected static getRoutesTemplate(isEsm: boolean): string;
43
45
  /**
44
46
  * Gets contents of the user controller file (used when express is enabled).
45
47
  */
46
- protected static getControllerTemplate(): string;
48
+ protected static getControllerTemplate(isEsm: boolean): string;
47
49
  /**
48
50
  * Gets contents of the main (index) application file.
49
51
  */
50
- protected static getAppIndexTemplate(express: boolean): string;
52
+ protected static getAppIndexTemplate(express: boolean, isEsm: boolean): string;
51
53
  /**
52
54
  * Gets contents of the new package.json file.
53
55
  */
54
- protected static getPackageJsonTemplate(projectName?: string): string;
56
+ protected static getPackageJsonTemplate(projectName?: string, projectIsEsm?: boolean): string;
55
57
  /**
56
58
  * Gets contents of the new docker-compose.yml file.
57
59
  */
@@ -65,5 +67,5 @@ export declare class InitCommand implements yargs.CommandModule {
65
67
  /**
66
68
  * Appends to a given package.json template everything needed.
67
69
  */
68
- protected static appendPackageJson(packageJsonContents: string, database: string, express: boolean): string;
70
+ protected static appendPackageJson(packageJsonContents: string, database: string, express: boolean, projectIsEsm: boolean): string;
69
71
  }