diff --git a/lib/helpers/package-path-helper.ts b/lib/helpers/package-path-helper.ts new file mode 100644 index 0000000000..8f13c7ba42 --- /dev/null +++ b/lib/helpers/package-path-helper.ts @@ -0,0 +1,6 @@ +import { + resolvePackagePath, + resolvePackageJSONPath, +} from "@rigor789/resolve-package-path"; + +export { resolvePackagePath, resolvePackageJSONPath }; diff --git a/lib/services/karma-execution.ts b/lib/services/karma-execution.ts index 736b7c72ef..46eefe170c 100644 --- a/lib/services/karma-execution.ts +++ b/lib/services/karma-execution.ts @@ -1,12 +1,12 @@ import * as path from "path"; +import { resolvePackagePath } from "../helpers/package-path-helper"; process.on("message", (data: any) => { if (data.karmaConfig) { - const pathToKarma = path.dirname( - require.resolve("karma/package.json", { - paths: [data.karmaConfig.projectDir], - }) - ); + const pathToKarma = resolvePackagePath("karma", { + paths: [data.karmaConfig.projectDir], + }); + const KarmaServer = require(path.join(pathToKarma, "lib/server")); const karma = new KarmaServer(data.karmaConfig, (exitCode: number) => { // Exit with the correct exit code and signal the manager process. diff --git a/lib/services/plugins-service.ts b/lib/services/plugins-service.ts index 89c5781263..18eb84979c 100644 --- a/lib/services/plugins-service.ts +++ b/lib/services/plugins-service.ts @@ -32,6 +32,10 @@ import { IFilesHashService } from "../definitions/files-hash-service"; import * as _ from "lodash"; import { IInjector } from "../common/definitions/yok"; import { injector } from "../common/yok"; +import { + resolvePackagePath, + resolvePackageJSONPath, +} from "../helpers/package-path-helper"; export class PluginsService implements IPluginsService { private static INSTALL_COMMAND_NAME = "install"; @@ -285,23 +289,20 @@ export class PluginsService implements IPluginsService { const notInstalledDependencies = allDependencies .map((dep) => { - try { - this.$logger.trace(`Checking if ${dep} is installed...`); - require.resolve(`${dep}/package.json`, { - paths: [projectData.projectDir], - }); + this.$logger.trace(`Checking if ${dep} is installed...`); + const pathToPackage = resolvePackagePath(dep, { + paths: [projectData.projectDir], + }); + if (pathToPackage) { // return false if the dependency is installed - we'll filter out boolean values // and end up with an array of dep names that are not installed if we end up // inside the catch block. return false; - } catch (err) { - this.$logger.trace( - `Error while checking if ${dep} is installed. Error is: `, - err - ); - return dep; } + + this.$logger.trace(`${dep} is not installed, or couldn't be found`); + return dep; }) .filter(Boolean); @@ -684,7 +685,7 @@ This framework comes from ${dependencyName} plugin, which is installed multiple moduleName: string, projectDir: string ): string { - const pathToJsonFile = require.resolve(`${moduleName}/package.json`, { + const pathToJsonFile = resolvePackageJSONPath(moduleName, { paths: [projectDir], }); return pathToJsonFile; diff --git a/lib/services/project-data-service.ts b/lib/services/project-data-service.ts index a3d704ebbf..75862775e4 100644 --- a/lib/services/project-data-service.ts +++ b/lib/services/project-data-service.ts @@ -34,6 +34,7 @@ import * as _ from "lodash"; import { IInjector } from "../common/definitions/yok"; import { injector } from "../common/yok"; import * as semver from "semver"; +import { resolvePackageJSONPath } from "../helpers/package-path-helper"; interface IProjectFileData { projectData: any; @@ -637,12 +638,18 @@ export class ProjectDataService implements IProjectDataService { // in case we are using a local tgz for the runtime or a range like ~8.0.0, ^8.0.0 etc. if (runtimePackage.version.includes("tgz") || isRange) { try { - const runtimePackageJsonPath = require.resolve( - `${runtimePackage.name}/package.json`, + const runtimePackageJsonPath = resolvePackageJSONPath( + runtimePackage.name, { paths: [projectDir], } ); + + if (!runtimePackageJsonPath) { + // caught below + throw new Error("Runtime package.json not found."); + } + runtimePackage.version = this.$fs.readJson( runtimePackageJsonPath ).version; diff --git a/lib/services/test-execution-service.ts b/lib/services/test-execution-service.ts index 653201a1f2..07c9496f13 100644 --- a/lib/services/test-execution-service.ts +++ b/lib/services/test-execution-service.ts @@ -18,6 +18,7 @@ import { import * as _ from "lodash"; import { injector } from "../common/yok"; import { ICommandParameter } from "../common/definitions/commands"; +import { resolvePackagePath } from "../helpers/package-path-helper"; interface IKarmaConfigOptions { debugBrk: boolean; @@ -146,13 +147,12 @@ export class TestExecutionService implements ITestExecutionService { return; } }); - try { - require.resolve("karma/package.json", { - paths: [projectData.projectDir], - }); - } catch (ignore) { - canStartKarmaServer = false; - } + + const pathToKarma = resolvePackagePath("karma", { + paths: [projectData.projectDir], + }); + + canStartKarmaServer = !!pathToKarma; return canStartKarmaServer; } diff --git a/lib/services/webpack/webpack-compiler-service.ts b/lib/services/webpack/webpack-compiler-service.ts index a51c977e08..85118b5b6d 100644 --- a/lib/services/webpack/webpack-compiler-service.ts +++ b/lib/services/webpack/webpack-compiler-service.ts @@ -28,6 +28,10 @@ import { } from "../../common/declarations"; import { ICleanupService } from "../../definitions/cleanup-service"; import { injector } from "../../common/yok"; +import { + resolvePackagePath, + resolvePackageJSONPath, +} from "../../helpers/package-path-helper"; // todo: move out of here interface IWebpackMessage { @@ -71,7 +75,7 @@ export class WebpackCompilerService ): Promise { return new Promise(async (resolve, reject) => { if (this.webpackProcesses[platformData.platformNameLowerCase]) { - resolve(); + resolve(void 0); return; } @@ -584,45 +588,38 @@ export class WebpackCompilerService private getWebpackExecutablePath(projectData: IProjectData): string { if (this.isWebpack5(projectData)) { - const packagePath = require.resolve( - "@nativescript/webpack/package.json", - { - paths: [projectData.projectDir], - } - ); + const packagePath = resolvePackagePath("@nativescript/webpack", { + paths: [projectData.projectDir], + }); - return path.resolve( - packagePath.replace("package.json", ""), - "dist", - "bin", - "index.js" - ); + if (packagePath) { + return path.resolve(packagePath, "dist", "bin", "index.js"); + } } - return path.join( - projectData.projectDir, - "node_modules", - "webpack", - "bin", - "webpack.js" - ); + const packagePath = resolvePackagePath("webpack", { + paths: [projectData.projectDir], + }); + + if (!packagePath) { + return ""; + } + + return path.resolve(packagePath, "bin", "webpack.js"); } private isWebpack5(projectData: IProjectData): boolean { - try { - const packagePath = require.resolve( - "@nativescript/webpack/package.json", - { - paths: [projectData.projectDir], - } - ); - const ver = semver.coerce(require(packagePath).version); + const packageJSONPath = resolvePackageJSONPath("@nativescript/webpack", { + paths: [projectData.projectDir], + }); + + if (packageJSONPath) { + const packageData = this.$fs.readJson(packageJSONPath); + const ver = semver.coerce(packageData.version); if (semver.satisfies(ver, ">= 5.0.0")) { return true; } - } catch (ignore) { - // } return false; diff --git a/package-lock.json b/package-lock.json index ed27028454..7e049dd9e9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,7 @@ "dependencies": { "@nativescript/doctor": "2.0.4-next-02-05-2021-541397986", "@nativescript/schematics-executor": "0.0.2", + "@rigor789/resolve-package-path": "^1.0.5", "axios": "^0.21.1", "byline": "5.0.0", "chalk": "4.1.0", @@ -870,6 +871,11 @@ "read-package-json-fast": "^1.1.3" } }, + "node_modules/@rigor789/resolve-package-path": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@rigor789/resolve-package-path/-/resolve-package-path-1.0.5.tgz", + "integrity": "sha512-HLAsQ6kN1o1OO9jDmSiGPG9T6Z+cNAAgAiVikIShKKtQY/u+MblMgDmEw8QkMDEJtNSoOdEt6M2Z/UFG5xHyzA==" + }, "node_modules/@sindresorhus/is": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", @@ -14081,6 +14087,11 @@ "read-package-json-fast": "^1.1.3" } }, + "@rigor789/resolve-package-path": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@rigor789/resolve-package-path/-/resolve-package-path-1.0.5.tgz", + "integrity": "sha512-HLAsQ6kN1o1OO9jDmSiGPG9T6Z+cNAAgAiVikIShKKtQY/u+MblMgDmEw8QkMDEJtNSoOdEt6M2Z/UFG5xHyzA==" + }, "@sindresorhus/is": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", @@ -17968,7 +17979,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/grunt-template/-/grunt-template-1.0.0.tgz", "integrity": "sha1-Vgj5sFoGp4b6BIymZEfktI09HCE=", - "dev": true + "dev": true, + "requires": {} }, "grunt-ts": { "version": "6.0.0-beta.22", @@ -23790,7 +23802,8 @@ "ws": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz", - "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==" + "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==", + "requires": {} }, "xhr": { "version": "2.5.0", diff --git a/package.json b/package.json index 2515febc8e..0247d242c5 100644 --- a/package.json +++ b/package.json @@ -59,6 +59,7 @@ "dependencies": { "@nativescript/doctor": "2.0.4-next-02-05-2021-541397986", "@nativescript/schematics-executor": "0.0.2", + "@rigor789/resolve-package-path": "^1.0.5", "axios": "^0.21.1", "byline": "5.0.0", "chalk": "4.1.0", diff --git a/yarn.lock b/yarn.lock index 5c481c464b..2a4793d90d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -64,7 +64,7 @@ "pixelmatch" "^4.0.2" "tinycolor2" "^1.4.1" -"@jimp/custom@^0.14.0": +"@jimp/custom@^0.14.0", "@jimp/custom@>=0.3.5": "integrity" "sha512-kQJMeH87+kWJdVw8F9GQhtsageqqxrvzg7yyOw3Tx/s7v5RToe8RnKyMM+kVtBJtNAG+Xyv/z01uYQ2jiZ3GwA==" "resolved" "https://registry.npmjs.org/@jimp/custom/-/custom-0.14.0.tgz" "version" "0.14.0" @@ -91,7 +91,7 @@ "@jimp/utils" "^0.14.0" "jpeg-js" "^0.4.0" -"@jimp/plugin-blit@^0.14.0": +"@jimp/plugin-blit@^0.14.0", "@jimp/plugin-blit@>=0.3.5": "integrity" "sha512-YoYOrnVHeX3InfgbJawAU601iTZMwEBZkyqcP1V/S33Qnz9uzH1Uj1NtC6fNgWzvX6I4XbCWwtr4RrGFb5CFrw==" "resolved" "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.14.0.tgz" "version" "0.14.0" @@ -99,7 +99,7 @@ "@babel/runtime" "^7.7.2" "@jimp/utils" "^0.14.0" -"@jimp/plugin-blur@^0.14.0": +"@jimp/plugin-blur@^0.14.0", "@jimp/plugin-blur@>=0.3.5": "integrity" "sha512-9WhZcofLrT0hgI7t0chf7iBQZib//0gJh9WcQMUt5+Q1Bk04dWs8vTgLNj61GBqZXgHSPzE4OpCrrLDBG8zlhQ==" "resolved" "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.14.0.tgz" "version" "0.14.0" @@ -115,7 +115,7 @@ "@babel/runtime" "^7.7.2" "@jimp/utils" "^0.14.0" -"@jimp/plugin-color@^0.14.0": +"@jimp/plugin-color@^0.14.0", "@jimp/plugin-color@>=0.8.0": "integrity" "sha512-JJz512SAILYV0M5LzBb9sbOm/XEj2fGElMiHAxb7aLI6jx+n0agxtHpfpV/AePTLm1vzzDxx6AJxXbKv355hBQ==" "resolved" "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.14.0.tgz" "version" "0.14.0" @@ -140,7 +140,7 @@ "@babel/runtime" "^7.7.2" "@jimp/utils" "^0.14.0" -"@jimp/plugin-crop@^0.14.0": +"@jimp/plugin-crop@^0.14.0", "@jimp/plugin-crop@>=0.3.5": "integrity" "sha512-Ojtih+XIe6/XSGtpWtbAXBozhCdsDMmy+THUJAGu2x7ZgKrMS0JotN+vN2YC3nwDpYkM+yOJImQeptSfZb2Sug==" "resolved" "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.14.0.tgz" "version" "0.14.0" @@ -221,7 +221,7 @@ "@jimp/utils" "^0.14.0" "load-bmfont" "^1.4.0" -"@jimp/plugin-resize@^0.14.0": +"@jimp/plugin-resize@^0.14.0", "@jimp/plugin-resize@>=0.3.5", "@jimp/plugin-resize@>=0.8.0": "integrity" "sha512-qFeMOyXE/Bk6QXN0GQo89+CB2dQcXqoxUcDb2Ah8wdYlKqpi53skABkgVy5pW3EpiprDnzNDboMltdvDslNgLQ==" "resolved" "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.14.0.tgz" "version" "0.14.0" @@ -229,7 +229,7 @@ "@babel/runtime" "^7.7.2" "@jimp/utils" "^0.14.0" -"@jimp/plugin-rotate@^0.14.0": +"@jimp/plugin-rotate@^0.14.0", "@jimp/plugin-rotate@>=0.3.5": "integrity" "sha512-aGaicts44bvpTcq5Dtf93/8TZFu5pMo/61lWWnYmwJJU1RqtQlxbCLEQpMyRhKDNSfPbuP8nyGmaqXlM/82J0Q==" "resolved" "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.14.0.tgz" "version" "0.14.0" @@ -237,7 +237,7 @@ "@babel/runtime" "^7.7.2" "@jimp/utils" "^0.14.0" -"@jimp/plugin-scale@^0.14.0": +"@jimp/plugin-scale@^0.14.0", "@jimp/plugin-scale@>=0.3.5": "integrity" "sha512-ZcJk0hxY5ZKZDDwflqQNHEGRblgaR+piePZm7dPwPUOSeYEH31P0AwZ1ziceR74zd8N80M0TMft+e3Td6KGBHw==" "resolved" "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.14.0.tgz" "version" "0.14.0" @@ -433,6 +433,11 @@ "node-gyp" "^6.1.0" "read-package-json-fast" "^1.1.3" +"@rigor789/resolve-package-path@^1.0.5": + "integrity" "sha512-HLAsQ6kN1o1OO9jDmSiGPG9T6Z+cNAAgAiVikIShKKtQY/u+MblMgDmEw8QkMDEJtNSoOdEt6M2Z/UFG5xHyzA==" + "resolved" "https://registry.npmjs.org/@rigor789/resolve-package-path/-/resolve-package-path-1.0.5.tgz" + "version" "1.0.5" + "@sindresorhus/is@^0.14.0": "integrity" "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" "resolved" "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz" @@ -1188,13 +1193,6 @@ "resolved" "https://registry.npmjs.org/binaryextensions/-/binaryextensions-4.13.0.tgz" "version" "4.13.0" -"bindings@^1.5.0": - "integrity" "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==" - "resolved" "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz" - "version" "1.5.0" - dependencies: - "file-uri-to-path" "1.0.0" - "bmp-js@^0.1.0": "integrity" "sha1-4Fpj95amwf8l9Hcex62twUjAcjM=" "resolved" "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz" @@ -1447,7 +1445,7 @@ dependencies: "check-error" "^1.0.2" -"chai@4.2.0": +"chai@>= 2.1.2 < 5", "chai@4.2.0": "integrity" "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==" "resolved" "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz" "version" "4.2.0" @@ -2349,7 +2347,7 @@ dependencies: "once" "^1.4.0" -"enquirer@^2.3.6": +"enquirer@^2.3.6", "enquirer@>= 2.3.0 < 3": "integrity" "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==" "resolved" "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" "version" "2.3.6" @@ -2674,7 +2672,7 @@ "resolved" "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz" "version" "9.0.0" -"file-uri-to-path@1", "file-uri-to-path@1.0.0": +"file-uri-to-path@1": "integrity" "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" "resolved" "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz" "version" "1.0.0" @@ -2886,24 +2884,6 @@ "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" "version" "1.0.0" -"fsevents@^1.2.7": - "integrity" "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==" - "resolved" "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz" - "version" "1.2.13" - dependencies: - "bindings" "^1.5.0" - "nan" "^2.12.1" - -"fsevents@~2.1.2": - "integrity" "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==" - "resolved" "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz" - "version" "2.1.3" - -"fsevents@~2.3.1": - "integrity" "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==" - "resolved" "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" - "version" "2.3.2" - "ftp@~0.3.10": "integrity" "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=" "resolved" "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz" @@ -3293,7 +3273,7 @@ "semver" "^5.3.0" "strip-bom" "^2.0.0" -"grunt@1.2.1": +"grunt@^1.0.0 || ^0.4.0", "grunt@>=0.4.0", "grunt@>=0.4.5", "grunt@>=1", "grunt@1.2.1": "integrity" "sha512-zgJjn9N56tScvRt/y0+1QA+zDBnKTrkpyeSBqQPLcZvbqTD/oyGMrdZQXmm6I3828s+FmPvxc3Xv+lgKFtudOw==" "resolved" "https://registry.npmjs.org/grunt/-/grunt-1.2.1.tgz" "version" "1.2.1" @@ -4575,7 +4555,7 @@ "lodash.assign" "^4.2.0" "node-emoji" "^1.4.1" -"marked@1.1.1": +"marked@^0.4.0 || ^0.5.0", "marked@1.1.1": "integrity" "sha512-mJzT8D2yPxoPh7h0UXkB+dBj4FykPJ2OIfxAWeIHrvoHDkFxukV/29QxoFQoPM6RLEwhIFdJpmKBlqVM3s2ZIw==" "resolved" "https://registry.npmjs.org/marked/-/marked-1.1.1.tgz" "version" "1.1.1" @@ -4956,11 +4936,6 @@ "resolved" "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz" "version" "0.0.8" -"nan@^2.12.1": - "integrity" "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==" - "resolved" "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz" - "version" "2.14.1" - "nanoid@^1.0.7": "integrity" "sha512-4ug4BsuHxiVHoRUe1ud6rUFT3WUMmjXt1W0quL0CviZQANdan7D8kqN5/maw53hmAApY/jfzMRkC57BNNs60ZQ==" "resolved" "https://registry.npmjs.org/nanoid/-/nanoid-1.3.4.tgz" @@ -7000,7 +6975,7 @@ "debug" "^3.1.0" "proxy-agent" "2" -"superagent@^3.8.1": +"superagent@^3.8.1", "superagent@>= 0.15.4 || 1 || 2 || 3": "integrity" "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==" "resolved" "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz" "version" "3.8.3" @@ -7274,23 +7249,7 @@ dependencies: "tsutils" "^2.27.2 <2.29.0" -"tslint@5.4.3": - "integrity" "sha1-dhyEArgONHt3M6BDkKdXslNYBGc=" - "resolved" "https://registry.npmjs.org/tslint/-/tslint-5.4.3.tgz" - "version" "5.4.3" - dependencies: - "babel-code-frame" "^6.22.0" - "colors" "^1.1.2" - "commander" "^2.9.0" - "diff" "^3.2.0" - "glob" "^7.1.1" - "minimatch" "^3.0.4" - "resolve" "^1.3.2" - "semver" "^5.3.0" - "tslib" "^1.7.1" - "tsutils" "^2.3.0" - -"tslint@6.1.3": +"tslint@^5.1.0", "tslint@6.1.3": "integrity" "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==" "resolved" "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz" "version" "6.1.3" @@ -7309,6 +7268,22 @@ "tslib" "^1.13.0" "tsutils" "^2.29.0" +"tslint@5.4.3": + "integrity" "sha1-dhyEArgONHt3M6BDkKdXslNYBGc=" + "resolved" "https://registry.npmjs.org/tslint/-/tslint-5.4.3.tgz" + "version" "5.4.3" + dependencies: + "babel-code-frame" "^6.22.0" + "colors" "^1.1.2" + "commander" "^2.9.0" + "diff" "^3.2.0" + "glob" "^7.1.1" + "minimatch" "^3.0.4" + "resolve" "^1.3.2" + "semver" "^5.3.0" + "tslib" "^1.7.1" + "tsutils" "^2.3.0" + "tsutils@^2.27.2 <2.29.0": "integrity" "sha512-bh5nAtW0tuhvOJnx1GLRn5ScraRLICGyJV5wJhtRWOLsxW70Kk5tZtpK3O/hW6LDnqKS9mlUMPZj9fEMJ0gxqA==" "resolved" "https://registry.npmjs.org/tsutils/-/tsutils-2.28.0.tgz" @@ -7372,16 +7347,16 @@ "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz" "version" "0.8.1" +"typescript@^2.1.0 || ^3.0.0", "typescript@>=1", "typescript@>=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev", "typescript@>=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev", "typescript@>=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev || >= 4.0.0-dev", "typescript@3.9.7": + "integrity" "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==" + "resolved" "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz" + "version" "3.9.7" + "typescript@~4.0.2": "integrity" "sha512-e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ==" "resolved" "https://registry.npmjs.org/typescript/-/typescript-4.0.2.tgz" "version" "4.0.2" -"typescript@3.9.7": - "integrity" "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==" - "resolved" "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz" - "version" "3.9.7" - "uglify-js@^3.1.4": "integrity" "sha512-Lh00i69Uf6G74mvYpHCI9KVVXLcHW/xu79YTvH7Mkc9zyKUeSPz0owW0dguj0Scavns3ZOh3wY63J0Zb97Za2g==" "resolved" "https://registry.npmjs.org/uglify-js/-/uglify-js-3.10.3.tgz"