typeorm 0.2.42-dev.ce69228 → 0.2.42-dev.ece0da0

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 (140) hide show
  1. package/README.md +38 -0
  2. package/browser/common/RelationType.d.ts +14 -0
  3. package/browser/common/RelationType.js +3 -0
  4. package/browser/common/RelationType.js.map +1 -0
  5. package/browser/connection/Connection.d.ts +1 -1
  6. package/browser/connection/Connection.js +45 -30
  7. package/browser/connection/Connection.js.map +1 -1
  8. package/browser/connection/ConnectionMetadataBuilder.d.ts +3 -3
  9. package/browser/connection/ConnectionMetadataBuilder.js +54 -22
  10. package/browser/connection/ConnectionMetadataBuilder.js.map +1 -1
  11. package/browser/connection/ConnectionOptionsReader.js +33 -28
  12. package/browser/connection/ConnectionOptionsReader.js.map +1 -1
  13. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js +1 -1
  14. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  15. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js +7 -5
  16. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  17. package/browser/driver/cockroachdb/CockroachQueryRunner.js +1 -1
  18. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  19. package/browser/driver/mysql/MysqlQueryRunner.js +1 -1
  20. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  21. package/browser/driver/oracle/OracleQueryRunner.js +1 -1
  22. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  23. package/browser/driver/postgres/PostgresQueryRunner.js +1 -1
  24. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  25. package/browser/driver/sap/SapQueryRunner.js +1 -1
  26. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  27. package/browser/driver/sqlite/SqliteDriver.js +11 -10
  28. package/browser/driver/sqlite/SqliteDriver.js.map +1 -1
  29. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +1 -1
  30. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  31. package/browser/find-options/FindOneOptions.d.ts +6 -0
  32. package/browser/find-options/FindOneOptions.js.map +1 -1
  33. package/browser/find-options/FindOptionsUtils.js +4 -0
  34. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  35. package/browser/find-options/operator/Like.d.ts +1 -1
  36. package/browser/find-options/operator/Like.js +1 -1
  37. package/browser/find-options/operator/Like.js.map +1 -1
  38. package/browser/globals.js +34 -7
  39. package/browser/globals.js.map +1 -1
  40. package/browser/index.d.ts +2 -0
  41. package/browser/index.js +2 -0
  42. package/browser/index.js.map +1 -1
  43. package/browser/migration/MigrationExecutor.js +1 -1
  44. package/browser/migration/MigrationExecutor.js.map +1 -1
  45. package/browser/query-builder/DeleteQueryBuilder.d.ts +3 -1
  46. package/browser/query-builder/DeleteQueryBuilder.js +3 -1
  47. package/browser/query-builder/DeleteQueryBuilder.js.map +1 -1
  48. package/browser/query-builder/NotBrackets.d.ts +7 -0
  49. package/browser/query-builder/NotBrackets.js +16 -0
  50. package/browser/query-builder/NotBrackets.js.map +1 -0
  51. package/browser/query-builder/QueryBuilder.d.ts +2 -1
  52. package/browser/query-builder/QueryBuilder.js +2 -1
  53. package/browser/query-builder/QueryBuilder.js.map +1 -1
  54. package/browser/query-builder/RelationLoader.js +11 -6
  55. package/browser/query-builder/RelationLoader.js.map +1 -1
  56. package/browser/query-builder/UpdateQueryBuilder.d.ts +3 -1
  57. package/browser/query-builder/UpdateQueryBuilder.js +3 -1
  58. package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
  59. package/browser/query-builder/WhereExpressionBuilder.d.ts +3 -1
  60. package/browser/query-builder/WhereExpressionBuilder.js.map +1 -1
  61. package/browser/repository/TreeRepository.js +1 -1
  62. package/browser/repository/TreeRepository.js.map +1 -1
  63. package/browser/util/DirectoryExportedClassesLoader.d.ts +1 -1
  64. package/browser/util/DirectoryExportedClassesLoader.js +55 -31
  65. package/browser/util/DirectoryExportedClassesLoader.js.map +1 -1
  66. package/browser/util/ImportUtils.d.ts +1 -0
  67. package/browser/util/ImportUtils.js +90 -0
  68. package/browser/util/ImportUtils.js.map +1 -0
  69. package/commands/InitCommand.d.ts +9 -7
  70. package/commands/InitCommand.js +72 -43
  71. package/commands/InitCommand.js.map +1 -1
  72. package/common/RelationType.d.ts +14 -0
  73. package/common/RelationType.js +4 -0
  74. package/common/RelationType.js.map +1 -0
  75. package/connection/Connection.d.ts +1 -1
  76. package/connection/Connection.js +45 -30
  77. package/connection/Connection.js.map +1 -1
  78. package/connection/ConnectionMetadataBuilder.d.ts +3 -3
  79. package/connection/ConnectionMetadataBuilder.js +53 -21
  80. package/connection/ConnectionMetadataBuilder.js.map +1 -1
  81. package/connection/ConnectionOptionsReader.js +32 -27
  82. package/connection/ConnectionOptionsReader.js.map +1 -1
  83. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js +1 -1
  84. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  85. package/driver/better-sqlite3/BetterSqlite3Driver.js +7 -5
  86. package/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  87. package/driver/cockroachdb/CockroachQueryRunner.js +1 -1
  88. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  89. package/driver/mysql/MysqlQueryRunner.js +1 -1
  90. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  91. package/driver/oracle/OracleQueryRunner.js +1 -1
  92. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  93. package/driver/postgres/PostgresQueryRunner.js +1 -1
  94. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  95. package/driver/sap/SapQueryRunner.js +1 -1
  96. package/driver/sap/SapQueryRunner.js.map +1 -1
  97. package/driver/sqlite/SqliteDriver.js +11 -10
  98. package/driver/sqlite/SqliteDriver.js.map +1 -1
  99. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +1 -1
  100. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  101. package/find-options/FindOneOptions.d.ts +6 -0
  102. package/find-options/FindOneOptions.js.map +1 -1
  103. package/find-options/FindOptionsUtils.js +4 -0
  104. package/find-options/FindOptionsUtils.js.map +1 -1
  105. package/find-options/operator/Like.d.ts +1 -1
  106. package/find-options/operator/Like.js +1 -1
  107. package/find-options/operator/Like.js.map +1 -1
  108. package/globals.js +33 -6
  109. package/globals.js.map +1 -1
  110. package/index.d.ts +2 -0
  111. package/index.js +4 -1
  112. package/index.js.map +1 -1
  113. package/index.mjs +352 -0
  114. package/migration/MigrationExecutor.js +1 -1
  115. package/migration/MigrationExecutor.js.map +1 -1
  116. package/package.json +1 -1
  117. package/query-builder/DeleteQueryBuilder.d.ts +3 -1
  118. package/query-builder/DeleteQueryBuilder.js +3 -1
  119. package/query-builder/DeleteQueryBuilder.js.map +1 -1
  120. package/query-builder/NotBrackets.d.ts +7 -0
  121. package/query-builder/NotBrackets.js +19 -0
  122. package/query-builder/NotBrackets.js.map +1 -0
  123. package/query-builder/QueryBuilder.d.ts +2 -1
  124. package/query-builder/QueryBuilder.js +2 -1
  125. package/query-builder/QueryBuilder.js.map +1 -1
  126. package/query-builder/RelationLoader.js +11 -6
  127. package/query-builder/RelationLoader.js.map +1 -1
  128. package/query-builder/UpdateQueryBuilder.d.ts +3 -1
  129. package/query-builder/UpdateQueryBuilder.js +3 -1
  130. package/query-builder/UpdateQueryBuilder.js.map +1 -1
  131. package/query-builder/WhereExpressionBuilder.d.ts +3 -1
  132. package/query-builder/WhereExpressionBuilder.js.map +1 -1
  133. package/repository/TreeRepository.js +1 -1
  134. package/repository/TreeRepository.js.map +1 -1
  135. package/util/DirectoryExportedClassesLoader.d.ts +1 -1
  136. package/util/DirectoryExportedClassesLoader.js +54 -31
  137. package/util/DirectoryExportedClassesLoader.js.map +1 -1
  138. package/util/ImportUtils.d.ts +1 -0
  139. package/util/ImportUtils.js +94 -0
  140. package/util/ImportUtils.js.map +1 -0
@@ -5,42 +5,65 @@ var tslib_1 = require("tslib");
5
5
  var glob_1 = (0, tslib_1.__importDefault)(require("glob"));
6
6
  var PlatformTools_1 = require("../platform/PlatformTools");
7
7
  var EntitySchema_1 = require("../entity-schema/EntitySchema");
8
+ var ImportUtils_1 = require("./ImportUtils");
8
9
  /**
9
10
  * Loads all exported classes from the given directory.
10
11
  */
11
12
  function importClassesFromDirectories(logger, directories, formats) {
12
- if (formats === void 0) { formats = [".js", ".cjs", ".ts"]; }
13
- var logLevel = "info";
14
- var classesNotFoundMessage = "No classes were found using the provided glob pattern: ";
15
- var classesFoundMessage = "All classes found using provided glob pattern";
16
- function loadFileClasses(exported, allLoaded) {
17
- if (typeof exported === "function" || exported instanceof EntitySchema_1.EntitySchema) {
18
- allLoaded.push(exported);
13
+ if (formats === void 0) { formats = [".js", ".mjs", ".cjs", ".ts", ".mts", ".cts"]; }
14
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
15
+ function loadFileClasses(exported, allLoaded) {
16
+ if (typeof exported === "function" || exported instanceof EntitySchema_1.EntitySchema) {
17
+ allLoaded.push(exported);
18
+ }
19
+ else if (Array.isArray(exported)) {
20
+ exported.forEach(function (i) { return loadFileClasses(i, allLoaded); });
21
+ }
22
+ else if (typeof exported === "object" && exported !== null) {
23
+ Object.keys(exported).forEach(function (key) { return loadFileClasses(exported[key], allLoaded); });
24
+ }
25
+ return allLoaded;
19
26
  }
20
- else if (Array.isArray(exported)) {
21
- exported.forEach(function (i) { return loadFileClasses(i, allLoaded); });
22
- }
23
- else if (typeof exported === "object" && exported !== null) {
24
- Object.keys(exported).forEach(function (key) { return loadFileClasses(exported[key], allLoaded); });
25
- }
26
- return allLoaded;
27
- }
28
- var allFiles = directories.reduce(function (allDirs, dir) {
29
- return allDirs.concat(glob_1.default.sync(PlatformTools_1.PlatformTools.pathNormalize(dir)));
30
- }, []);
31
- if (directories.length > 0 && allFiles.length === 0) {
32
- logger.log(logLevel, classesNotFoundMessage + " \"" + directories + "\"");
33
- }
34
- else if (allFiles.length > 0) {
35
- logger.log(logLevel, classesFoundMessage + " \"" + directories + "\" : \"" + allFiles + "\"");
36
- }
37
- var dirs = allFiles
38
- .filter(function (file) {
39
- var dtsExtension = file.substring(file.length - 5, file.length);
40
- return formats.indexOf(PlatformTools_1.PlatformTools.pathExtname(file)) !== -1 && dtsExtension !== ".d.ts";
41
- })
42
- .map(function (file) { return require(PlatformTools_1.PlatformTools.pathResolve(file)); });
43
- return loadFileClasses(dirs, []);
27
+ var logLevel, classesNotFoundMessage, classesFoundMessage, allFiles, dirPromises, dirs;
28
+ var _this = this;
29
+ return (0, tslib_1.__generator)(this, function (_a) {
30
+ switch (_a.label) {
31
+ case 0:
32
+ logLevel = "info";
33
+ classesNotFoundMessage = "No classes were found using the provided glob pattern: ";
34
+ classesFoundMessage = "All classes found using provided glob pattern";
35
+ allFiles = directories.reduce(function (allDirs, dir) {
36
+ return allDirs.concat(glob_1.default.sync(PlatformTools_1.PlatformTools.pathNormalize(dir)));
37
+ }, []);
38
+ if (directories.length > 0 && allFiles.length === 0) {
39
+ logger.log(logLevel, classesNotFoundMessage + " \"" + directories + "\"");
40
+ }
41
+ else if (allFiles.length > 0) {
42
+ logger.log(logLevel, classesFoundMessage + " \"" + directories + "\" : \"" + allFiles + "\"");
43
+ }
44
+ dirPromises = allFiles
45
+ .filter(function (file) {
46
+ var dtsExtension = file.substring(file.length - 5, file.length);
47
+ return formats.indexOf(PlatformTools_1.PlatformTools.pathExtname(file)) !== -1 && dtsExtension !== ".d.ts";
48
+ })
49
+ .map(function (file) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () {
50
+ var _a, importOrRequireResult;
51
+ return (0, tslib_1.__generator)(this, function (_b) {
52
+ switch (_b.label) {
53
+ case 0: return [4 /*yield*/, (0, ImportUtils_1.importOrRequireFile)(PlatformTools_1.PlatformTools.pathResolve(file))];
54
+ case 1:
55
+ _a = tslib_1.__read.apply(void 0, [_b.sent(), 1]), importOrRequireResult = _a[0];
56
+ return [2 /*return*/, importOrRequireResult];
57
+ }
58
+ });
59
+ }); });
60
+ return [4 /*yield*/, Promise.all(dirPromises)];
61
+ case 1:
62
+ dirs = _a.sent();
63
+ return [2 /*return*/, loadFileClasses(dirs, [])];
64
+ }
65
+ });
66
+ });
44
67
  }
45
68
  exports.importClassesFromDirectories = importClassesFromDirectories;
46
69
  /**
@@ -1 +1 @@
1
- {"version":3,"sources":["../../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":["../../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\";\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,94 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.importOrRequireFile = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var fs_1 = (0, tslib_1.__importDefault)(require("fs"));
6
+ var path_1 = (0, tslib_1.__importDefault)(require("path"));
7
+ function importOrRequireFile(filePath) {
8
+ var _a;
9
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
10
+ var tryToImport, tryToRequire, extension, packageJson, isModule;
11
+ var _this = this;
12
+ return (0, tslib_1.__generator)(this, function (_b) {
13
+ switch (_b.label) {
14
+ case 0:
15
+ tryToImport = function () { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () {
16
+ return (0, tslib_1.__generator)(this, function (_a) {
17
+ switch (_a.label) {
18
+ case 0: return [4 /*yield*/, Function("return filePath => import(filePath)")()(filePath)];
19
+ case 1:
20
+ // `Function` is required to make sure the `import` statement wil stay `import` after
21
+ // transpilation and won't be converted to `require`
22
+ return [2 /*return*/, [_a.sent(), "esm"]];
23
+ }
24
+ });
25
+ }); };
26
+ tryToRequire = function () { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () {
27
+ return (0, tslib_1.__generator)(this, function (_a) {
28
+ return [2 /*return*/, [require(filePath), "commonjs"]];
29
+ });
30
+ }); };
31
+ extension = filePath.substring(filePath.lastIndexOf(".") + ".".length);
32
+ if (!(extension === "mjs" || extension === "mts")) return [3 /*break*/, 1];
33
+ return [2 /*return*/, tryToImport()];
34
+ case 1:
35
+ if (!(extension === "cjs" || extension === "cts")) return [3 /*break*/, 2];
36
+ return [2 /*return*/, tryToRequire()];
37
+ case 2:
38
+ if (!(extension === "js" || extension === "ts")) return [3 /*break*/, 4];
39
+ return [4 /*yield*/, getNearestPackageJson(filePath)];
40
+ case 3:
41
+ packageJson = _b.sent();
42
+ if (packageJson != null) {
43
+ isModule = ((_a = packageJson) === null || _a === void 0 ? void 0 : _a.type) === "module";
44
+ if (isModule)
45
+ return [2 /*return*/, tryToImport()];
46
+ else
47
+ return [2 /*return*/, tryToRequire()];
48
+ }
49
+ else
50
+ return [2 /*return*/, tryToRequire()];
51
+ _b.label = 4;
52
+ case 4: return [2 /*return*/, tryToRequire()];
53
+ }
54
+ });
55
+ });
56
+ }
57
+ exports.importOrRequireFile = importOrRequireFile;
58
+ function getNearestPackageJson(filePath) {
59
+ return new Promise(function (accept) {
60
+ var currentPath = filePath;
61
+ function searchPackageJson() {
62
+ var nextPath = path_1.default.dirname(currentPath);
63
+ if (currentPath === nextPath) // the top of the file tree is reached
64
+ accept(null);
65
+ else {
66
+ currentPath = nextPath;
67
+ var potentialPackageJson_1 = path_1.default.join(currentPath, "package.json");
68
+ fs_1.default.stat(potentialPackageJson_1, function (err, stats) {
69
+ if (err != null)
70
+ searchPackageJson();
71
+ else if (stats.isFile()) {
72
+ fs_1.default.readFile(potentialPackageJson_1, "utf8", function (err, data) {
73
+ if (err != null)
74
+ accept(null);
75
+ else {
76
+ try {
77
+ accept(JSON.parse(data));
78
+ }
79
+ catch (err) {
80
+ accept(null);
81
+ }
82
+ }
83
+ });
84
+ }
85
+ else
86
+ searchPackageJson();
87
+ });
88
+ }
89
+ }
90
+ searchPackageJson();
91
+ });
92
+ }
93
+
94
+ //# sourceMappingURL=ImportUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/util/ImportUtils.ts"],"names":[],"mappings":";;;;AAAA,uDAAoB;AACpB,2DAAwB;AAExB,SAAsB,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;AA/BD,kDA+BC;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,cAAI,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,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;gBAEpE,YAAE,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,YAAE,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":".."}