From bd1333a1cf8fa6d40070138bb939e1ec3bf411da Mon Sep 17 00:00:00 2001 From: "Andrew W. Harn" Date: Tue, 28 May 2024 15:58:13 -0400 Subject: [PATCH 01/15] Make initial linter changes Signed-off-by: Andrew W. Harn --- .eslintrc.js | 6 +- npm-shrinkwrap.json | 172 +++++++++++++++++- package.json | 2 + packages/.madgerc | 7 + ....zowe.daemon.integration.suite.subtest.ts} | 8 +- ...on.ts => cli.zowe.exe.integration.test.ts} | 0 ...cli.daemon.disable.integration.subtest.ts} | 0 ... cli.daemon.enable.integration.subtest.ts} | 0 ...cli.daemon.restart.integration.subtest.ts} | 0 packages/cli/__tests__/tsconfig.json | 1 + packages/core/__tests__/tsconfig.json | 10 +- packages/imperative/.eslintrc.js | 12 ++ packages/imperative/package.json | 6 +- packages/imperative/tsconfig-tests.json | 7 +- packages/provisioning/__tests__/tsconfig.json | 10 +- packages/secrets/package.json | 1 + packages/workflows/__tests__/tsconfig.json | 10 +- packages/zosconsole/__tests__/tsconfig.json | 10 +- packages/zosfiles/__tests__/tsconfig.json | 10 +- ...tem.test .ts => SearchJobs.system.test.ts} | 0 packages/zosjobs/__tests__/tsconfig.json | 10 +- packages/zoslogs/__tests__/tsconfig.json | 10 +- packages/zosmf/__tests__/tsconfig.json | 10 +- packages/zostso/__tests__/tsconfig.json | 10 +- packages/zosuss/__tests__/tsconfig.json | 10 +- 25 files changed, 294 insertions(+), 28 deletions(-) create mode 100644 packages/.madgerc rename packages/cli/__tests__/daemon/__integration__/{cli.zowe.daemon.integration.suite.test.ts => cli.zowe.daemon.integration.suite.subtest.ts} (93%) rename packages/cli/__tests__/daemon/__integration__/{cli.zowe.exe.integration.ts => cli.zowe.exe.integration.test.ts} (100%) rename packages/cli/__tests__/daemon/__integration__/disable/{cli.daemon.disable.integration.ts => cli.daemon.disable.integration.subtest.ts} (100%) rename packages/cli/__tests__/daemon/__integration__/enable/{cli.daemon.enable.integration.ts => cli.daemon.enable.integration.subtest.ts} (100%) rename packages/cli/__tests__/daemon/__integration__/restart/{cli.daemon.restart.integration.ts => cli.daemon.restart.integration.subtest.ts} (100%) create mode 100644 packages/imperative/.eslintrc.js rename packages/zosjobs/__tests__/__system__/{SearchJobs.system.test .ts => SearchJobs.system.test.ts} (100%) diff --git a/.eslintrc.js b/.eslintrc.js index 925a75dbb3..3b4488bdb1 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -5,7 +5,8 @@ module.exports = { }, "extends": [ "eslint:recommended", - "plugin:@typescript-eslint/recommended" + "plugin:@typescript-eslint/recommended", + "plugin:deprecation/recommended" ], "ignorePatterns": [ "**/*.js", @@ -37,7 +38,8 @@ module.exports = { "parser": "@typescript-eslint/parser", "parserOptions": { "ecmaVersion": 12, - "sourceType": "module" + "sourceType": "module", + "project": ["./tsconfig.json", "./__tests__/tsconfig.json"] }, "plugins": [ "@typescript-eslint", diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 8caf81e493..cd8bbdd041 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -25,6 +25,7 @@ "chalk": "^4.1.0", "env-cmd": "^10.1.0", "eslint": "^8.22.0", + "eslint-plugin-deprecation": "^2.0.0", "eslint-plugin-jest": "^27.0.0", "eslint-plugin-unused-imports": "^3.0.0", "fancy-log": "^2.0.0", @@ -4934,9 +4935,10 @@ "dev": true }, "node_modules/@types/json-schema": { - "version": "7.0.11", - "dev": true, - "license": "MIT" + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true }, "node_modules/@types/json5": { "version": "0.0.29", @@ -5058,9 +5060,10 @@ } }, "node_modules/@types/semver": { - "version": "7.3.12", - "dev": true, - "license": "MIT" + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true }, "node_modules/@types/sizzle": { "version": "2.3.4", @@ -8868,6 +8871,163 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint-plugin-deprecation": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-deprecation/-/eslint-plugin-deprecation-2.0.0.tgz", + "integrity": "sha512-OAm9Ohzbj11/ZFyICyR5N6LbOIvQMp7ZU2zI7Ej0jIc8kiGUERXPNMfw2QqqHD1ZHtjMub3yPZILovYEYucgoQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "^6.0.0", + "tslib": "^2.3.1", + "tsutils": "^3.21.0" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0", + "typescript": "^4.2.4 || ^5.0.0" + } + }, + "node_modules/eslint-plugin-deprecation/node_modules/@typescript-eslint/scope-manager": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-deprecation/node_modules/@typescript-eslint/types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-deprecation/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-deprecation/node_modules/@typescript-eslint/utils": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", + "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-deprecation/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-deprecation/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/eslint-plugin-deprecation/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-deprecation/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/eslint-plugin-deprecation/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "node_modules/eslint-plugin-jest": { "version": "27.9.0", "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.9.0.tgz", diff --git a/package.json b/package.json index a819be9e69..b311e62a29 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "installWithBuild": "npm install && npm run build", "checkTestsCompile": "echo \"Checking that test source compiles...\" && tsc --project __tests__/tsconfig.json --noEmit", "circularDependencyCheck": "lerna run --parallel circularDependencyCheck -- --warning --no-spinner", + "lint:lerna": "lerna run lint --no-bail", "lint": "eslint \"packages/**/*.ts\" \"**/__tests__/**/*.ts\"", "lint:packages": "eslint \"packages/**/*.ts\" --ignore-pattern \"**/__tests__/**/*.ts\"", "lint:tests": "eslint \"**/__tests__/**/*.ts\"", @@ -55,6 +56,7 @@ "chalk": "^4.1.0", "env-cmd": "^10.1.0", "eslint": "^8.22.0", + "eslint-plugin-deprecation": "^2.0.0", "eslint-plugin-jest": "^27.0.0", "eslint-plugin-unused-imports": "^3.0.0", "fancy-log": "^2.0.0", diff --git a/packages/.madgerc b/packages/.madgerc new file mode 100644 index 0000000000..99ddc7266e --- /dev/null +++ b/packages/.madgerc @@ -0,0 +1,7 @@ +{ + "detectiveOptions": { + "ts": { + "skipTypeImports": true + } + } +} \ No newline at end of file diff --git a/packages/cli/__tests__/daemon/__integration__/cli.zowe.daemon.integration.suite.test.ts b/packages/cli/__tests__/daemon/__integration__/cli.zowe.daemon.integration.suite.subtest.ts similarity index 93% rename from packages/cli/__tests__/daemon/__integration__/cli.zowe.daemon.integration.suite.test.ts rename to packages/cli/__tests__/daemon/__integration__/cli.zowe.daemon.integration.suite.subtest.ts index 586bfbc873..313f1f3a8d 100644 --- a/packages/cli/__tests__/daemon/__integration__/cli.zowe.daemon.integration.suite.test.ts +++ b/packages/cli/__tests__/daemon/__integration__/cli.zowe.daemon.integration.suite.subtest.ts @@ -90,8 +90,8 @@ describe("Zowe daemon suite", () => { }); // run all of our daemon-related tests - require("./cli.zowe.exe.integration"); - require("./enable/cli.daemon.enable.integration"); - require("./disable/cli.daemon.disable.integration"); - require("./restart/cli.daemon.restart.integration"); + require("./cli.zowe.exe.integration.subtest"); + require("./enable/cli.daemon.enable.integration.subtest"); + require("./disable/cli.daemon.disable.integration.subtest"); + require("./restart/cli.daemon.restart.integration.subtest"); }); diff --git a/packages/cli/__tests__/daemon/__integration__/cli.zowe.exe.integration.ts b/packages/cli/__tests__/daemon/__integration__/cli.zowe.exe.integration.test.ts similarity index 100% rename from packages/cli/__tests__/daemon/__integration__/cli.zowe.exe.integration.ts rename to packages/cli/__tests__/daemon/__integration__/cli.zowe.exe.integration.test.ts diff --git a/packages/cli/__tests__/daemon/__integration__/disable/cli.daemon.disable.integration.ts b/packages/cli/__tests__/daemon/__integration__/disable/cli.daemon.disable.integration.subtest.ts similarity index 100% rename from packages/cli/__tests__/daemon/__integration__/disable/cli.daemon.disable.integration.ts rename to packages/cli/__tests__/daemon/__integration__/disable/cli.daemon.disable.integration.subtest.ts diff --git a/packages/cli/__tests__/daemon/__integration__/enable/cli.daemon.enable.integration.ts b/packages/cli/__tests__/daemon/__integration__/enable/cli.daemon.enable.integration.subtest.ts similarity index 100% rename from packages/cli/__tests__/daemon/__integration__/enable/cli.daemon.enable.integration.ts rename to packages/cli/__tests__/daemon/__integration__/enable/cli.daemon.enable.integration.subtest.ts diff --git a/packages/cli/__tests__/daemon/__integration__/restart/cli.daemon.restart.integration.ts b/packages/cli/__tests__/daemon/__integration__/restart/cli.daemon.restart.integration.subtest.ts similarity index 100% rename from packages/cli/__tests__/daemon/__integration__/restart/cli.daemon.restart.integration.ts rename to packages/cli/__tests__/daemon/__integration__/restart/cli.daemon.restart.integration.subtest.ts diff --git a/packages/cli/__tests__/tsconfig.json b/packages/cli/__tests__/tsconfig.json index df9be0345c..4d653bc801 100644 --- a/packages/cli/__tests__/tsconfig.json +++ b/packages/cli/__tests__/tsconfig.json @@ -18,6 +18,7 @@ }, "include": [ "**/*.test.ts", + "**/*.subtest.ts", "**/__tests__/**/*" ], "exclude": [ diff --git a/packages/core/__tests__/tsconfig.json b/packages/core/__tests__/tsconfig.json index 92ea165d70..434259e064 100644 --- a/packages/core/__tests__/tsconfig.json +++ b/packages/core/__tests__/tsconfig.json @@ -1,4 +1,12 @@ { // tsconfig for test files // - "extends": "../../__tests__/tsconfig.json" + "extends": "../../../__tests__/tsconfig.json", + "include": [ + "**/*.test.ts", + "**/__tests__/**/*" + ], + "exclude": [ + "lib", + "node_modules" + ] } diff --git a/packages/imperative/.eslintrc.js b/packages/imperative/.eslintrc.js new file mode 100644 index 0000000000..fa630b127c --- /dev/null +++ b/packages/imperative/.eslintrc.js @@ -0,0 +1,12 @@ +module.exports = { + ...require("../../.eslintrc.js"), + "parserOptions": { + "ecmaVersion": 12, + "sourceType": "module", + "project": [ + "./tsconfig.json", + "./__tests__/tsconfig.json", + "./tsconfig-tests.json" + ] + } +} \ No newline at end of file diff --git a/packages/imperative/package.json b/packages/imperative/package.json index 73ad8bae07..638a6af9ed 100644 --- a/packages/imperative/package.json +++ b/packages/imperative/package.json @@ -30,9 +30,9 @@ "scripts": { "build:packages": "tsc --pretty", "build": "npm run build:packages && npm run build:webHelp", - "lint": "eslint \"packages/**/*.ts\" \"**/__tests__/**/*.ts\"", - "lint:packages": "eslint \"packages/**/*.ts\" --ignore-pattern \"**/__tests__/**/*.ts\"", - "lint:tests": "eslint \"**/__tests__/**/*.ts\"", + "lint": "eslint \"src/**/*.ts\" \"**/__tests__/**/*.ts\"", + "lint:packages": "eslint \"src/**/*.ts\" --ignore-pattern \"**/__tests__/**/*.ts\"", + "lint:tests": "eslint \"./__tests__/**/*.ts\"", "circularDependencyCheck": "madge -c lib", "watch": "concurrently \"tsc --pretty --watch\" \"npm run watch:webHelp\"", "build:webHelp": "cd web-help && npm run build", diff --git a/packages/imperative/tsconfig-tests.json b/packages/imperative/tsconfig-tests.json index 6bd842eb0f..3485999e7b 100644 --- a/packages/imperative/tsconfig-tests.json +++ b/packages/imperative/tsconfig-tests.json @@ -25,12 +25,13 @@ "./node_modules/@types" ], "include": [ - "**/__tests__/*" + "**/__tests__/*", + "**/__tests__/**/*", + "**/__mocks__/*" ], "exclude": [ "lib", - "node_modules", - "**/__mocks__/*" + "node_modules" ], "files": [ "../../__types__/wontache.d.ts" diff --git a/packages/provisioning/__tests__/tsconfig.json b/packages/provisioning/__tests__/tsconfig.json index 92ea165d70..434259e064 100644 --- a/packages/provisioning/__tests__/tsconfig.json +++ b/packages/provisioning/__tests__/tsconfig.json @@ -1,4 +1,12 @@ { // tsconfig for test files // - "extends": "../../__tests__/tsconfig.json" + "extends": "../../../__tests__/tsconfig.json", + "include": [ + "**/*.test.ts", + "**/__tests__/**/*" + ], + "exclude": [ + "lib", + "node_modules" + ] } diff --git a/packages/secrets/package.json b/packages/secrets/package.json index 9c95ae55f8..76e600a2ed 100644 --- a/packages/secrets/package.json +++ b/packages/secrets/package.json @@ -39,6 +39,7 @@ "build:debug": "cd src/keyring && napi build --config napi.json --js false --platform", "build:ts": "tsc --pretty", "install": "node scripts/prebuildCheck.js || npm run rebuild", + "lint": "echo 'Nothing to Lint'", "prepack": "node ../../scripts/prepareLicenses.js", "prepublishOnly": "bash scripts/prebuildify.sh", "rebuild": "npx --yes --package=@napi-rs/cli@2.16.2 -- napi build --config src/keyring/napi.json --cargo-cwd src/keyring --platform --release --js=false src/keyring", diff --git a/packages/workflows/__tests__/tsconfig.json b/packages/workflows/__tests__/tsconfig.json index 92ea165d70..434259e064 100644 --- a/packages/workflows/__tests__/tsconfig.json +++ b/packages/workflows/__tests__/tsconfig.json @@ -1,4 +1,12 @@ { // tsconfig for test files // - "extends": "../../__tests__/tsconfig.json" + "extends": "../../../__tests__/tsconfig.json", + "include": [ + "**/*.test.ts", + "**/__tests__/**/*" + ], + "exclude": [ + "lib", + "node_modules" + ] } diff --git a/packages/zosconsole/__tests__/tsconfig.json b/packages/zosconsole/__tests__/tsconfig.json index ff21f0e2aa..d4253ffe43 100644 --- a/packages/zosconsole/__tests__/tsconfig.json +++ b/packages/zosconsole/__tests__/tsconfig.json @@ -1,4 +1,12 @@ { // tsconfig for test files // - "extends": "../../__tests__/tsconfig.json" + "extends": "../../../__tests__/tsconfig.json", + "include": [ + "**/*.test.ts", + "**/__tests__/**/*" + ], + "exclude": [ + "lib", + "node_modules" + ] } \ No newline at end of file diff --git a/packages/zosfiles/__tests__/tsconfig.json b/packages/zosfiles/__tests__/tsconfig.json index 92ea165d70..434259e064 100644 --- a/packages/zosfiles/__tests__/tsconfig.json +++ b/packages/zosfiles/__tests__/tsconfig.json @@ -1,4 +1,12 @@ { // tsconfig for test files // - "extends": "../../__tests__/tsconfig.json" + "extends": "../../../__tests__/tsconfig.json", + "include": [ + "**/*.test.ts", + "**/__tests__/**/*" + ], + "exclude": [ + "lib", + "node_modules" + ] } diff --git a/packages/zosjobs/__tests__/__system__/SearchJobs.system.test .ts b/packages/zosjobs/__tests__/__system__/SearchJobs.system.test.ts similarity index 100% rename from packages/zosjobs/__tests__/__system__/SearchJobs.system.test .ts rename to packages/zosjobs/__tests__/__system__/SearchJobs.system.test.ts diff --git a/packages/zosjobs/__tests__/tsconfig.json b/packages/zosjobs/__tests__/tsconfig.json index ff21f0e2aa..d4253ffe43 100644 --- a/packages/zosjobs/__tests__/tsconfig.json +++ b/packages/zosjobs/__tests__/tsconfig.json @@ -1,4 +1,12 @@ { // tsconfig for test files // - "extends": "../../__tests__/tsconfig.json" + "extends": "../../../__tests__/tsconfig.json", + "include": [ + "**/*.test.ts", + "**/__tests__/**/*" + ], + "exclude": [ + "lib", + "node_modules" + ] } \ No newline at end of file diff --git a/packages/zoslogs/__tests__/tsconfig.json b/packages/zoslogs/__tests__/tsconfig.json index 92ea165d70..434259e064 100644 --- a/packages/zoslogs/__tests__/tsconfig.json +++ b/packages/zoslogs/__tests__/tsconfig.json @@ -1,4 +1,12 @@ { // tsconfig for test files // - "extends": "../../__tests__/tsconfig.json" + "extends": "../../../__tests__/tsconfig.json", + "include": [ + "**/*.test.ts", + "**/__tests__/**/*" + ], + "exclude": [ + "lib", + "node_modules" + ] } diff --git a/packages/zosmf/__tests__/tsconfig.json b/packages/zosmf/__tests__/tsconfig.json index ff21f0e2aa..d4253ffe43 100644 --- a/packages/zosmf/__tests__/tsconfig.json +++ b/packages/zosmf/__tests__/tsconfig.json @@ -1,4 +1,12 @@ { // tsconfig for test files // - "extends": "../../__tests__/tsconfig.json" + "extends": "../../../__tests__/tsconfig.json", + "include": [ + "**/*.test.ts", + "**/__tests__/**/*" + ], + "exclude": [ + "lib", + "node_modules" + ] } \ No newline at end of file diff --git a/packages/zostso/__tests__/tsconfig.json b/packages/zostso/__tests__/tsconfig.json index ff21f0e2aa..d4253ffe43 100644 --- a/packages/zostso/__tests__/tsconfig.json +++ b/packages/zostso/__tests__/tsconfig.json @@ -1,4 +1,12 @@ { // tsconfig for test files // - "extends": "../../__tests__/tsconfig.json" + "extends": "../../../__tests__/tsconfig.json", + "include": [ + "**/*.test.ts", + "**/__tests__/**/*" + ], + "exclude": [ + "lib", + "node_modules" + ] } \ No newline at end of file diff --git a/packages/zosuss/__tests__/tsconfig.json b/packages/zosuss/__tests__/tsconfig.json index ff21f0e2aa..d4253ffe43 100644 --- a/packages/zosuss/__tests__/tsconfig.json +++ b/packages/zosuss/__tests__/tsconfig.json @@ -1,4 +1,12 @@ { // tsconfig for test files // - "extends": "../../__tests__/tsconfig.json" + "extends": "../../../__tests__/tsconfig.json", + "include": [ + "**/*.test.ts", + "**/__tests__/**/*" + ], + "exclude": [ + "lib", + "node_modules" + ] } \ No newline at end of file From ef5a689b89d4d1c74495a8c5179f61a4d906706f Mon Sep 17 00:00:00 2001 From: "Andrew W. Harn" Date: Tue, 28 May 2024 17:54:04 -0400 Subject: [PATCH 02/15] Fix deprecated functions Signed-off-by: Andrew W. Harn --- .eslintrc.js | 1 + .../cli-test-utils/src/TestUtils.ts | 2 +- package.json | 7 +- .../view/uss/View.uss.system.test.ts | 8 +-- .../cli.zos-jobs.list.jobs.system.test.ts | 2 +- ...s.list.spool-files-by-jobid.system.test.ts | 2 +- .../config/auto-init/ApimlAutoInitHandler.ts | 6 +- packages/cli/src/daemon/DaemonClient.ts | 6 +- .../cli/src/daemon/disable/Disable.handler.ts | 4 +- .../delete/instance/DeleteInstance.handler.ts | 3 +- .../list/instanceInfo/InstanceInfo.handler.ts | 5 +- .../InstanceVariables.handler.ts | 3 +- .../registry/RegistryInstances.handler.ts | 3 +- .../perform/action/Action.handler.ts | 3 +- .../provision/template/Template.handler.ts | 7 +- .../workflow/Archive.workflow.definition.ts | 4 +- .../create/dataset/Dataset.definition.ts | 4 +- .../create/localfile/LocalFile.definition.ts | 4 +- .../create/ussfile/UssFile.definition.ts | 4 +- .../delete/Delete.archived.common.handler.ts | 14 ++-- .../DeleteActiveWorkflow.definition.ts | 4 +- .../DeleteArchivedWorkflow.definition.ts | 4 +- .../ActiveWorkflowDetails.definition.ts | 4 +- .../ActiveWorkflows.definition.ts | 4 +- .../RetrieveWorkflowDefinition.definition.ts | 4 +- .../workflowFull/WorkflowFull.definition.ts | 4 +- .../workflowStep/WorkflowStep.definition.ts | 4 +- .../issue/command/Command.handler.ts | 7 +- .../src/zosfiles/copy/dsclp/Dsclp.handler.ts | 2 +- .../src/zosfiles/delete/uss/Uss.definition.ts | 4 +- packages/cli/src/zosfiles/edit/Edit.utils.ts | 10 +-- .../cli/src/zosjobs/list/jobs/Jobs.handler.ts | 4 +- .../__unit__/ZosmfRestClient.unit.test.ts | 12 ++-- packages/core/src/apiml/Services.ts | 6 +- packages/core/src/utils/CoreUtils.ts | 2 +- ...md.cli.chainedhandlers.integration.test.ts | 6 +- ...mentalVariableSettings.integration.test.ts | 6 +- ...t-cli.config.secure.integration.subtest.ts | 4 +- .../src/cli/config/FruitAutoInitHandler.ts | 4 +- .../imperative/__tests__/src/TestLogger.ts | 5 +- packages/imperative/__tests__/src/TestUtil.ts | 22 +++---- .../imperative/__tests__/src/UnitTestUtils.ts | 3 +- .../plans/ManyFieldValidationPlan.ts | 3 +- .../CliProfileManager.integration.test.ts | 6 +- .../SyntaxValidator.integration.test.ts | 9 ++- .../ConfigLoading.integration.test.ts | 6 +- .../help/WebHelpGenerator.unit.test.ts | 8 +-- .../help/WebHelpManager.unit.test.ts | 6 +- .../imperative/src/cmd/src/CommandPreparer.ts | 6 +- .../src/cmd/src/CommandProcessor.ts | 30 ++++----- .../cmd/src/handlers/FailedCommandHandler.ts | 2 +- .../src/cmd/src/help/DefaultHelpGenerator.ts | 10 +-- .../src/cmd/src/help/WebHelpGenerator.ts | 4 +- .../src/cmd/src/help/WebHelpManager.ts | 4 +- .../help/abstract/AbstractHelpGenerator.ts | 22 +++---- .../abstract/AbstractHelpGeneratorFactory.ts | 3 +- .../src/cmd/src/profiles/CliProfileManager.ts | 8 +-- .../cmd/src/profiles/CommandProfileLoader.ts | 2 +- .../src/cmd/src/profiles/CommandProfiles.ts | 4 +- .../src/cmd/src/response/CommandResponse.ts | 36 +++++----- .../src/cmd/src/syntax/SyntaxValidator.ts | 66 +++++++++---------- .../src/syntax/__mocks__/SyntaxValidator.ts | 2 +- .../__tests__/SyntaxValidator.unit.test.ts | 4 +- .../src/cmd/src/utils/CommandUtils.ts | 11 ++-- .../src/cmd/src/utils/SharedOptions.ts | 3 +- .../src/cmd/src/yargs/AbstractCommandYargs.ts | 16 ++--- .../src/cmd/src/yargs/CommandYargs.ts | 20 +++--- .../src/cmd/src/yargs/YargsConfigurer.ts | 4 +- .../__tests__/ConvertV1Profiles.unit.test.ts | 8 +-- packages/imperative/src/config/src/Config.ts | 8 +-- .../src/config/src/ConfigAutoStore.ts | 10 +-- .../imperative/src/config/src/ConfigSchema.ts | 2 +- .../imperative/src/config/src/ConfigUtils.ts | 2 +- .../src/config/src/ConvertV1Profiles.ts | 6 +- .../src/config/src/ProfileCredentials.ts | 16 ++--- .../imperative/src/config/src/ProfileInfo.ts | 18 ++--- .../src/config/src/api/ConfigLayers.ts | 2 +- .../src/config/src/api/ConfigProfiles.ts | 2 +- .../src/config/src/api/ConfigSecure.ts | 6 +- ...ImperativeEventEmitter.integration.test.ts | 6 +- .../ImperativeEventEmitter.unit.test.ts | 17 +++-- .../src/expect/src/ImperativeExpect.ts | 14 ++-- .../__tests__/Imperative.unit.test.ts | 6 +- .../__tests__/OverridesLoader.unit.test.ts | 10 +-- .../config/cmd/list/list.handler.unit.test.ts | 14 ++-- .../profiles/profiles.handler.unit.test.ts | 2 +- .../cmd/schema/schema.handler.unit.test.ts | 4 +- .../cmd/secure/secure.handler.unit.test.ts | 8 +-- .../config/cmd/set/set.handler.unit.test.ts | 8 +-- .../updateSchema.handler.unit.test.ts | 4 +- .../PluginRequireProvider.unit.test.ts | 14 ++-- .../utilities/runValidatePlugin.unit.test.ts | 6 +- .../imperative/src/ConfigurationValidator.ts | 19 +++--- .../imperative/src/DefinitionTreeResolver.ts | 2 +- .../src/imperative/src/Imperative.ts | 2 +- .../src/imperative/src/OverridesLoader.ts | 20 +++--- .../auth/builders/AuthLoginCommandBuilder.ts | 2 +- .../src/auth/handlers/BaseAuthHandler.ts | 2 +- .../builders/AutoInitCommandBuilder.ts | 2 +- .../src/config/cmd/init/init.handler.ts | 4 +- .../src/config/cmd/list/list.handler.ts | 2 +- .../src/config/cmd/report-env/EnvQuery.ts | 8 +-- .../help/ImperativeHelpGeneratorFactory.ts | 3 +- .../src/plugins/PluginManagementFacility.ts | 4 +- .../src/plugins/PluginRequireProvider.ts | 6 +- .../src/plugins/utilities/PMFConstants.ts | 2 +- .../utilities/npm-interface/install.ts | 2 +- packages/imperative/src/io/src/IO.ts | 2 +- packages/imperative/src/logger/src/Logger.ts | 16 ++--- .../src/logger/src/LoggerConfigBuilder.ts | 5 +- .../Operations.integration.spec.ts | 5 +- .../src/operations/src/Operation.ts | 4 +- .../src/operations/src/Operations.ts | 11 ++-- .../src/profiles/src/utils/ProfileUtils.ts | 5 +- .../__tests__/ProfileValidation.unit.test.ts | 2 +- .../src/validation/api/ProfileValidator.ts | 15 ++--- .../client/AbstractRestClient.unit.test.ts | 4 +- .../client/__model__/CustomRestClient.ts | 3 +- .../__model__/MockHttpRequestResponse.ts | 4 +- .../src/rest/src/client/AbstractRestClient.ts | 12 ++-- .../src/rest/src/client/RestClient.ts | 2 +- .../src/session/ConnectionPropsForSessCfg.ts | 4 +- .../CredentialManagerFactory.unit.test.ts | 4 +- .../DefaultCredentialManager.unit.test.ts | 12 ++-- .../security/src/CredentialManagerFactory.ts | 8 +-- .../security/src/CredentialManagerOverride.ts | 2 +- .../security/src/DefaultCredentialManager.ts | 6 +- .../src/abstract/AbstractCredentialManager.ts | 4 +- .../diff/WebDiffManager.unit.test.ts | 6 +- .../imperative/src/utilities/src/CliUtils.ts | 16 ++--- .../imperative/src/utilities/src/JSONUtils.ts | 3 +- .../imperative/src/utilities/src/TextUtils.ts | 22 +++---- .../provisioning/src/ListRegistryInstances.ts | 5 +- packages/secrets/package.json | 1 - packages/workflows/src/Create.ts | 13 ++-- packages/workflows/src/Start.ts | 3 +- packages/zosconsole/src/CollectCommand.ts | 9 ++- .../zosconsole/src/ConsoleResponseService.ts | 20 +++--- packages/zosconsole/src/IssueCommand.ts | 9 ++- .../methods/download/Download.system.test.ts | 4 +- .../methods/download/Download.unit.test.ts | 18 ++--- .../methods/search/Search.unit.test.ts | 2 +- .../methods/upload/Upload.unit.test.ts | 2 +- .../methods/utilities/Utilities.unit.test.ts | 14 ++-- packages/zosfiles/src/methods/copy/Copy.ts | 8 +-- .../zosfiles/src/methods/create/Create.ts | 6 +- .../zosfiles/src/methods/delete/Delete.ts | 4 +- .../zosfiles/src/methods/download/Download.ts | 6 +- .../zosfiles/src/methods/invoke/Invoke.ts | 4 +- packages/zosfiles/src/methods/list/List.ts | 2 +- packages/zosfiles/src/methods/mount/Mount.ts | 5 +- .../zosfiles/src/methods/rename/Rename.ts | 4 +- .../zosfiles/src/methods/search/Search.ts | 6 +- .../zosfiles/src/methods/upload/Upload.ts | 8 +-- .../src/methods/utilities/Utilities.ts | 8 +-- packages/zosfiles/src/utils/ZosFilesUtils.ts | 2 +- .../__system__/DownloadJobs.system.test.ts | 6 +- .../__system__/MonitorJobs.system.test.ts | 4 +- packages/zosjobs/src/GetJobs.ts | 12 ++-- packages/zoslogs/src/GetZosLog.ts | 3 +- packages/zostso/src/SendTso.ts | 5 +- packages/zosuss/src/Shell.ts | 4 +- 162 files changed, 561 insertions(+), 598 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 3b4488bdb1..2e3218d37f 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -49,6 +49,7 @@ module.exports = { "rules": { "max-len": ["warn", 150], "no-console": "error", + "no-extra-parens": "error", "no-multiple-empty-lines": "warn", "no-trailing-spaces": "warn", "@typescript-eslint/ban-types": "off", diff --git a/__tests__/__packages__/cli-test-utils/src/TestUtils.ts b/__tests__/__packages__/cli-test-utils/src/TestUtils.ts index a61c50b49b..bd5d70d36d 100644 --- a/__tests__/__packages__/cli-test-utils/src/TestUtils.ts +++ b/__tests__/__packages__/cli-test-utils/src/TestUtils.ts @@ -127,7 +127,7 @@ export function mockHandlerParameters(params: PartialHandlerParameters): IHandle arguments: { $0: "zowe", _: params.positionals || [], - ...(params.arguments || {}) + ...params.arguments || {} }, positionals: params.positionals || [], profiles: params.profiles || new CommandProfiles(new Map()), diff --git a/package.json b/package.json index b311e62a29..17b350ce2d 100644 --- a/package.json +++ b/package.json @@ -17,10 +17,9 @@ "installWithBuild": "npm install && npm run build", "checkTestsCompile": "echo \"Checking that test source compiles...\" && tsc --project __tests__/tsconfig.json --noEmit", "circularDependencyCheck": "lerna run --parallel circularDependencyCheck -- --warning --no-spinner", - "lint:lerna": "lerna run lint --no-bail", - "lint": "eslint \"packages/**/*.ts\" \"**/__tests__/**/*.ts\"", - "lint:packages": "eslint \"packages/**/*.ts\" --ignore-pattern \"**/__tests__/**/*.ts\"", - "lint:tests": "eslint \"**/__tests__/**/*.ts\"", + "lint": "lerna run lint --parallel --no-bail", + "lint:packages": "lerna run lint:packages --parallel --no-bail", + "lint:tests": "lerna run lint:tests --parallel --no-bail", "test": "npm run test:unit && npm run test:integration && npm run test:system", "test:act": "node scripts/testCliWorkflow.js", "test:cleanResults": "rimraf __tests__/__results__", diff --git a/packages/cli/__tests__/zosfiles/__system__/view/uss/View.uss.system.test.ts b/packages/cli/__tests__/zosfiles/__system__/view/uss/View.uss.system.test.ts index 9db8f91935..c36f5ab897 100644 --- a/packages/cli/__tests__/zosfiles/__system__/view/uss/View.uss.system.test.ts +++ b/packages/cli/__tests__/zosfiles/__system__/view/uss/View.uss.system.test.ts @@ -78,7 +78,7 @@ describe("View uss file", () => { await ZosmfRestClient.putExpectString(REAL_SESSION, endpoint, [], data); const shellScript = path.join(__dirname, "__scripts__", "command", "command_view_uss_file.sh"); - const response = runCliScript(shellScript, testEnvironment, [ussname.substr(1, ussname.length)]); + const response = runCliScript(shellScript, testEnvironment, [ussname.substring(1, ussname.length)]); expect(response.stderr.toString()).toBe(""); expect(response.status).toBe(0); @@ -90,7 +90,7 @@ describe("View uss file", () => { await ZosmfRestClient.putExpectString(REAL_SESSION, endpoint, [ZosmfHeaders.X_IBM_BINARY], data); const shellScript = path.join(__dirname, "__scripts__", "command", "command_view_uss_file.sh"); - const response = runCliScript(shellScript, testEnvironment, [ussname.substr(1, ussname.length), "--binary"]); + const response = runCliScript(shellScript, testEnvironment, [ussname.substring(1, ussname.length), "--binary"]); expect(response.stderr.toString()).toBe(""); expect(response.status).toBe(0); @@ -102,7 +102,7 @@ describe("View uss file", () => { await Upload.bufferToUssFile(REAL_SESSION, ussname, Buffer.from(data), { binary: true }); const shellScript = path.join(__dirname, "__scripts__", "command", "command_view_uss_file.sh"); - const response = runCliScript(shellScript, testEnvironment, [ussname.substr(1, ussname.length), "--binary"]); + const response = runCliScript(shellScript, testEnvironment, [ussname.substring(1, ussname.length), "--binary"]); const respdata = response.stdout.toLocaleString(); expect(response.stderr.toString()).toBe(""); @@ -115,7 +115,7 @@ describe("View uss file", () => { await ZosmfRestClient.putExpectString(REAL_SESSION, endpoint, [], data); const shellScript = path.join(__dirname, "__scripts__", "command", "command_view_uss_file.sh"); - const response = runCliScript(shellScript, testEnvironment, [ussname.substr(1, ussname.length), "--range", "0,1"]); + const response = runCliScript(shellScript, testEnvironment, [ussname.substring(1, ussname.length), "--range", "0,1"]); expect(response.stderr.toString()).toBe(""); expect(response.status).toBe(0); diff --git a/packages/cli/__tests__/zosjobs/__system__/list/cli.zos-jobs.list.jobs.system.test.ts b/packages/cli/__tests__/zosjobs/__system__/list/cli.zos-jobs.list.jobs.system.test.ts index 980349b35f..54327bf0da 100644 --- a/packages/cli/__tests__/zosjobs/__system__/list/cli.zos-jobs.list.jobs.system.test.ts +++ b/packages/cli/__tests__/zosjobs/__system__/list/cli.zos-jobs.list.jobs.system.test.ts @@ -45,7 +45,7 @@ describe("zos-jobs list jobs command", () => { ACCOUNT = systemProps.tso.account; const JOB_LENGTH = 6; - JOB_NAME = REAL_SESSION.ISession.user.substr(0, JOB_LENGTH).toUpperCase() + "SF"; + JOB_NAME = REAL_SESSION.ISession.user.substring(0, JOB_LENGTH).toUpperCase() + "SF"; NON_HELD_JOBCLASS = TEST_ENVIRONMENT.systemTestProperties.zosjobs.jobclass; }); diff --git a/packages/cli/__tests__/zosjobs/__system__/list/cli.zos-jobs.list.spool-files-by-jobid.system.test.ts b/packages/cli/__tests__/zosjobs/__system__/list/cli.zos-jobs.list.spool-files-by-jobid.system.test.ts index 3a1e7449ef..b90a2aeb63 100644 --- a/packages/cli/__tests__/zosjobs/__system__/list/cli.zos-jobs.list.spool-files-by-jobid.system.test.ts +++ b/packages/cli/__tests__/zosjobs/__system__/list/cli.zos-jobs.list.spool-files-by-jobid.system.test.ts @@ -49,7 +49,7 @@ describe("zos-jobs list spool-files-by-jobid command", () => { ACCOUNT = defaultSystem.tso.account; const JOB_LENGTH = 6; - JOB_NAME = REAL_SESSION.ISession.user.substr(0, JOB_LENGTH).toUpperCase() + "SF"; + JOB_NAME = REAL_SESSION.ISession.user.substring(0, JOB_LENGTH).toUpperCase() + "SF"; NON_HELD_JOBCLASS = TEST_ENVIRONMENT.systemTestProperties.zosjobs.jobclass; }); diff --git a/packages/cli/src/config/auto-init/ApimlAutoInitHandler.ts b/packages/cli/src/config/auto-init/ApimlAutoInitHandler.ts index 7192b93e80..37755e3372 100644 --- a/packages/cli/src/config/auto-init/ApimlAutoInitHandler.ts +++ b/packages/cli/src/config/auto-init/ApimlAutoInitHandler.ts @@ -70,7 +70,7 @@ export default class ApimlAutoInitHandler extends BaseAutoInitHandler { */ protected async doAutoInit(session: AbstractSession, params: IHandlerParameters): Promise { // Login with token authentication first, so we can support certificates - if ((session.ISession.user && session.ISession.password) || (session.ISession.cert && session.ISession.certKey)) { + if (session.ISession.user && session.ISession.password || session.ISession.cert && session.ISession.certKey) { // If it is basic authentication, we need to set the auth type. if (session.ISession.tokenType == null) { session.ISession.tokenType = SessConstants.TOKEN_TYPE_APIML; @@ -247,7 +247,7 @@ export default class ApimlAutoInitHandler extends BaseAutoInitHandler { if (!baseOverride.secure) { msg += `'${baseOverride.priorityValue}' overrides '${baseOverride.baseValue}' in`; } else { - msg += "secure value " + ((baseOverride.priorityValue != null) ? "overrides" : "may override"); + msg += "secure value " + (baseOverride.priorityValue != null ? "overrides" : "may override"); } msg += ` profile '${baseProfileName}'`; } @@ -510,7 +510,7 @@ export default class ApimlAutoInitHandler extends BaseAutoInitHandler { }); } } - for (const name of (baseProfile.secure || [])) { + for (const name of baseProfile.secure || []) { if (serviceProfile.secure?.includes(name)) { profileRpt.baseOverrides.push({ propName: name, secure: true }); } diff --git a/packages/cli/src/daemon/DaemonClient.ts b/packages/cli/src/daemon/DaemonClient.ts index 04f99dadec..27cc89b7c3 100644 --- a/packages/cli/src/daemon/DaemonClient.ts +++ b/packages/cli/src/daemon/DaemonClient.ts @@ -142,15 +142,15 @@ export class DaemonClient { let stdinData: Buffer; try { - jsonData = JSON.parse((jsonEndIdx !== -1 ? data.slice(0, jsonEndIdx + 1) : data).toString()); - stdinData = jsonEndIdx !== -1 ? data.slice(jsonEndIdx + 2) : undefined; + jsonData = JSON.parse((jsonEndIdx !== -1 ? data.subarray(0, jsonEndIdx + 1) : data).toString()); + stdinData = jsonEndIdx !== -1 ? data.subarray(jsonEndIdx + 2) : undefined; } catch (error) { Imperative.api.appLogger.logError(new ImperativeError({ msg: "Failed to parse data received from daemon client", causeErrors: error })); // eslint-disable-next-line @typescript-eslint/no-magic-numbers - Imperative.api.appLogger.trace("First 1024 bytes of daemon request:\n", data.slice(0, 1024).toString()); + Imperative.api.appLogger.trace("First 1024 bytes of daemon request:\n", data.subarray(0, 1024).toString()); const responsePayload: string = DaemonRequest.create({ stderr: "Failed to parse data received from daemon client:\n" + error.stack, exitCode: 1 diff --git a/packages/cli/src/daemon/disable/Disable.handler.ts b/packages/cli/src/daemon/disable/Disable.handler.ts index 95bc0ce61e..a7a0fbee8e 100644 --- a/packages/cli/src/daemon/disable/Disable.handler.ts +++ b/packages/cli/src/daemon/disable/Disable.handler.ts @@ -163,12 +163,12 @@ export default class DisableDaemonHandler implements ICommandHandler { ); return null; } - if (typeof(pidFileContents?.pid) === "number" && Number.isInteger(pidFileContents?.pid)) { + if (typeof pidFileContents?.pid === "number" && Number.isInteger(pidFileContents?.pid)) { return pidFileContents.pid; } else { Logger.getAppLogger().error(`Daemon PID file '${daemonPidFileNm}' ` + `contains invalid PID value = '${pidFileContents?.pid}' of type ` + - typeof(pidFileContents?.pid) + typeof pidFileContents?.pid ); } } catch(caughtErr) { diff --git a/packages/cli/src/provisioning/delete/instance/DeleteInstance.handler.ts b/packages/cli/src/provisioning/delete/instance/DeleteInstance.handler.ts index 11ee412517..f283a67b83 100644 --- a/packages/cli/src/provisioning/delete/instance/DeleteInstance.handler.ts +++ b/packages/cli/src/provisioning/delete/instance/DeleteInstance.handler.ts @@ -9,7 +9,6 @@ * */ -import { isNullOrUndefined } from "util"; import { IHandlerParameters } from "@zowe/imperative"; import { IProvisionedInstance, @@ -28,7 +27,7 @@ export default class Handler extends ZosmfBaseHandler { commandParameters.arguments.name ); const instances: IProvisionedInstance[] = registry["scr-list"]; - if (isNullOrUndefined(instances)) { + if (instances == null) { commandParameters.response.console.error( "No instance with name " + commandParameters.arguments.name + diff --git a/packages/cli/src/provisioning/list/instanceInfo/InstanceInfo.handler.ts b/packages/cli/src/provisioning/list/instanceInfo/InstanceInfo.handler.ts index 9b027ef161..1905a19da8 100644 --- a/packages/cli/src/provisioning/list/instanceInfo/InstanceInfo.handler.ts +++ b/packages/cli/src/provisioning/list/instanceInfo/InstanceInfo.handler.ts @@ -21,7 +21,6 @@ import { ProvisioningConstants, ListInstanceInfo } from "@zowe/provisioning-for-zowe-sdk"; -import { isNullOrUndefined } from "util"; import { ZosmfBaseHandler } from "@zowe/zosmf-for-zowe-sdk"; /** @@ -36,7 +35,7 @@ export default class InstanceInfoHandler extends ZosmfBaseHandler { const registry = await ListRegistryInstances.listFilteredRegistry(this.mSession, ProvisioningConstants.ZOSMF_VERSION, null, commandParameters.arguments.name); const instances: IProvisionedInstance[] = registry["scr-list"]; - if (isNullOrUndefined(instances)) { + if (instances == null) { commandParameters.response.console.error("No instance with name " + commandParameters.arguments.name + " was found"); } else if (instances.length === 1) { const id = instances.pop()["object-id"]; @@ -57,7 +56,7 @@ export default class InstanceInfoHandler extends ZosmfBaseHandler { private formatProvisionedInstanceSummaryOutput(instance: IProvisionedInstance, option: string): any[] { let prettifiedInstance: any = {}; - option = isNullOrUndefined(option) ? "ACTIONS" : option.toUpperCase(); + option = option == null ? "ACTIONS" : option.toUpperCase(); // Prettify the output switch (option) { diff --git a/packages/cli/src/provisioning/list/instanceVariables/InstanceVariables.handler.ts b/packages/cli/src/provisioning/list/instanceVariables/InstanceVariables.handler.ts index 79d4218378..0a483b17a1 100644 --- a/packages/cli/src/provisioning/list/instanceVariables/InstanceVariables.handler.ts +++ b/packages/cli/src/provisioning/list/instanceVariables/InstanceVariables.handler.ts @@ -9,7 +9,6 @@ * */ -import { isNullOrUndefined } from "util"; import { IHandlerParameters } from "@zowe/imperative"; import { ListInstanceVariables, @@ -35,7 +34,7 @@ export default class InstanceVariablesHandler extends ZosmfBaseHandler { commandParameters.arguments.name ); const instances: IProvisionedInstance[] = registry["scr-list"]; - if (isNullOrUndefined(instances)) { + if (instances == null) { commandParameters.response.console.error( "No instance with name " + commandParameters.arguments.name + diff --git a/packages/cli/src/provisioning/list/registry/RegistryInstances.handler.ts b/packages/cli/src/provisioning/list/registry/RegistryInstances.handler.ts index 45f1a08c7b..2adec99ffc 100644 --- a/packages/cli/src/provisioning/list/registry/RegistryInstances.handler.ts +++ b/packages/cli/src/provisioning/list/registry/RegistryInstances.handler.ts @@ -18,7 +18,6 @@ import { ProvisioningConstants, ListRegistryInstances } from "@zowe/provisioning-for-zowe-sdk"; -import { isNullOrUndefined } from "util"; import { ZosmfBaseHandler } from "@zowe/zosmf-for-zowe-sdk"; /** @@ -44,7 +43,7 @@ export default class RegistryInstancesHandler extends ZosmfBaseHandler { commandParameters.response.console.log(TextUtils.prettyJson(unique)); } else { commandParameters.response.console.log("z/OSMF Service Registry"); - if (!isNullOrUndefined(commandParameters.arguments.filterByType)) { + if (!(commandParameters.arguments.filterByType == null)) { commandParameters.response.console.log("\nShowing ONLY \"" + commandParameters.arguments.filterByType.toUpperCase() + "\" instance types."); } diff --git a/packages/cli/src/provisioning/perform/action/Action.handler.ts b/packages/cli/src/provisioning/perform/action/Action.handler.ts index 8eb05684d1..b4059b45b4 100644 --- a/packages/cli/src/provisioning/perform/action/Action.handler.ts +++ b/packages/cli/src/provisioning/perform/action/Action.handler.ts @@ -17,7 +17,6 @@ import { IProvisionedInstance, ListRegistryInstances } from "@zowe/provisioning-for-zowe-sdk"; -import { isNullOrUndefined } from "util"; import { ZosmfBaseHandler } from "@zowe/zosmf-for-zowe-sdk"; /** @@ -35,7 +34,7 @@ export default class ActionHandler extends ZosmfBaseHandler { commandParameters.arguments.name ); const instances: IProvisionedInstance[] = registry["scr-list"]; - if (isNullOrUndefined(instances)) { + if (instances== null) { commandParameters.response.console.error( "No instance with name " + commandParameters.arguments.name + diff --git a/packages/cli/src/provisioning/provision/template/Template.handler.ts b/packages/cli/src/provisioning/provision/template/Template.handler.ts index a7c5623a58..a87e6536e8 100644 --- a/packages/cli/src/provisioning/provision/template/Template.handler.ts +++ b/packages/cli/src/provisioning/provision/template/Template.handler.ts @@ -9,7 +9,6 @@ * */ -import { isNullOrUndefined } from "util"; import { IHandlerParameters, TextUtils } from "@zowe/imperative"; import { explainProvisionTemplateResponse, @@ -27,7 +26,7 @@ export default class Handler extends ZosmfBaseHandler { let usedOptionalParms: boolean = false; let arrayOfSystemNickNames: string[]; - if (!isNullOrUndefined(commandParameters.arguments.systemNickNames)) { + if (!(commandParameters.arguments.systemNickNames== null)) { arrayOfSystemNickNames = commandParameters.arguments.systemNickNames .split(",") .map((systemName: string) => { @@ -48,10 +47,10 @@ export default class Handler extends ZosmfBaseHandler { for (const property in provisionOptionalParams) { if ( - !isNullOrUndefined( + !( provisionOptionalParams[ property as keyof IProvisionOptionals - ] + ] == null ) ) { usedOptionalParms = true; diff --git a/packages/cli/src/workflows/archive/workflow/Archive.workflow.definition.ts b/packages/cli/src/workflows/archive/workflow/Archive.workflow.definition.ts index 593927712b..81da9775a8 100644 --- a/packages/cli/src/workflows/archive/workflow/Archive.workflow.definition.ts +++ b/packages/cli/src/workflows/archive/workflow/Archive.workflow.definition.ts @@ -28,10 +28,10 @@ export const Workflow: ICommandDefinition = { profile: { optional: ["zosmf"] }, - options: ([ + options: [ ArchiveOptions.workflowName, ArchiveOptions.workflowKey - ]), + ], outputFormatOptions: true, examples: [ { diff --git a/packages/cli/src/workflows/create/dataset/Dataset.definition.ts b/packages/cli/src/workflows/create/dataset/Dataset.definition.ts index f0412407b8..595ca321ee 100644 --- a/packages/cli/src/workflows/create/dataset/Dataset.definition.ts +++ b/packages/cli/src/workflows/create/dataset/Dataset.definition.ts @@ -37,7 +37,7 @@ export const DataSet: ICommandDefinition = { required: true } ], - options: ([ + options: [ CreateCommonOptions.dataSet, CreateCommonOptions.systemName, CreateCommonOptions.owner, @@ -48,7 +48,7 @@ export const DataSet: ICommandDefinition = { CreateCommonOptions.deleteCompleted, CreateCommonOptions.overwrite // CreateCommonOptions.zosmfVersion - ]), + ], outputFormatOptions: true, examples: [ { diff --git a/packages/cli/src/workflows/create/localfile/LocalFile.definition.ts b/packages/cli/src/workflows/create/localfile/LocalFile.definition.ts index ba7f203f65..aa70fb96d9 100644 --- a/packages/cli/src/workflows/create/localfile/LocalFile.definition.ts +++ b/packages/cli/src/workflows/create/localfile/LocalFile.definition.ts @@ -38,7 +38,7 @@ export const LocalFile: ICommandDefinition = { required: true } ], - options: ([ + options: [ CreateCommonOptions.localFile, CreateCommonOptions.systemName, CreateCommonOptions.owner, @@ -50,7 +50,7 @@ export const LocalFile: ICommandDefinition = { CreateCommonOptions.overwrite, CreateCommonOptions.remoteDirectory, CreateCommonOptions.keepFiles - ]), + ], outputFormatOptions: true, examples: [ { diff --git a/packages/cli/src/workflows/create/ussfile/UssFile.definition.ts b/packages/cli/src/workflows/create/ussfile/UssFile.definition.ts index ed8e6e858a..608810979b 100644 --- a/packages/cli/src/workflows/create/ussfile/UssFile.definition.ts +++ b/packages/cli/src/workflows/create/ussfile/UssFile.definition.ts @@ -37,7 +37,7 @@ export const UssFile: ICommandDefinition = { required: true } ], - options: ([ + options: [ CreateCommonOptions.ussFile, CreateCommonOptions.systemName, CreateCommonOptions.owner, @@ -48,7 +48,7 @@ export const UssFile: ICommandDefinition = { CreateCommonOptions.deleteCompleted, CreateCommonOptions.overwrite // CreateCommonOptions.zosmfVersion - ]), + ], outputFormatOptions: true, examples: [ { diff --git a/packages/cli/src/workflows/delete/Delete.archived.common.handler.ts b/packages/cli/src/workflows/delete/Delete.archived.common.handler.ts index 32caa0951b..e21a6427e5 100644 --- a/packages/cli/src/workflows/delete/Delete.archived.common.handler.ts +++ b/packages/cli/src/workflows/delete/Delete.archived.common.handler.ts @@ -76,10 +76,10 @@ export default class DeleteArchivedCommonHandler extends ZosmfBaseHandler { const successWfs: IWorkflowsInfo[] = []; const failedWfs: IWorkflowsInfo[] = []; this.arguments.workflowName.includes(".*") - ? (normalized = this.arguments.workflowName + ? normalized = this.arguments.workflowName .split(".*") - .join("*")) - : (wildCard = false); + .join("*") + : wildCard = false; listWorkflows = await ListArchivedWorkflows.listArchivedWorkflows( this.mSession @@ -92,14 +92,14 @@ export default class DeleteArchivedCommonHandler extends ZosmfBaseHandler { ) { // Swap between checks to avoid "glob pattern string required" error. wildCard - ? (check = minimatch( + ? check = minimatch( listWorkflows.archivedWorkflows[i].workflowName, normalized - )) - : (check = + ) + : check = listWorkflows.archivedWorkflows[i] .workflowName === - this.arguments.workflowName); + this.arguments.workflowName; if (check) { try { diff --git a/packages/cli/src/workflows/delete/deleteActiveWorkflow/DeleteActiveWorkflow.definition.ts b/packages/cli/src/workflows/delete/deleteActiveWorkflow/DeleteActiveWorkflow.definition.ts index af17d65326..c257f4e814 100644 --- a/packages/cli/src/workflows/delete/deleteActiveWorkflow/DeleteActiveWorkflow.definition.ts +++ b/packages/cli/src/workflows/delete/deleteActiveWorkflow/DeleteActiveWorkflow.definition.ts @@ -30,11 +30,11 @@ export const DeleteActiveWorkflow: ICommandDefinition = { profile: { optional: ["zosmf"] }, - options: ([ + options: [ DeleteWorkflowOptions.workflowKey, DeleteWorkflowOptions.workflowName - ]), + ], examples: [ { description: "To delete a workflow instance in z/OSMF with workflow key \"d043b5f1-adab-48e7-b7c3-d41cd95fa4b0\"", diff --git a/packages/cli/src/workflows/delete/deleteArchivedWorkflow/DeleteArchivedWorkflow.definition.ts b/packages/cli/src/workflows/delete/deleteArchivedWorkflow/DeleteArchivedWorkflow.definition.ts index 70ee9834d3..52a04d03d4 100644 --- a/packages/cli/src/workflows/delete/deleteArchivedWorkflow/DeleteArchivedWorkflow.definition.ts +++ b/packages/cli/src/workflows/delete/deleteArchivedWorkflow/DeleteArchivedWorkflow.definition.ts @@ -30,11 +30,11 @@ export const DeleteArchivedWorkflow: ICommandDefinition = { profile: { optional: ["zosmf"] }, - options: ([ + options: [ DeleteArchivedWorkflowOptions.workflowKey, DeleteArchivedWorkflowOptions.workflowName - ]), + ], examples: [ { description: "To delete an archived workflow from z/OSMF with workflow key \"d043b5f1-adab-48e7-b7c3-d41cd95fa4b0\"", diff --git a/packages/cli/src/workflows/list/activeWorkflowDetails/ActiveWorkflowDetails.definition.ts b/packages/cli/src/workflows/list/activeWorkflowDetails/ActiveWorkflowDetails.definition.ts index cd7217b466..c4e4a2eaee 100644 --- a/packages/cli/src/workflows/list/activeWorkflowDetails/ActiveWorkflowDetails.definition.ts +++ b/packages/cli/src/workflows/list/activeWorkflowDetails/ActiveWorkflowDetails.definition.ts @@ -29,14 +29,14 @@ export const ActiveWorkflowDetails: ICommandDefinition = { profile: { optional: ["zosmf"] }, - options: ([ + options: [ ActiveWorkflowDetailsCommonOptions.workflowName, ActiveWorkflowDetailsCommonOptions.workflowKey, ActiveWorkflowDetailsCommonOptions.listSteps, ActiveWorkflowDetailsCommonOptions.stepsSummaryOnly, ActiveWorkflowDetailsCommonOptions.listVariables, ActiveWorkflowDetailsCommonOptions.skipWorkflowSummary - ]), + ], examples: [ { description: "To list the details of an active workflow with key \"7c62c790-0340-86b2-61ce618d8f8c\" including its steps and variables", diff --git a/packages/cli/src/workflows/list/activeWorkflows/ActiveWorkflows.definition.ts b/packages/cli/src/workflows/list/activeWorkflows/ActiveWorkflows.definition.ts index e8f3abf095..75220eec8e 100644 --- a/packages/cli/src/workflows/list/activeWorkflows/ActiveWorkflows.definition.ts +++ b/packages/cli/src/workflows/list/activeWorkflows/ActiveWorkflows.definition.ts @@ -32,14 +32,14 @@ export const ActiveWorkflows: ICommandDefinition = { profile: { optional: ["zosmf"] }, - options: ([ + options: [ ListActiveWorkflowsOptions.workflowName, ListActiveWorkflowsOptions.category, ListActiveWorkflowsOptions.system, ListActiveWorkflowsOptions.owner, ListActiveWorkflowsOptions.vendor, ListActiveWorkflowsOptions.statusName - ]), + ], outputFormatOptions: true, examples: [ { diff --git a/packages/cli/src/workflows/list/retrieveWorkflowDefinition/RetrieveWorkflowDefinition.definition.ts b/packages/cli/src/workflows/list/retrieveWorkflowDefinition/RetrieveWorkflowDefinition.definition.ts index a0f9961de8..b118f02dcd 100644 --- a/packages/cli/src/workflows/list/retrieveWorkflowDefinition/RetrieveWorkflowDefinition.definition.ts +++ b/packages/cli/src/workflows/list/retrieveWorkflowDefinition/RetrieveWorkflowDefinition.definition.ts @@ -38,10 +38,10 @@ export const RetrieveWorkflowDefinition: ICommandDefinition = { required: true } ], - options: ([ + options: [ RetrieveWorkflowDefinitionCommonOptions.listSteps, RetrieveWorkflowDefinitionCommonOptions.listVariables - ]), + ], examples: [ { description: "To list the contents of a workflow definition stored in the UNIX file \"/user/dir/workflow.xml\"" + diff --git a/packages/cli/src/workflows/start/workflowFull/WorkflowFull.definition.ts b/packages/cli/src/workflows/start/workflowFull/WorkflowFull.definition.ts index 4f502241b3..757da41b5b 100644 --- a/packages/cli/src/workflows/start/workflowFull/WorkflowFull.definition.ts +++ b/packages/cli/src/workflows/start/workflowFull/WorkflowFull.definition.ts @@ -30,13 +30,13 @@ export const WorkflowFull: ICommandDefinition = { profile: { optional: ["zosmf"] }, - options: ([ + options: [ StartCommonOptions.workflowKey, StartCommonOptions.workflowName, StartCommonOptions.resolveConflict, StartCommonOptions.wait // StartCommonOptions.zosmfVersion, - ]), + ], examples: [ { description: "To start a workflow instance in z/OSMF with workflow key \"d043b5f1-adab-48e7-b7c3-d41cd95fa4b0\"", diff --git a/packages/cli/src/workflows/start/workflowStep/WorkflowStep.definition.ts b/packages/cli/src/workflows/start/workflowStep/WorkflowStep.definition.ts index d6d8ef1887..888c6a37a5 100644 --- a/packages/cli/src/workflows/start/workflowStep/WorkflowStep.definition.ts +++ b/packages/cli/src/workflows/start/workflowStep/WorkflowStep.definition.ts @@ -38,13 +38,13 @@ export const WorkflowStep: ICommandDefinition = { required: true } ], - options: ([ + options: [ StartCommonOptions.workflowKey, StartCommonOptions.workflowName, StartCommonOptions.resolveConflict, StartCommonOptions.performFollowingSteps // StartCommonOptions.zosmfVersion, - ]), + ], examples: [ { description: "To start step \"Step1\" only in a workflow instance in z/OSMF with workflow key \"d043b5f1-adab-48e7-b7c3-d41cd95fa4b0\"", diff --git a/packages/cli/src/zosconsole/issue/command/Command.handler.ts b/packages/cli/src/zosconsole/issue/command/Command.handler.ts index d442bd45a4..ca187f1a2a 100644 --- a/packages/cli/src/zosconsole/issue/command/Command.handler.ts +++ b/packages/cli/src/zosconsole/issue/command/Command.handler.ts @@ -11,7 +11,6 @@ import { IHandlerParameters, TextUtils } from "@zowe/imperative"; import { ICollectParms, IConsoleResponse, IIssueParms, IssueCommand } from "@zowe/zos-console-for-zowe-sdk"; -import { isNullOrUndefined } from "util"; import { ZosmfBaseHandler } from "@zowe/zosmf-for-zowe-sdk"; /** @@ -34,7 +33,7 @@ export default class Handler extends ZosmfBaseHandler { async: commandParameters.arguments["key-only"] === true ? "Y" : "N" }; - if (isNullOrUndefined(commandParameters.arguments["wait-to-collect"])) { + if (commandParameters.arguments["wait-to-collect"] == null) { response = await IssueCommand.issue(this.mSession, issueParms); } else { const collectParms: ICollectParms = { @@ -48,7 +47,7 @@ export default class Handler extends ZosmfBaseHandler { // Print out the response if (commandParameters.arguments["key-only"]) { - if (!isNullOrUndefined(response.lastResponseKey)) { + if (!(response.lastResponseKey == null)) { commandParameters.response.console.log(response.lastResponseKey); } } else { @@ -58,7 +57,7 @@ export default class Handler extends ZosmfBaseHandler { responseKey: response.lastResponseKey, cmdResponseUrl: response.cmdResponseUrl || undefined, keywordDetected: response.keywordDetected || - ((!isNullOrUndefined(commandParameters.arguments["solicited-keyword"])) ? false : undefined) + (!(commandParameters.arguments["solicited-keyword"] == null) ? false : undefined) }; commandParameters.response.console.log("Additional details:"); commandParameters.response.console.log("-------------------"); diff --git a/packages/cli/src/zosfiles/copy/dsclp/Dsclp.handler.ts b/packages/cli/src/zosfiles/copy/dsclp/Dsclp.handler.ts index f8873e1234..cd486f2315 100644 --- a/packages/cli/src/zosfiles/copy/dsclp/Dsclp.handler.ts +++ b/packages/cli/src/zosfiles/copy/dsclp/Dsclp.handler.ts @@ -58,7 +58,7 @@ export default class DsclpHandler extends ZosFilesBaseHandler { return async (targetDSN: string) => { const answer: string = await console.prompt( `The dataset '${targetDSN}' already exists on the target system. Do you want to overwrite it? [y/N]: `); - return (answer != null && (answer.toLowerCase() === "y" || answer.toLowerCase() === "yes")); + return answer != null && (answer.toLowerCase() === "y" || answer.toLowerCase() === "yes"); }; } } diff --git a/packages/cli/src/zosfiles/delete/uss/Uss.definition.ts b/packages/cli/src/zosfiles/delete/uss/Uss.definition.ts index 3021a288f2..2a8f09ca3b 100644 --- a/packages/cli/src/zosfiles/delete/uss/Uss.definition.ts +++ b/packages/cli/src/zosfiles/delete/uss/Uss.definition.ts @@ -40,7 +40,7 @@ export const UssDefinition: ICommandDefinition = { required: true } ], - options: ([ + options: [ { name: "for-sure", aliases: ["f"], @@ -55,7 +55,7 @@ export const UssDefinition: ICommandDefinition = { type: "boolean", required: false } - ]), + ], examples: [ { description: strings.EXAMPLES.EX1, diff --git a/packages/cli/src/zosfiles/edit/Edit.utils.ts b/packages/cli/src/zosfiles/edit/Edit.utils.ts index fca9b72870..86a7ec8d9f 100644 --- a/packages/cli/src/zosfiles/edit/Edit.utils.ts +++ b/packages/cli/src/zosfiles/edit/Edit.utils.ts @@ -72,9 +72,9 @@ export class EditUtilities { */ public static async buildTempPath(lfFile: ILocalFile, commandParameters: IHandlerParameters): Promise{ // find the appropriate extension for either uss or ds - const ussExt = (lfFile.fileType === 'uss' && lfFile.fileName.includes(".")) ? lfFile.fileName.split(".").pop() : ""; - let ext = "." + (lfFile.fileType === 'uss' ? ussExt : (commandParameters.arguments.extension ?? "txt")); - ext = (ext === "." ? "" : ext); + const ussExt = lfFile.fileType === 'uss' && lfFile.fileName.includes(".") ? lfFile.fileName.split(".").pop() : ""; + let ext = "." + (lfFile.fileType === 'uss' ? ussExt : commandParameters.arguments.extension ?? "txt"); + ext = ext === "." ? "" : ext; if (lfFile.fileType === 'uss'){ // Hash in a repeatable way if uss fileName (in case presence of special chars) const crypto = require("crypto"); @@ -114,7 +114,7 @@ export class EditUtilities { public static async promptUser(prompt: Prompt, conflict?: boolean): Promise{ let input; let promptText; - const promptPrefix = (conflict ? 'CONFLICT: ' : ''); + const promptPrefix = conflict ? 'CONFLICT: ' : ''; switch (prompt){ case Prompt.useStash: promptText = 'Keep and continue editing found temp file? y/n'; @@ -199,7 +199,7 @@ export class EditUtilities { name2: "remote file" }; - helper.browserView = (gui === GuiResult.GUI_AVAILABLE); + helper.browserView = gui === GuiResult.GUI_AVAILABLE; const lf: Buffer = await handlerDs.getFile1(session, commandParameters.arguments, helper); let mf: string | Buffer; diff --git a/packages/cli/src/zosjobs/list/jobs/Jobs.handler.ts b/packages/cli/src/zosjobs/list/jobs/Jobs.handler.ts index 686649b6fe..d425491f7c 100644 --- a/packages/cli/src/zosjobs/list/jobs/Jobs.handler.ts +++ b/packages/cli/src/zosjobs/list/jobs/Jobs.handler.ts @@ -30,8 +30,8 @@ export default class JobsHandler extends ZosmfBaseHandler { public async processCmd(params: IHandlerParameters): Promise { // Obtain the list of jobs - by default uses the session user and * for owner and prefix. - const owner: string = (params.arguments.owner != null) ? params.arguments.owner : null; - const prefix: string = (params.arguments.prefix != null) ? params.arguments.prefix : JobsConstants.DEFAULT_PREFIX; + const owner: string = params.arguments.owner != null ? params.arguments.owner : null; + const prefix: string = params.arguments.prefix != null ? params.arguments.prefix : JobsConstants.DEFAULT_PREFIX; const execData: boolean = params.arguments.execData; const jobs: IJob[] = await GetJobs.getJobsCommon(this.mSession, {owner, prefix, execData}); diff --git a/packages/core/__tests__/rest/__unit__/ZosmfRestClient.unit.test.ts b/packages/core/__tests__/rest/__unit__/ZosmfRestClient.unit.test.ts index 2089326747..b6495ffc59 100644 --- a/packages/core/__tests__/rest/__unit__/ZosmfRestClient.unit.test.ts +++ b/packages/core/__tests__/rest/__unit__/ZosmfRestClient.unit.test.ts @@ -33,7 +33,7 @@ describe("ZosmfRestClient tests", () => { shouldNotDelete: shouldNotDeleteMessage }) }; - const processedError = ((zosmfRestClient as any).processError(error)); + const processedError = (zosmfRestClient as any).processError(error); expect(processedError.causeErrors).not.toContain(shouldDeleteMessage); expect(processedError.causeErrors).toContain(shouldNotDeleteMessage); expect(processedError.msg.indexOf()).toEqual(-1); @@ -60,7 +60,7 @@ describe("ZosmfRestClient tests", () => { 'Allow Unauth Cert: true' + '}' }; - const processedError = ((zosmfRestClient as any).processError(error)); + const processedError = (zosmfRestClient as any).processError(error); expect(processedError.msg).toContain("Rest API failure with HTTP(S) status 401"); expect(processedError.msg).toContain("This operation requires authentication."); expect(processedError.msg).toContain("Username or password are not valid or expired."); @@ -93,7 +93,7 @@ describe("ZosmfRestClient tests", () => { 'Allow Unauth Cert: true' + '}' }; - const processedError = ((zosmfRestClient as any).processError(error)); + const processedError = (zosmfRestClient as any).processError(error); expect(processedError.msg).toContain("Rest API failure with HTTP(S) status 401"); expect(processedError.msg).toContain("This operation requires authentication."); expect(processedError.msg).toContain("Username or password are not valid or expired."); @@ -116,7 +116,7 @@ describe("ZosmfRestClient tests", () => { statusCode: RestConstants.HTTP_STATUS_401 }; const error: IImperativeError = { msg: "Fake token error" }; - const processedError = ((zosmfRestClient as any).processError(error)); + const processedError = (zosmfRestClient as any).processError(error); expect(processedError.msg).toContain("Fake token error"); expect(processedError.msg).toContain("This operation requires authentication."); expect(processedError.msg).toContain("Token is not valid or expired"); @@ -137,7 +137,7 @@ describe("ZosmfRestClient tests", () => { statusCode: RestConstants.HTTP_STATUS_401 }; const error: IImperativeError = { msg: "Fake token error" }; - const processedError = ((zosmfRestClient as any).processError(error)); + const processedError = (zosmfRestClient as any).processError(error); expect(processedError.msg).toContain("Fake token error"); expect(processedError.msg).toContain("This operation requires authentication."); expect(processedError.msg).toContain("Token type \"apimlAuthenticationToken\" requires base path to be defined."); @@ -157,7 +157,7 @@ describe("ZosmfRestClient tests", () => { statusCode: RestConstants.HTTP_STATUS_401 }; const error: IImperativeError = { msg: "Bad Cert" }; - const processedError = ((zosmfRestClient as any).processError(error)); + const processedError = (zosmfRestClient as any).processError(error); expect(processedError.msg).toContain("Bad Cert"); expect(processedError.msg).toContain("This operation requires authentication."); expect(processedError.msg).toContain("Certificate is not valid or expired."); diff --git a/packages/core/src/apiml/Services.ts b/packages/core/src/apiml/Services.ts index 8353a82332..3ddc0db76d 100644 --- a/packages/core/src/apiml/Services.ts +++ b/packages/core/src/apiml/Services.ts @@ -40,7 +40,7 @@ export class Services { ); // Get the APIML configs from the loaded imperative config - for (const apimlConfig of (ImperativeConfig.instance.loadedConfig.apimlConnLookup || [])) { + for (const apimlConfig of ImperativeConfig.instance.loadedConfig.apimlConnLookup || []) { apimlConfigs.push({ ...apimlConfig, connProfType: apimlConfig.connProfType || ImperativeConfig.instance.loadedConfig.profiles[0].type, @@ -50,7 +50,7 @@ export class Services { // Load APIML configs from all plugins for (const pluginCfgProps of PluginManagementFacility.instance.allPluginCfgProps) { - for (const apimlConfig of (pluginCfgProps.impConfig.apimlConnLookup || [])) { + for (const apimlConfig of pluginCfgProps.impConfig.apimlConnLookup || []) { apimlConfigs.push({ ...apimlConfig, connProfType: apimlConfig.connProfType || pluginCfgProps.impConfig.profiles[0].type, @@ -125,7 +125,7 @@ export class Services { profInfo.pluginConfigs.add(config); profInfo.gatewayUrlConflicts[config.pluginName] = [ - ...(profInfo.gatewayUrlConflicts[config.pluginName] || []), + ...profInfo.gatewayUrlConflicts[config.pluginName] || [], apiInfo.gatewayUrl ]; } diff --git a/packages/core/src/utils/CoreUtils.ts b/packages/core/src/utils/CoreUtils.ts index e6fd5555bf..a75104e42f 100644 --- a/packages/core/src/utils/CoreUtils.ts +++ b/packages/core/src/utils/CoreUtils.ts @@ -153,7 +153,7 @@ export function readStdin(): Promise { const stdinReadError: IImperativeError = { msg: "Error encountered while reading from stdin", causeErrors: error, - additionalDetails: (error == null) ? undefined : error.message + additionalDetails: error == null ? undefined : error.message }; reject(stdinReadError); }); diff --git a/packages/imperative/__tests__/__integration__/cmd/__tests__/integration/cli/chained/Cmd.cli.chainedhandlers.integration.test.ts b/packages/imperative/__tests__/__integration__/cmd/__tests__/integration/cli/chained/Cmd.cli.chainedhandlers.integration.test.ts index 1cc5e5ff90..511809045e 100644 --- a/packages/imperative/__tests__/__integration__/cmd/__tests__/integration/cli/chained/Cmd.cli.chainedhandlers.integration.test.ts +++ b/packages/imperative/__tests__/__integration__/cmd/__tests__/integration/cli/chained/Cmd.cli.chainedhandlers.integration.test.ts @@ -27,16 +27,16 @@ describe("cmd-cli chained handlers", () => { }); }); - const mainModule = process.mainModule; + const mainModule = require.main; beforeEach(() => { - (process.mainModule as any) = { + (require.main as any) = { filename: __filename }; }); afterEach(() => { - process.mainModule = mainModule; + require.main = mainModule; }); it("should not allow us to configure chained handlers that map arguments to indices beyond " + diff --git a/packages/imperative/__tests__/__integration__/imperative/__tests__/__integration__/api/env/EnvironmentalVariableSettings.integration.test.ts b/packages/imperative/__tests__/__integration__/imperative/__tests__/__integration__/api/env/EnvironmentalVariableSettings.integration.test.ts index 64e8e6cd83..56e053c14a 100644 --- a/packages/imperative/__tests__/__integration__/imperative/__tests__/__integration__/api/env/EnvironmentalVariableSettings.integration.test.ts +++ b/packages/imperative/__tests__/__integration__/imperative/__tests__/__integration__/api/env/EnvironmentalVariableSettings.integration.test.ts @@ -15,16 +15,16 @@ import { EnvironmentalVariableSettings, Imperative } from "../../../../../../../src"; describe("environmental variable integration", () => { - const mainModule = process.mainModule; + const mainModule = require.main; beforeEach(() => { - (process.mainModule as any) = { + (require.main as any) = { filename: __filename }; }); afterEach(() => { - process.mainModule = mainModule; + require.main = mainModule; }); it ("should be able to extract the values for the environment variables", () => { diff --git a/packages/imperative/__tests__/__integration__/imperative/__tests__/__integration__/cli/config/secure/cli.imperative-test-cli.config.secure.integration.subtest.ts b/packages/imperative/__tests__/__integration__/imperative/__tests__/__integration__/cli/config/secure/cli.imperative-test-cli.config.secure.integration.subtest.ts index db4771ff8b..8740412a69 100644 --- a/packages/imperative/__tests__/__integration__/imperative/__tests__/__integration__/cli/config/secure/cli.imperative-test-cli.config.secure.integration.subtest.ts +++ b/packages/imperative/__tests__/__integration__/imperative/__tests__/__integration__/cli/config/secure/cli.imperative-test-cli.config.secure.integration.subtest.ts @@ -95,7 +95,7 @@ describe("imperative-test-cli config secure", () => { const config = runCliScript(__dirname + "/../list/__scripts__/list_config.sh", TEST_ENVIRONMENT.workingDir, ["--rfj"]).stdout.toString(); const configJson = JSON.parse(config); const securedValue = await keytar.getPassword(service, "secure_config_props"); - const securedValueJson = (securedValue == null ? null : JSON.parse(Buffer.from(securedValue, "base64").toString())); + const securedValueJson = securedValue == null ? null : JSON.parse(Buffer.from(securedValue, "base64").toString()); const expectedSecuredValueJson: any = null; expect(response.stderr.toString()).toEqual(""); @@ -138,7 +138,7 @@ describe("imperative-test-cli config secure", () => { const config = runCliScript(__dirname + "/../list/__scripts__/list_config.sh", TEST_ENVIRONMENT.workingDir, ["--rfj"]).stdout.toString(); const configJson = JSON.parse(config); const securedValue = await keytar.getPassword(service, "secure_config_props"); - const securedValueJson = (securedValue == null ? null : JSON.parse(Buffer.from(securedValue, "base64").toString())); + const securedValueJson = securedValue == null ? null : JSON.parse(Buffer.from(securedValue, "base64").toString()); const expectedSecuredValueJson: any = null; expect(response.stderr.toString()).toEqual(""); diff --git a/packages/imperative/__tests__/__integration__/imperative/src/cli/config/FruitAutoInitHandler.ts b/packages/imperative/__tests__/__integration__/imperative/src/cli/config/FruitAutoInitHandler.ts index 37ed95fb0d..c4a42765bb 100644 --- a/packages/imperative/__tests__/__integration__/imperative/src/cli/config/FruitAutoInitHandler.ts +++ b/packages/imperative/__tests__/__integration__/imperative/src/cli/config/FruitAutoInitHandler.ts @@ -50,8 +50,8 @@ export default class FruitAutoInitHandler extends BaseAutoInitHandler { * @returns {Promise} The response from the auth service containing a token */ protected async doAutoInit(session: AbstractSession, params: IHandlerParameters): Promise { - const tokenType = (session.ISession.type === "basic") ? SessConstants.TOKEN_TYPE_JWT : session.ISession.tokenType; - const tokenValue = (session.ISession.type === "basic") ? + const tokenType = session.ISession.type === "basic" ? SessConstants.TOKEN_TYPE_JWT : session.ISession.tokenType; + const tokenValue = session.ISession.type === "basic" ? `${session.ISession.user}:${session.ISession.password}@fakeToken` : session.ISession.tokenValue; return { profiles: { diff --git a/packages/imperative/__tests__/src/TestLogger.ts b/packages/imperative/__tests__/src/TestLogger.ts index 2654508971..009d3e0366 100644 --- a/packages/imperative/__tests__/src/TestLogger.ts +++ b/packages/imperative/__tests__/src/TestLogger.ts @@ -11,7 +11,6 @@ import { LoggerConfigBuilder } from "../../src/logger/src/LoggerConfigBuilder"; import { Logger } from "../../src/logger/src/Logger"; -import { isNullOrUndefined } from "util"; import { IConfigLogging } from "../../src/logger/src/doc/IConfigLogging"; import * as path from "path"; @@ -82,10 +81,10 @@ export class TestLogger { * @memberof TestLogger */ public static getTestLogger(loggerFileName = TestLogger.getCallersFile()): Logger { - if (!isNullOrUndefined(TestLogger.testLogger)) { + if (!(TestLogger.testLogger == null)) { const categoryLogger: Logger = Logger.getLoggerCategory(loggerFileName); categoryLogger.level = "trace"; - if (isNullOrUndefined(categoryLogger)) { + if (categoryLogger == null) { const logFile: string = TestLogger.constructTestLogFile(loggerFileName); LoggerConfigBuilder.addFileAppender(LoggerConfigBuilder.getDefaultIConfigLogging(), loggerFileName, loggerFileName, logFile); diff --git a/packages/imperative/__tests__/src/TestUtil.ts b/packages/imperative/__tests__/src/TestUtil.ts index e1869e45c5..382a5460a4 100644 --- a/packages/imperative/__tests__/src/TestUtil.ts +++ b/packages/imperative/__tests__/src/TestUtil.ts @@ -18,7 +18,7 @@ * Module imports for TestUtils and testing infrastructure */ import { SpawnSyncReturns } from "child_process"; -import { inspect, isArray, isNullOrUndefined, isString } from "util"; +import { inspect } from "util"; import { Constants } from "../../src/constants"; import { ICommandResponse } from "../../src/cmd"; import { ICompareParms } from "./doc/ICompareParms"; @@ -178,7 +178,7 @@ export function executeTestCLICommand(cliBinModule: string, testContext: any, ar const commandExecutionMessage = "Executing " + nodeCommand + " " + args.join(" "); testLogger.info(commandExecutionMessage); - if (!isNullOrUndefined(testContext)) { + if (!(testContext == null)) { TestLogger.getTestLogger().debug(testContext, commandExecutionMessage); } const childEnv = JSON.parse(JSON.stringify(env)); // copy current env @@ -199,7 +199,7 @@ export function executeTestCLICommand(cliBinModule: string, testContext: any, ar const commandResultMessage = "Command output: \n" + child.output.join(" ") + "\nexit code: " + child.status; - if (!isNullOrUndefined(testContext)) { + if (!(testContext == null)) { TestLogger.getTestLogger().debug(commandResultMessage); } @@ -257,13 +257,13 @@ export function findExpectedOutputInCommand(cliBinModule: string, try { jsonOutput = JSON.parse(jsonCommand.stdout); } catch (e) { - const message = ("Error parsing JSON output: stdout:'" + jsonCommand.stdout + "' stderr: '" + jsonCommand.stderr + - "'\n status code " + jsonCommand.status) + " " + e.message; + const message = "Error parsing JSON output: stdout:'" + jsonCommand.stdout + "' stderr: '" + jsonCommand.stderr + + "'\n status code " + jsonCommand.status + " " + e.message; throw new Error(message); } dataObjectParser = new DataObjectParser(jsonOutput); // verify the dot-notation object passed in exists in the output JSON - if (isNullOrUndefined(dataObjectParser.get(jsonFieldForContent))) { + if (dataObjectParser.get(jsonFieldForContent) == null) { throw new Error("Requested field " + jsonFieldForContent + " was not available in the JSON response"); } } @@ -303,7 +303,7 @@ export function findExpectedOutputInCommand(cliBinModule: string, expectedContent = expectedContent || ""; - if (!isArray(expectedContent)) { + if (!Array.isArray(expectedContent)) { // convert single expected content to an array expectedContent = [expectedContent]; } @@ -326,7 +326,7 @@ export function findExpectedOutputInCommand(cliBinModule: string, } if (variationsToRun === CMD_TYPE.ALL || variationsToRun === CMD_TYPE.JSON) { let objectSummary = dataObjectParser.get(jsonFieldForContent); - if (!isString(objectSummary)) { + if (!(typeof objectSummary === 'string')) { objectSummary = inspect(objectSummary); } if (compareOptions.ignoreCase) { @@ -357,8 +357,8 @@ export function compareJsonObjects(actual: any, expected: any, parms?: ICompareP if (parms) { diffs.forEach((difference: any) => { const path = difference.path.join("."); - if (isNullOrUndefined(parms.ignorePaths) || (parms.ignorePaths.indexOf(path) < 0)) { - if (!isNullOrUndefined(parms.pathRegex)) { + if (parms.ignorePaths == undefined || parms.ignorePaths.indexOf(path) < 0) { + if (!(parms.pathRegex == undefined)) { let regexPathMatch: boolean = false; for (const reg of parms.pathRegex) { if (path === reg.path) { @@ -386,7 +386,7 @@ export function compareJsonObjects(actual: any, expected: any, parms?: ICompareP } }); } else { - if (!isNullOrUndefined(diffs)) { + if (!(diffs == undefined)) { returnDiffs = returnDiffs.concat(diffs); } } diff --git a/packages/imperative/__tests__/src/UnitTestUtils.ts b/packages/imperative/__tests__/src/UnitTestUtils.ts index 608a9e660e..a1f8033184 100644 --- a/packages/imperative/__tests__/src/UnitTestUtils.ts +++ b/packages/imperative/__tests__/src/UnitTestUtils.ts @@ -10,7 +10,6 @@ */ import { TestLogger } from "./TestLogger"; -import { isNullOrUndefined } from "util"; const fnArgs = require("get-function-arguments"); const cowsay = require("cowsay"); @@ -84,7 +83,7 @@ export class UnitTestUtils { // eslint-disable-next-line no-global-assign (it as any) = function (description: string, testFunc: (done?: any) => void) { const log = TestLogger.getTestLogger(); - if (isNullOrUndefined(testDetailHandler)) { + if (testDetailHandler == null) { testDetailHandler = function (details: any) { log.info("\n" + cowsay.say({ text: (details as any).description, diff --git a/packages/imperative/__tests__/src/example_clis/with_profiles/plans/ManyFieldValidationPlan.ts b/packages/imperative/__tests__/src/example_clis/with_profiles/plans/ManyFieldValidationPlan.ts index 8de8fcc66a..8e8b8d9d74 100644 --- a/packages/imperative/__tests__/src/example_clis/with_profiles/plans/ManyFieldValidationPlan.ts +++ b/packages/imperative/__tests__/src/example_clis/with_profiles/plans/ManyFieldValidationPlan.ts @@ -11,7 +11,6 @@ import { IProfileValidationPlan, IProfileValidationTask } from "../../../../../src/profiles"; import { IProfileValidationTaskResult } from "../../../../../src/profiles/src/validation/doc/IProfileValidationTaskResult"; -import { isNullOrUndefined } from "util"; export = class ManyFieldValidationPlan implements IProfileValidationPlan { @@ -22,7 +21,7 @@ export = class ManyFieldValidationPlan implements IProfileValidationPlan { name: "Tea color", taskFunction: (profile: any, done: (result: IProfileValidationTaskResult) => void) => { let result: IProfileValidationTaskResult; - if (isNullOrUndefined(profile.tea) || profile.tea !== "earl_grey") { + if (profile.tea == null || profile.tea !== "earl_grey") { result = { outcome: "Failed", resultDescription: "Tea was not earl_grey" diff --git a/packages/imperative/__tests__/src/packages/cmd/__integration__/CliProfileManager.integration.test.ts b/packages/imperative/__tests__/src/packages/cmd/__integration__/CliProfileManager.integration.test.ts index 8890b9e2c5..86025d97f7 100644 --- a/packages/imperative/__tests__/src/packages/cmd/__integration__/CliProfileManager.integration.test.ts +++ b/packages/imperative/__tests__/src/packages/cmd/__integration__/CliProfileManager.integration.test.ts @@ -21,12 +21,12 @@ import { bananaProfile, getConfig, PROFILE_TYPE } from "./CliProfileManagerTestC let TEST_ENVIRONMENT: ITestEnvironment; describe("Cli Profile Manager", () => { - const mainModule = process.mainModule; + const mainModule = require.main; const testLogger = TestLogger.getTestLogger(); const profileTypeOne = "banana"; beforeAll(async () => { - (process.mainModule as any) = { + (require.main as any) = { filename: __filename }; @@ -37,7 +37,7 @@ describe("Cli Profile Manager", () => { }); afterAll(() => { - process.mainModule = mainModule; + require.main = mainModule; TestUtil.rimraf(TEST_ENVIRONMENT.workingDir); }); diff --git a/packages/imperative/__tests__/src/packages/cmd/__integration__/SyntaxValidator.integration.test.ts b/packages/imperative/__tests__/src/packages/cmd/__integration__/SyntaxValidator.integration.test.ts index 1a375da621..66d773f89d 100644 --- a/packages/imperative/__tests__/src/packages/cmd/__integration__/SyntaxValidator.integration.test.ts +++ b/packages/imperative/__tests__/src/packages/cmd/__integration__/SyntaxValidator.integration.test.ts @@ -10,7 +10,6 @@ */ /* eslint-disable jest/expect-expect */ -import { isNullOrUndefined } from "util"; import { CommandProcessor, ICommandDefinition, ICommandResponse } from "../../../../../src/cmd/index"; import { ValidationTestCommand } from "../ValidationTestCommand"; import { Constants } from "../../../../../src/constants/index"; @@ -44,10 +43,10 @@ const DUMMY_PROFILE_TYPE_CONFIG: IProfileTypeConfiguration[] = [ ]; describe("Imperative should provide advanced syntax validation rules", function () { const home = __dirname + "/validationtests"; - const mainModule = process.mainModule; + const mainModule = require.main; beforeAll(function () { - (process.mainModule as any) = { + (require.main as any) = { filename: __filename }; return Imperative.init({ @@ -61,7 +60,7 @@ describe("Imperative should provide advanced syntax validation rules", function }); }); afterAll(() => { - process.mainModule = mainModule; + require.main = mainModule; rimraf(home); }); describe("Advanced syntax validation for commands using a test command", function () { @@ -105,7 +104,7 @@ describe("Imperative should provide advanced syntax validation rules", function } else { expect(completedResponse.success).toEqual(false); } - if (!isNullOrUndefined(expectedText) && expectedText.length > 0) { + if (!(expectedText == undefined) && expectedText.length > 0) { (completedResponse.stderr as any) = completedResponse.stderr.toString(); (completedResponse.stdout as any) = completedResponse.stdout.toString(); for (const text of expectedText) { diff --git a/packages/imperative/__tests__/src/packages/imperative/__integration__/ConfigLoading.integration.test.ts b/packages/imperative/__tests__/src/packages/imperative/__integration__/ConfigLoading.integration.test.ts index d6694e4b1f..f6a635a172 100644 --- a/packages/imperative/__tests__/src/packages/imperative/__integration__/ConfigLoading.integration.test.ts +++ b/packages/imperative/__tests__/src/packages/imperative/__integration__/ConfigLoading.integration.test.ts @@ -16,17 +16,17 @@ import { ImperativeConfig } from "../../../../../src/utilities"; describe("Imperative should validate config provided by the consumer", function () { const testDir = T.createUniqueTestDataDir("config-loading"); const packageJsonPath = testDir + "/package.json"; - const mainModule = process.mainModule; + const mainModule = require.main; beforeAll(() => { // Temporarily change the main module filename so that the test can work. - (process.mainModule as any) = { + (require.main as any) = { filename: packageJsonPath }; }); afterAll(() => { - process.mainModule = mainModule; + require.main = mainModule; T.unlinkSync(packageJsonPath); }); diff --git a/packages/imperative/src/cmd/__tests__/help/WebHelpGenerator.unit.test.ts b/packages/imperative/src/cmd/__tests__/help/WebHelpGenerator.unit.test.ts index 18a153e089..435c196aef 100644 --- a/packages/imperative/src/cmd/__tests__/help/WebHelpGenerator.unit.test.ts +++ b/packages/imperative/src/cmd/__tests__/help/WebHelpGenerator.unit.test.ts @@ -23,7 +23,7 @@ import { ICommandDefinition } from "../../../cmd/src/doc/ICommandDefinition"; describe("WebHelpGenerator", () => { describe("buildHelp", () => { - const mainModule = process.mainModule; + const mainModule = require.main; let moduleFileNm: string; let cliHome: string; let configForHelp: IImperativeConfig; @@ -101,10 +101,10 @@ describe("WebHelpGenerator", () => { rimraf.sync(cliHome); - /* process.mainModule.filename was null, so we must give it a value. + /* require.main.filename was null, so we must give it a value. * mainModule is a getter of a property, so we mock the property. */ - (process.mainModule as any) = { + (require.main as any) = { filename: moduleFileNm }; @@ -113,7 +113,7 @@ describe("WebHelpGenerator", () => { }); afterAll(() => { - process.mainModule = mainModule; + require.main = mainModule; rimraf.sync(cliHome); }); diff --git a/packages/imperative/src/cmd/__tests__/help/WebHelpManager.unit.test.ts b/packages/imperative/src/cmd/__tests__/help/WebHelpManager.unit.test.ts index c49cbfe41a..884b59998f 100644 --- a/packages/imperative/src/cmd/__tests__/help/WebHelpManager.unit.test.ts +++ b/packages/imperative/src/cmd/__tests__/help/WebHelpManager.unit.test.ts @@ -41,7 +41,7 @@ describe("WebHelpManager", () => { const webHelpDirNm = path.join(mockCliHome, "web-help"); const impCfg: ImperativeConfig = ImperativeConfig.instance; const cmdReponse = new CommandResponse({ silent: false }); - const mainModule = process.mainModule; + const mainModule = require.main; let opener: any; let instPluginsFileNm: string; let oldProcessEnv: any; @@ -55,7 +55,7 @@ describe("WebHelpManager", () => { /* getResolvedCmdTree calls getCallerLocation, and we need it to return some string. * getCallerLocation is a getter of a property, so we mock the property. */ - (process.mainModule as any) = { + (require.main as any) = { filename: "FakeCli" }; @@ -81,7 +81,7 @@ describe("WebHelpManager", () => { }); afterAll(() => { - process.mainModule = mainModule; + require.main = mainModule; rimraf.sync(mockCliHome); }); diff --git a/packages/imperative/src/cmd/src/CommandPreparer.ts b/packages/imperative/src/cmd/src/CommandPreparer.ts index 5903f2533a..ef35c13c69 100644 --- a/packages/imperative/src/cmd/src/CommandPreparer.ts +++ b/packages/imperative/src/cmd/src/CommandPreparer.ts @@ -511,10 +511,10 @@ export class CommandPreparer { if (definition.profile.optional) { types = types.concat(definition.profile.optional); } - const profileOptions: string[] = types.filter((type) => ( + const profileOptions: string[] = types.filter((type) => !Array.isArray(definition.profile.suppressOptions) ? true : definition.profile.suppressOptions.indexOf(type) < 0 - )); + ); profileOptions.forEach((profOpt) => { const [profOptName, profOptAlias] = ProfileUtils.getProfileOptionAndAlias(profOpt); @@ -617,7 +617,7 @@ export class CommandPreparer { /** * Either merge/append or overwrite the field in the definition. */ - const cloned = (trait.value != null) ? + const cloned = trait.value != null ? JSON.parse(JSON.stringify(trait.value)) : undefined; if (cloned == null) { diff --git a/packages/imperative/src/cmd/src/CommandProcessor.ts b/packages/imperative/src/cmd/src/CommandProcessor.ts index 96338a5008..5adfe0ad0e 100644 --- a/packages/imperative/src/cmd/src/CommandProcessor.ts +++ b/packages/imperative/src/cmd/src/CommandProcessor.ts @@ -186,7 +186,7 @@ export class CommandProcessor { ImperativeExpect.toNotBeNullOrUndefined(params, `${CommandProcessor.ERROR_TAG} No parameters supplied to constructor.`); this.mDefinition = params.definition; ImperativeExpect.toNotBeNullOrUndefined(this.mDefinition, `${CommandProcessor.ERROR_TAG} No command definition supplied.`); - this.mFullDefinition = (params.fullDefinition == null) ? this.mDefinition : params.fullDefinition; + this.mFullDefinition = params.fullDefinition == null ? this.mDefinition : params.fullDefinition; this.mHelpGenerator = params.helpGenerator; ImperativeExpect.toNotBeNullOrUndefined(this.mHelpGenerator, `${CommandProcessor.ERROR_TAG} No help generator supplied.`); if (this.mDefinition.type === "command" && this.mDefinition.chainedHandlers == null) { @@ -347,7 +347,7 @@ export class CommandProcessor { `${CommandProcessor.ERROR_TAG} invoke(): No parameters supplied.`); ImperativeExpect.toNotBeNullOrUndefined(params.arguments, `${CommandProcessor.ERROR_TAG} invoke(): No command arguments supplied.`); - params.responseFormat = (params.responseFormat == null) ? "default" : params.responseFormat; + params.responseFormat = params.responseFormat == null ? "default" : params.responseFormat; const responseOptions: string[] = ["default", "json"]; ImperativeExpect.toBeOneOf(params.responseFormat, responseOptions, `${CommandProcessor.ERROR_TAG} invoke(): Response format must be one of the following: ${responseOptions.join(",")}`); @@ -502,11 +502,11 @@ export class CommandProcessor { } // array processing else { - if ((prepared.args[positionalName] != null && - (Array.isArray(prepared.args[positionalName])) && + if (prepared.args[positionalName] != null && + Array.isArray(prepared.args[positionalName]) && prepared.args[positionalName][0] != null && typeof prepared.args[positionalName][0] === "string" && - (prepared.args[positionalName][0].toUpperCase() === this.promptPhrase.toUpperCase()))) { + prepared.args[positionalName][0].toUpperCase() === this.promptPhrase.toUpperCase()) { // prompt has been requested for a positional this.log.debug("Prompting for positional %s which was requested by passing the value %s", prepared.args[positionalName][0], this.promptPhrase); @@ -549,10 +549,10 @@ export class CommandProcessor { } // array processing else { - if (((Array.isArray(prepared.args[option.name])) && + if (Array.isArray(prepared.args[option.name]) && prepared.args[option.name][0] != null && typeof prepared.args[option.name][0] === "string" && - (prepared.args[option.name][0].toUpperCase() === this.promptPhrase.toUpperCase()))) { + prepared.args[option.name][0].toUpperCase() === this.promptPhrase.toUpperCase()) { // prompt has been requested for an --option this.log.debug("Prompting for option %s which was requested by passing the value %s", option.name, this.promptPhrase); @@ -889,8 +889,8 @@ export class CommandProcessor { // changes made to Yargs let args: ICommandArguments = CliUtils.buildBaseArgs(commandArguments); this.log.trace(`Base set of arguments from Yargs parse:\n${inspect(args)}`); - let allOpts = (this.definition.options != null) ? this.definition.options : []; - allOpts = (this.definition.positionals != null) ? allOpts.concat(this.definition.positionals) : allOpts; + let allOpts = this.definition.options != null ? this.definition.options : []; + allOpts = this.definition.positionals != null ? allOpts.concat(this.definition.positionals) : allOpts; this.log.trace(`Set of options and positionals defined on the command:\n${inspect(allOpts)}`); // Extract options supplied via environment variables - we must do this before we load profiles to @@ -956,11 +956,11 @@ export class CommandProcessor { // If both case properties are present in the profile, use the one that matches // the option name explicitly - const value = (profileKebab !== undefined && profileCamel !== undefined) ? - ((opt.name === cases.kebabCase) ? profileKebab : profileCamel) : - ((profileKebab !== undefined) ? profileKebab : profileCamel); + const value = profileKebab !== undefined && profileCamel !== undefined ? + opt.name === cases.kebabCase ? profileKebab : profileCamel : + profileKebab !== undefined ? profileKebab : profileCamel; const keys = CliUtils.setOptionValue(opt.name, - ("aliases" in opt) ? opt.aliases : [], + "aliases" in opt ? opt.aliases : [], value ); fromCnfg = { ...fromCnfg, ...keys }; @@ -1007,7 +1007,7 @@ export class CommandProcessor { for (const option of allOpts) { if (option.defaultValue != null && args[option.name] == null && !args[Constants.DISABLE_DEFAULTS_OPTION]) { const defaultedArgs = CliUtils.setOptionValue(option.name, - ("aliases" in option) ? option.aliases : [], + "aliases" in option ? option.aliases : [], option.defaultValue ); args = CliUtils.mergeArguments(args, defaultedArgs); @@ -1047,7 +1047,7 @@ export class CommandProcessor { return new CommandResponse({ definition: this.definition, args: params.arguments, - silent: (params.silent == null) ? false : params.silent, + silent: params.silent == null ? false : params.silent, responseFormat: params.responseFormat, stream: ImperativeConfig.instance.daemonContext?.stream }); diff --git a/packages/imperative/src/cmd/src/handlers/FailedCommandHandler.ts b/packages/imperative/src/cmd/src/handlers/FailedCommandHandler.ts index 2e9d7c4e7b..2aa939681b 100644 --- a/packages/imperative/src/cmd/src/handlers/FailedCommandHandler.ts +++ b/packages/imperative/src/cmd/src/handlers/FailedCommandHandler.ts @@ -23,7 +23,7 @@ export default class FailedCommandHandler implements ICommandHandler { params.response.console.error(params.arguments.error.stack); } const additionalDetails: string = params.arguments.error ? params.arguments.error.message : undefined; - const msg: string = (additionalDetails == null) ? params.arguments.failureMessage : additionalDetails + "\n" + const msg: string = additionalDetails == null ? params.arguments.failureMessage : additionalDetails + "\n" + params.arguments.failureMessage; const failedCommandError: IImperativeError = { msg, diff --git a/packages/imperative/src/cmd/src/help/DefaultHelpGenerator.ts b/packages/imperative/src/cmd/src/help/DefaultHelpGenerator.ts index c772d077c2..cca39d086e 100644 --- a/packages/imperative/src/cmd/src/help/DefaultHelpGenerator.ts +++ b/packages/imperative/src/cmd/src/help/DefaultHelpGenerator.ts @@ -133,7 +133,7 @@ export class DefaultHelpGenerator extends AbstractHelpGenerator { if (!this.mProduceMarkdown && this.mCommandDefinition.name != null && this.mCommandDefinition.name.length > 0) { helpText += "\n" + this.buildHeader("COMMAND NAME"); - helpText += (DefaultHelpGenerator.HELP_INDENT + this.mCommandDefinition.name); + helpText += DefaultHelpGenerator.HELP_INDENT + this.mCommandDefinition.name; if (this.mCommandDefinition.aliases != null && this.mCommandDefinition.aliases.length > 0) { helpText += " | " + this.mCommandDefinition.aliases.join(" | "); } @@ -270,7 +270,7 @@ export class DefaultHelpGenerator extends AbstractHelpGenerator { // Place the positional parameters. if (this.mCommandDefinition.positionals != null) { for (const positional of this.mCommandDefinition.positionals) { - usage += " " + ((positional.required) ? "<" + positional.name + ">" : "[" + positional.name + "]"); + usage += " " + (positional.required ? "<" + positional.name + ">" : "[" + positional.name + "]"); } } // Append the options segment @@ -393,9 +393,9 @@ export class DefaultHelpGenerator extends AbstractHelpGenerator { this.dimGrey("{{italic}}(" + this.explainType(positional.type) + "){{italic}}"); let fullDescription = positional.description; if (positional.regex) { - fullDescription += (DefaultHelpGenerator.HELP_INDENT + + fullDescription += DefaultHelpGenerator.HELP_INDENT + DefaultHelpGenerator.HELP_INDENT + "Must match regular expression: {{codeBegin}}" - + positional.regex + "{{codeEnd}}\n\n"); + + positional.regex + "{{codeEnd}}\n\n"; } positionalsHelpText += this.buildOptionText(positionalString, fullDescription); } @@ -501,7 +501,7 @@ export class DefaultHelpGenerator extends AbstractHelpGenerator { examplesText = this.mCommandDefinition.examples.map((example) => { const prefix = example.prefix != null ? example.prefix + "{{space}} " : ""; const exampleHyphen = this.mProduceMarkdown ? "" : "-"; - const options = (example.options.length > 0) ? ` ${example.options}` : ""; + const options = example.options.length > 0 ? ` ${example.options}` : ""; const description = this.mProduceMarkdown ? this.escapeMarkdown(example.description) : example.description; let exampleText = "{{bullet}}" + exampleHyphen + " {{space}}" + description + ":\n\n"; if (this.skipTextWrap) { diff --git a/packages/imperative/src/cmd/src/help/WebHelpGenerator.ts b/packages/imperative/src/cmd/src/help/WebHelpGenerator.ts index f040a9a7e4..856962a4ff 100644 --- a/packages/imperative/src/cmd/src/help/WebHelpGenerator.ts +++ b/packages/imperative/src/cmd/src/help/WebHelpGenerator.ts @@ -291,7 +291,7 @@ export class WebHelpGenerator { } // Generate HTML anchor in front of header - const anchorText = ``; + const anchorText = ``; if (definition.type === "group") { // Remove sections from HTML that would be redundant @@ -349,7 +349,7 @@ export class WebHelpGenerator { id: helpHtmlFile, text: [definition.name, ...definition.aliases].join(" | ") }; - parentNode.children = [...(parentNode.children || []), childNode]; + parentNode.children = [...parentNode.children || [], childNode]; definition.aliases.forEach((alias: string) => { if (alias !== definition.name) { diff --git a/packages/imperative/src/cmd/src/help/WebHelpManager.ts b/packages/imperative/src/cmd/src/help/WebHelpManager.ts index 6e5a431505..161b0959b2 100644 --- a/packages/imperative/src/cmd/src/help/WebHelpManager.ts +++ b/packages/imperative/src/cmd/src/help/WebHelpManager.ts @@ -101,7 +101,7 @@ export class WebHelpManager implements IWebHelpManager { const newMetadata: MaybePackageMetadata = this.checkIfMetadataChanged(); if (newMetadata !== null) { - (new WebHelpGenerator(this.mFullCommandTree, ImperativeConfig.instance, this.webHelpDir)). + new WebHelpGenerator(this.mFullCommandTree, ImperativeConfig.instance, this.webHelpDir). buildHelp(cmdResponse); this.writePackageMetadata(newMetadata); } @@ -121,7 +121,7 @@ export class WebHelpManager implements IWebHelpManager { } try { - const htmlFile = (inContext != null) ? "launcher.html" : "index.html"; + const htmlFile = inContext != null ? "launcher.html" : "index.html"; ProcessUtils.openInDefaultApp(`file:///${this.webHelpDir}/${htmlFile}`); } catch (e) { throw new ImperativeError({ diff --git a/packages/imperative/src/cmd/src/help/abstract/AbstractHelpGenerator.ts b/packages/imperative/src/cmd/src/help/abstract/AbstractHelpGenerator.ts index e2dc6ead07..90aad23474 100644 --- a/packages/imperative/src/cmd/src/help/abstract/AbstractHelpGenerator.ts +++ b/packages/imperative/src/cmd/src/help/abstract/AbstractHelpGenerator.ts @@ -10,7 +10,7 @@ */ import { TextUtils } from "../../../../utilities"; -import { format, isNullOrUndefined } from "util"; +import { format } from "util"; import { ImperativeError } from "../../../../error/src/ImperativeError"; import { Logger } from "../../../../logger/src/Logger"; import { IHelpGeneratorParms } from "../doc/IHelpGeneratorParms"; @@ -33,7 +33,7 @@ export abstract class AbstractHelpGenerator implements IHelpGenerator { * @returns {string} the formatted/colored header */ public static formatHelpHeader(header: string, indent: string = " ", color: string): string { - if (isNullOrUndefined(header) || header.trim().length === 0) { + if (header == null || header.trim().length === 0) { throw new ImperativeError({ msg: "Null or empty header provided; could not be formatted." }); @@ -102,7 +102,7 @@ export abstract class AbstractHelpGenerator implements IHelpGenerator { // TODO - rework these parameter (and possible the help generator scheme) constructor(defaultParms: IHelpGeneratorFactoryParms, commandParms: IHelpGeneratorParms) { - if (isNullOrUndefined(commandParms.commandDefinition) || isNullOrUndefined(commandParms.fullCommandTree)) { + if (commandParms.commandDefinition == null || commandParms.fullCommandTree == null) { throw new ImperativeError({ msg: "Error initializing help generator. The command definition or command definition tree was null or undefined.", additionalDetails: JSON.stringify(commandParms.commandDefinition) + "\n\n" + JSON.stringify(commandParms.fullCommandTree) @@ -124,13 +124,13 @@ export abstract class AbstractHelpGenerator implements IHelpGenerator { public getOptionAndAliasesString(option: ICommandOptionDefinition, caseSensitive?: boolean): string { let aliasString = ""; - if (!isNullOrUndefined(option.aliases) && option.aliases.length > 0 && - (option.aliases.join("").trim().length !== 0)) { + if (!(option.aliases == null) && option.aliases.length > 0 && + option.aliases.join("").trim().length !== 0) { const formattedOptAliases = []; aliasString += " | "; for (const alias of option.aliases) { - if (!isNullOrUndefined(alias) && alias.length > 0) { + if (!(alias == null) && alias.length > 0) { formattedOptAliases.push("{{codeBegin}}" + (alias.length === 1 ? "-" : "--") + alias + "{{codeEnd}}"); } @@ -160,7 +160,7 @@ export abstract class AbstractHelpGenerator implements IHelpGenerator { this.groupToOption = {}; this.optionToDescription = {}; - if (isNullOrUndefined(this.mCommandDefinition.options)) { + if (this.mCommandDefinition.options == null) { return; } for (const option of this.mCommandDefinition.options.filter(opt => !opt.hidden)) { @@ -188,9 +188,9 @@ export abstract class AbstractHelpGenerator implements IHelpGenerator { } protected getCaseSensitiveFlagByOptionName(optionName: string): boolean { - if (!isNullOrUndefined(this.mCommandDefinition.customize) && - !isNullOrUndefined(this.mCommandDefinition.customize.commandStatement) && - !isNullOrUndefined(this.mCommandDefinition.customize.commandStatement.children)) { + if (!(this.mCommandDefinition.customize == null) && + !(this.mCommandDefinition.customize.commandStatement == null) && + !(this.mCommandDefinition.customize.commandStatement.children == null)) { for (const child of this.mCommandDefinition.customize.commandStatement.children) { if (child.name.toUpperCase() === optionName.toUpperCase()) { return child.caseSensitive; @@ -201,7 +201,7 @@ export abstract class AbstractHelpGenerator implements IHelpGenerator { } protected renderHelp(help: string): string { - if (isNullOrUndefined(help)) { + if (help == null) { throw new ImperativeError({ msg: "Help unable to be rendered - the supplied help text was null or undefined." }); diff --git a/packages/imperative/src/cmd/src/help/abstract/AbstractHelpGeneratorFactory.ts b/packages/imperative/src/cmd/src/help/abstract/AbstractHelpGeneratorFactory.ts index dc522c3367..6d1ae689db 100644 --- a/packages/imperative/src/cmd/src/help/abstract/AbstractHelpGeneratorFactory.ts +++ b/packages/imperative/src/cmd/src/help/abstract/AbstractHelpGeneratorFactory.ts @@ -11,7 +11,6 @@ import { IHelpGeneratorFactoryParms } from "../doc/IHelpGeneratorFactoryParms"; import { IHelpGeneratorFactory } from "../doc/IHelpGeneratorFactory"; -import { isNullOrUndefined } from "util"; import { IHelpGeneratorParms } from "../doc/IHelpGeneratorParms"; import { IHelpGenerator } from "../doc/IHelpGenerator"; import { ImperativeExpect } from "../../../../expect"; @@ -69,7 +68,7 @@ export abstract class AbstractHelpGeneratorFactory implements IHelpGeneratorFact this.mRootCommandName = parms.rootCommandName; // TODO - what is the default color for imperative? this.mPrimaryHighlightColor = parms.primaryHighlightColor || "yellow"; - this.mProduceMarkdown = isNullOrUndefined(parms.produceMarkdown) ? false : parms.produceMarkdown; + this.mProduceMarkdown = parms.produceMarkdown == null ? false : parms.produceMarkdown; } /** diff --git a/packages/imperative/src/cmd/src/profiles/CliProfileManager.ts b/packages/imperative/src/cmd/src/profiles/CliProfileManager.ts index 86ec374457..f71896074e 100644 --- a/packages/imperative/src/cmd/src/profiles/CliProfileManager.ts +++ b/packages/imperative/src/cmd/src/profiles/CliProfileManager.ts @@ -10,7 +10,7 @@ */ import { ImperativeExpect } from "../../../expect"; -import { inspect, isNullOrUndefined } from "util"; +import { inspect } from "util"; import { Logger } from "../../../logger"; import { ImperativeError } from "../../../error"; import { ICommandProfileTypeConfiguration } from "../doc/profiles/definition/ICommandProfileTypeConfiguration"; @@ -83,11 +83,11 @@ export class CliProfileManager { ImperativeExpect.toNotBeNullOrUndefined(parms, "Profile Manager input parms not supplied."); ImperativeExpect.keysToBeDefinedAndNonBlank(parms, ["type"], "No profile type supplied on the profile manager parameters."); - this.mLogger = isNullOrUndefined(parms.logger) ? this.mLogger : parms.logger; + this.mLogger = parms.logger == null ? this.mLogger : parms.logger; this.mProfileType = parms.type; this.mProfileTypeConfigurations = parms.typeConfigurations; this.mProductDisplayName = parms.productDisplayName; - if (isNullOrUndefined(this.profileTypeConfigurations) || this.profileTypeConfigurations.length === 0) { + if (this.profileTypeConfigurations == null || this.profileTypeConfigurations.length === 0) { throw new ImperativeError({ msg: "V1 profiles are no longer read from disk. " + "You can supply the profile type configurations to the profile manager constructor." @@ -176,7 +176,7 @@ export class CliProfileManager { ImperativeExpect.keysToBeDefined(typeConfiguration, ["schema"], `The profile type configuration document for ` + `"${typeConfiguration.type}" does NOT contain a schema.`); this.validateSchema(typeConfiguration.schema, typeConfiguration.type); - if (!isNullOrUndefined(typeConfiguration.dependencies)) { + if (!(typeConfiguration.dependencies == null)) { ImperativeExpect.toBeAnArray(typeConfiguration.dependencies, `The profile type configuration for "${typeConfiguration.type}" contains a "dependencies" property, ` + `but it is not an array (ill-formed)`); diff --git a/packages/imperative/src/cmd/src/profiles/CommandProfileLoader.ts b/packages/imperative/src/cmd/src/profiles/CommandProfileLoader.ts index 643ea4a2d5..516b688a9f 100644 --- a/packages/imperative/src/cmd/src/profiles/CommandProfileLoader.ts +++ b/packages/imperative/src/cmd/src/profiles/CommandProfileLoader.ts @@ -63,7 +63,7 @@ export class CommandProfileLoader { const err: string = "Could not construct the profile loader."; ImperativeExpect.toNotBeNullOrUndefined(commandDefinition, `${err} No command definition supplied.`); this.mCommandDefinition = commandDefinition; - ImperativeExpect.toBeEqual((logger instanceof Logger), true, `${err} The "logger" supplied is not of type Logger.`); + ImperativeExpect.toBeEqual(logger instanceof Logger, true, `${err} The "logger" supplied is not of type Logger.`); this.mLog = logger; this.log.trace(`Profile loader created for command: ${commandDefinition.name}`); } diff --git a/packages/imperative/src/cmd/src/profiles/CommandProfiles.ts b/packages/imperative/src/cmd/src/profiles/CommandProfiles.ts index b75bd5cff4..919d384350 100644 --- a/packages/imperative/src/cmd/src/profiles/CommandProfiles.ts +++ b/packages/imperative/src/cmd/src/profiles/CommandProfiles.ts @@ -51,7 +51,7 @@ export class CommandProfiles { // Ensure the correctness of each map entry map.forEach((value, key) => { ImperativeExpect.toBeAnArray(value, `${err} The "profiles" supplied for type "${key}" is NOT an array.`); - ImperativeExpect.toBeEqual((value.length > 0), true, `${err} No profiles supplied for type "${key}".`); + ImperativeExpect.toBeEqual(value.length > 0, true, `${err} No profiles supplied for type "${key}".`); }); this.mMap = map; @@ -75,7 +75,7 @@ export class CommandProfiles { // Ensure the correctness of each map entry map.forEach((value, key) => { ImperativeExpect.toBeAnArray(value, `${err} The "profiles" supplied for type "${key}" is NOT an array.`); - ImperativeExpect.toBeEqual((value.length > 0), true, `${err} No profiles supplied for type "${key}".`); + ImperativeExpect.toBeEqual(value.length > 0, true, `${err} No profiles supplied for type "${key}".`); }); this.mMetaMap = map; } diff --git a/packages/imperative/src/cmd/src/response/CommandResponse.ts b/packages/imperative/src/cmd/src/response/CommandResponse.ts index 32eab10b3c..736def62a4 100644 --- a/packages/imperative/src/cmd/src/response/CommandResponse.ts +++ b/packages/imperative/src/cmd/src/response/CommandResponse.ts @@ -215,18 +215,18 @@ export class CommandResponse implements ICommandResponseApi { * @memberof CommandResponse */ constructor(params?: ICommandResponseParms) { - this.mControl = (params == null) ? {} : params; + this.mControl = params == null ? {} : params; this.mArguments = this.mControl.args; this.mDefinition = this.mControl.definition; this.mPrimaryTextColor = this.mControl.primaryTextColor == null ? this.mPrimaryTextColor : this.mControl.primaryTextColor; ImperativeExpect.toNotBeEqual(this.mPrimaryTextColor.trim(), "", `${CommandResponse.RESPONSE_ERR_TAG} The primary text color supplied is blank. Must provide a valid color.`); const formats: string[] = ["json", "default"]; - this.mResponseFormat = (this.mControl.responseFormat == null) ? "default" : this.mControl.responseFormat; + this.mResponseFormat = this.mControl.responseFormat == null ? "default" : this.mControl.responseFormat; ImperativeExpect.toBeOneOf(this.mResponseFormat, formats, `${CommandResponse.RESPONSE_ERR_TAG} Response format invalid. Valid formats: "${formats.join(",")}"`); - this.mSilent = (this.mControl.silent == null) ? false : this.mControl.silent; - this.mProgressBarSpinnerChars = (this.mControl.progressBarSpinner == null) ? this.mProgressBarSpinnerChars : this.mControl.progressBarSpinner; + this.mSilent = this.mControl.silent == null ? false : this.mControl.silent; + this.mProgressBarSpinnerChars = this.mControl.progressBarSpinner == null ? this.mProgressBarSpinnerChars : this.mControl.progressBarSpinner; this.mStream = params ? params.stream : undefined; } @@ -251,8 +251,8 @@ export class CommandResponse implements ICommandResponseApi { `Output format must be one of the following: ${OptionConstants.RESPONSE_FORMAT_TYPES.toString()}`); // If the output is an array and the length is 0 or - do nothing - if ((Array.isArray(format.output) && format.output.length === 0) || - (Object.keys(format.output).length === 0 && format.output.constructor === Object)) { + if (Array.isArray(format.output) && format.output.length === 0 || + Object.keys(format.output).length === 0 && format.output.constructor === Object) { return; } @@ -271,11 +271,11 @@ export class CommandResponse implements ICommandResponseApi { // Depending on the command definition and arguments, override the format options if (outer.mDefinition != null && outer.mDefinition.outputFormatOptions != null) { - formatCopy.format = (outer.mArguments != null && outer.mArguments.responseFormatType != null) ? + formatCopy.format = outer.mArguments != null && outer.mArguments.responseFormatType != null ? outer.mArguments.responseFormatType : formatCopy.format; - formatCopy.fields = (outer.mArguments != null && outer.mArguments.responseFormatFilter != null) ? + formatCopy.fields = outer.mArguments != null && outer.mArguments.responseFormatFilter != null ? outer.mArguments.responseFormatFilter : formatCopy.fields; - formatCopy.header = (outer.mArguments != null && outer.mArguments.responseFormatHeader != null) ? + formatCopy.header = outer.mArguments != null && outer.mArguments.responseFormatHeader != null ? outer.mArguments.responseFormatHeader : formatCopy.header; } @@ -303,7 +303,7 @@ export class CommandResponse implements ICommandResponseApi { private formatOutput(params: ICommandOutputFormat, response: CommandResponse) { // If a single filter is specified, save the field the data was extracted from - const extractedFrom = (params.fields != null && params.fields.length === 1 && typeof params.output !== "string") ? + const extractedFrom = params.fields != null && params.fields.length === 1 && typeof params.output !== "string" ? params.fields[0] : undefined; // If filter fields are present, filter the object @@ -386,7 +386,7 @@ export class CommandResponse implements ICommandResponseApi { // Build the table table = TextUtils.getTable(params.output, "yellow", CommandResponse.MAX_COLUMN_WIDTH, - (params.header != null) ? params.header : false); + params.header != null ? params.header : false); } catch (tableErr) { throw new ImperativeError({ msg: `Error formulating table for command response. ` + @@ -423,8 +423,8 @@ export class CommandResponse implements ICommandResponseApi { private errorDetails(params: ICommandOutputFormat, appliedTo: string, extractedFrom?: string): string { return `The format type of "${params.format}" can only be applied to ${appliedTo}.\n` + `The data being formatted is of type ` + - `"${(Array.isArray(params.output)) ? "array" : typeof params.output}".` + - `${(extractedFrom != null) ? `\nNote that the data being formatted was extracted from property "${extractedFrom}" ` + + `"${Array.isArray(params.output) ? "array" : typeof params.output}".` + + `${extractedFrom != null ? `\nNote that the data being formatted was extracted from property "${extractedFrom}" ` + `because that field was specified as the single filter.` : ""}`; } @@ -647,7 +647,7 @@ export class CommandResponse implements ICommandResponseApi { * completely overwritten. */ public setObj(data: any, merge = false) { - outer.mData = (merge) ? DeepMerge(outer.mData, data) : data; + outer.mData = merge ? DeepMerge(outer.mData, data) : data; } /** @@ -731,7 +731,7 @@ export class CommandResponse implements ICommandResponseApi { this.mProgressBarStdoutStartIndex = outer.mStdout.length; this.mProgressBarStderrStartIndex = outer.mStderr.length; this.mProgressTask = params.task; - let stream: any = (params.stream == null) ? process.stderr : params.stream; + let stream: any = params.stream == null ? process.stderr : params.stream; const arbitraryColumnSize = 80; // if we have an outer stream (e.g. socket connection for daemon mode) use it @@ -766,7 +766,7 @@ export class CommandResponse implements ICommandResponseApi { // Set the interval based on the params of the default this.mProgressBarInterval = setInterval(this.updateProgressBar.bind(this), - (params.updateInterval == null) ? this.mProgressBarPollFrequency : params.updateInterval); + params.updateInterval == null ? this.mProgressBarPollFrequency : params.updateInterval); } } @@ -870,7 +870,7 @@ export class CommandResponse implements ICommandResponseApi { * @memberof CommandResponse */ public bufferStdout(data: Buffer | string) { - this.mStdout = Buffer.concat([this.mStdout, ((data instanceof Buffer) ? data : Buffer.from(data))]); + this.mStdout = Buffer.concat([this.mStdout, data instanceof Buffer ? data : Buffer.from(data)]); } /** @@ -880,7 +880,7 @@ export class CommandResponse implements ICommandResponseApi { * @memberof CommandResponse */ public bufferStderr(data: Buffer | string) { - this.mStderr = Buffer.concat([this.mStderr, ((data instanceof Buffer) ? data : Buffer.from(data))]); + this.mStderr = Buffer.concat([this.mStderr, data instanceof Buffer ? data : Buffer.from(data)]); } /** diff --git a/packages/imperative/src/cmd/src/syntax/SyntaxValidator.ts b/packages/imperative/src/cmd/src/syntax/SyntaxValidator.ts index fbf48708d3..1569f9c69f 100644 --- a/packages/imperative/src/cmd/src/syntax/SyntaxValidator.ts +++ b/packages/imperative/src/cmd/src/syntax/SyntaxValidator.ts @@ -10,7 +10,7 @@ */ import * as fs from "fs"; -import { inspect, isNullOrUndefined } from "util"; +import { inspect } from "util"; import { syntaxErrorHeader } from "../../../messages"; import { CliUtils } from "../../../utilities/src/CliUtils"; import { Constants } from "../../../constants"; @@ -124,11 +124,11 @@ export class SyntaxValidator { * Prevent empty string options, regardless of if they are * required or not e.g. --zosmf-profile (without a value) */ - if (!isNullOrUndefined(this.mCommandDefinition.options)) { + if (!this.mCommandDefinition.options == null) { for (const option of this.mCommandDefinition.options) { - if (!isNullOrUndefined(commandArguments[option.name]) && + if (!(commandArguments[option.name] == null) && (option.type !== "stringOrEmpty" && commandArguments[option.name] === "") || - (option.type !== "boolean" && commandArguments[option.name] === true)) { + option.type !== "boolean" && commandArguments[option.name] === true) { valid = false; this.emptyValueError(responseObject, option.name); } @@ -143,7 +143,7 @@ export class SyntaxValidator { * Imperative gets a chance to detect them. */ if (this.mCommandDefinition.type === "command" && - !isNullOrUndefined(this.mCommandDefinition.name) && + !(this.mCommandDefinition.name == null) && commandArguments._.length > expectedUnderscoreLength) { valid = false; this.unknownPositionalError(responseObject, commandArguments, expectedUnderscoreLength); @@ -202,14 +202,14 @@ export class SyntaxValidator { * we would like to have more syntax validation and control over the error message. Therefore, the mark them * as "optional" to yargs and enforce the required here. */ - if (!isNullOrUndefined(this.mCommandDefinition.positionals) && this.mCommandDefinition.positionals.length > 0) { + if (!(this.mCommandDefinition.positionals == null) && this.mCommandDefinition.positionals.length > 0) { const missingPositionals: ICommandPositionalDefinition[] = []; for (const positional of this.mCommandDefinition.positionals) { if (positional.required) { // Use replace to trim possible ... which is used for arrays const positionalName = positional.name.replace("...", ""); if (commandArguments[positionalName] == null || - (positional.type !== "stringOrEmpty" && commandArguments[positionalName] === "")) { + positional.type !== "stringOrEmpty" && commandArguments[positionalName] === "") { missingPositionals.push(positional); } } @@ -223,10 +223,10 @@ export class SyntaxValidator { * Validate that the positional parameter matches the supplied regex. */ for (const positional of this.mCommandDefinition.positionals) { - if (!isNullOrUndefined(commandArguments[positional.name])) { + if (!(commandArguments[positional.name] == null)) { if (positional.regex) { - if (isNullOrUndefined(commandArguments[positional.name] - .toString().match(new RegExp(positional.regex)))) { + if (commandArguments[positional.name] + .toString().match(new RegExp(positional.regex) == null)) { valid = false; this.positionalParameterInvalid(positional, commandArguments[positional.name], responseObject); @@ -236,9 +236,9 @@ export class SyntaxValidator { valid = this.validateNumeric(commandArguments[positional.name], positional, responseObject, true) && valid; } - if (!isNullOrUndefined(positional.stringLengthRange) && - !isNullOrUndefined(positional.stringLengthRange[0]) && - !isNullOrUndefined(positional.stringLengthRange[1])) { + if (!(positional.stringLengthRange == null) && + !(positional.stringLengthRange[0] == null) && + !(positional.stringLengthRange[1] == null)) { valid = this.validateOptionValueLength(positional, commandArguments[positional.name], responseObject, true) && valid; } } @@ -261,7 +261,7 @@ export class SyntaxValidator { * If omitting an option implies that some other option must be specified, * validate that with any missing options */ - if (!isNullOrUndefined(optionDef.absenceImplications) && optionDef.absenceImplications.length > 0) { + if (!(optionDef.absenceImplications == null) && optionDef.absenceImplications.length > 0) { for (const implication of optionDef.absenceImplications) { if (!util.optionWasSpecified(optionName, this.mCommandDefinition, commandArguments) && !util.optionWasSpecified(implication, this.mCommandDefinition, commandArguments)) { @@ -293,7 +293,7 @@ export class SyntaxValidator { } // check if the value of the option conforms to the allowableValues (if any) - if (!isNullOrUndefined(optionDef.allowableValues)) { + if (!(optionDef.allowableValues == null)) { // Make a copy of optionDef, so that modifications below are only used in this place const optionDefCopy: ICommandOptionDefinition = JSON.parse(JSON.stringify(optionDef)); // Use modified regular expressions for allowable values to check and to generate error @@ -320,7 +320,7 @@ export class SyntaxValidator { }); } - if (!isNullOrUndefined(optionDef.conflictsWith) && optionDef.conflictsWith.length > 0) { + if (!(optionDef.conflictsWith == null) && optionDef.conflictsWith.length > 0) { for (const conflict of optionDef.conflictsWith) { if (util.optionWasSpecified(conflict, this.mCommandDefinition, commandArguments)) { this.optionCombinationInvalidError(optionDef, @@ -333,7 +333,7 @@ export class SyntaxValidator { /** * Check validity of implications */ - if (!isNullOrUndefined(optionDef.implies) && optionDef.implies.length > 0) { + if (!(optionDef.implies == null) && optionDef.implies.length > 0) { for (const implication of optionDef.implies) { if (!util.optionWasSpecified(implication, this.mCommandDefinition, commandArguments)) { this.optionDependencyError(optionDef, this.mOptionDefinitionsMap[implication], @@ -346,7 +346,7 @@ export class SyntaxValidator { /** * Check validity of 'implication alternatives' (.impliesOneOf()) */ - if (!isNullOrUndefined(optionDef.impliesOneOf) && optionDef.impliesOneOf.length > 0) { + if (!(optionDef.impliesOneOf == null) && optionDef.impliesOneOf.length > 0) { let implicationSatisfied = false; for (const implication of optionDef.impliesOneOf) { if (util.optionWasSpecified(implication, this.mCommandDefinition, commandArguments)) { @@ -395,9 +395,9 @@ export class SyntaxValidator { /** * Validate option values */ - if (!isNullOrUndefined(optionDef.numericValueRange) && - !isNullOrUndefined(optionDef.numericValueRange[0]) && - !isNullOrUndefined(optionDef.numericValueRange[1])) { + if (!(optionDef.numericValueRange == null) && + !(optionDef.numericValueRange[0] == null) && + !(optionDef.numericValueRange[1] == null)) { valid = this.validateOptionValueRange(optionDef, commandArguments[optionDef.name], responseObject) && valid; } @@ -405,9 +405,9 @@ export class SyntaxValidator { /** * Validate option lengths */ - if (!isNullOrUndefined(optionDef.stringLengthRange) && - !isNullOrUndefined(optionDef.stringLengthRange[0]) && - !isNullOrUndefined(optionDef.stringLengthRange[1])) { + if (!(optionDef.stringLengthRange == null) && + !(optionDef.stringLengthRange[0] == null) && + !(optionDef.stringLengthRange[1] == null)) { valid = this.validateOptionValueLength(optionDef, commandArguments[optionDef.name], responseObject) && valid; } @@ -422,14 +422,14 @@ export class SyntaxValidator { } } - if (!isNullOrUndefined(optionDef.valueImplications) && Object.keys(optionDef.valueImplications).length > 0) { + if (!(optionDef.valueImplications == null) && Object.keys(optionDef.valueImplications).length > 0) { for (const value of Object.keys(optionDef.valueImplications)) { const implicationObject: ICommandOptionValueImplications = optionDef.valueImplications[value]; - if ((implicationObject.isCaseSensitive && - commandArguments[optionName] === value) || - (!implicationObject.isCaseSensitive && - commandArguments[optionName].toUpperCase() === value.toUpperCase())) { + if (implicationObject.isCaseSensitive && + commandArguments[optionName] === value || + !implicationObject.isCaseSensitive && + commandArguments[optionName].toUpperCase() === value.toUpperCase()) { for (const impliedOption of implicationObject.impliedOptionNames) { if (!util.optionWasSpecified(impliedOption, this.mCommandDefinition, commandArguments)) { @@ -504,7 +504,7 @@ export class SyntaxValidator { if (!isPositional) { const def = optionDefinition as ICommandOptionDefinition; - aliasString = (!isNullOrUndefined(def.aliases) && def.aliases.length > 0) ? + aliasString = !(def.aliases == null) && def.aliases.length > 0 ? "(" + def.aliases.map((alias: string) => { return this.getDashFormOfOption(alias); }).join(",") + ")" : ""; @@ -615,8 +615,8 @@ export class SyntaxValidator { let valid: boolean = true; const min = optionDefinition.numericValueRange[0]; const max = optionDefinition.numericValueRange[1]; - if ((optionValue < min) || - (optionValue > max)) { + if (optionValue < min || + optionValue > max) { responseObject.console.errorHeader(syntaxErrorHeader.message); const msg: string = responseObject.console.error("Invalid numeric value specified for option:\n{{option}}\n\n" + "You specified:\n{{value}}\n\n" + @@ -705,7 +705,7 @@ export class SyntaxValidator { {message: msg, optionInError: optionDefinition.name, definition: optionDefinition}); } - const valid = (duplicateValuesSet.size === 0); + const valid = duplicateValuesSet.size === 0; return valid; } diff --git a/packages/imperative/src/cmd/src/syntax/__mocks__/SyntaxValidator.ts b/packages/imperative/src/cmd/src/syntax/__mocks__/SyntaxValidator.ts index 4c99f87760..f30aa4d2a9 100644 --- a/packages/imperative/src/cmd/src/syntax/__mocks__/SyntaxValidator.ts +++ b/packages/imperative/src/cmd/src/syntax/__mocks__/SyntaxValidator.ts @@ -19,7 +19,7 @@ export class SyntaxValidator { if (commandArguments.syntaxThrow === true) { throw new Error("Syntax validation error!"); } else { - validationComplete({ valid: (commandArguments.valid == null) ? false : commandArguments.valid as boolean }); + validationComplete({ valid: commandArguments.valid == null ? false : commandArguments.valid as boolean }); } }); } diff --git a/packages/imperative/src/cmd/src/syntax/__tests__/SyntaxValidator.unit.test.ts b/packages/imperative/src/cmd/src/syntax/__tests__/SyntaxValidator.unit.test.ts index 1619a3fa51..2d8c31330c 100644 --- a/packages/imperative/src/cmd/src/syntax/__tests__/SyntaxValidator.unit.test.ts +++ b/packages/imperative/src/cmd/src/syntax/__tests__/SyntaxValidator.unit.test.ts @@ -13,7 +13,7 @@ import { TextUtils } from "../../../../utilities"; jest.mock("../../../../imperative/src/Imperative"); -import { inspect, isNullOrUndefined } from "util"; +import { inspect } from "util"; import { TestLogger } from "../../../../../__tests__/src/TestLogger"; import { CommandResponse, ICommandDefinition, ICommandValidatorResponse } from "../../../"; import { ValidationTestCommand } from "../../../../../__tests__/src/packages/cmd/ValidationTestCommand"; @@ -52,7 +52,7 @@ describe("Imperative should provide advanced syntax validation rules", () => { } else { expect(validationResponse.valid).toEqual(false); } - if (!isNullOrUndefined(expectedText) && expectedText.length > 0) { + if (!(expectedText == null) && expectedText.length > 0) { const fullText = response.buildJsonResponse().stdout.toString() + response.buildJsonResponse().stderr.toString(); for (const text of expectedText) { expect(fullText).toContain(text); diff --git a/packages/imperative/src/cmd/src/utils/CommandUtils.ts b/packages/imperative/src/cmd/src/utils/CommandUtils.ts index c8959de62e..42537df640 100644 --- a/packages/imperative/src/cmd/src/utils/CommandUtils.ts +++ b/packages/imperative/src/cmd/src/utils/CommandUtils.ts @@ -10,7 +10,6 @@ */ import { Arguments } from "yargs"; -import { isNullOrUndefined } from "util"; import { ICommandDefinition } from "../doc/ICommandDefinition"; import { ICommandOptionDefinition } from "../doc/option/ICommandOptionDefinition"; import { CliUtils } from "../../../utilities/src/CliUtils"; @@ -56,9 +55,9 @@ export class CommandUtils { for (const option of options) { aliases.push(...option.aliases); } - if (!isNullOrUndefined(commandDefinition.positionals)) { + if (!(commandDefinition.positionals == null)) { for (const positional of commandDefinition.positionals) { - if (!isNullOrUndefined(commandArguments[positional.name])) { + if (!(commandArguments[positional.name] == null)) { command += " \"" + commandArguments[positional.name] + "\""; } } @@ -84,7 +83,7 @@ export class CommandUtils { */ public static optionWasSpecified(optionName: string, commandDefinition: ICommandDefinition, args: ICommandArguments["args"]): boolean { const optionDef = CommandUtils.getOptionDefinitionFromName(optionName, commandDefinition); - if (isNullOrUndefined(optionDef)) { + if (optionDef == null) { // if it's not an option, it's not specified return false; } @@ -92,7 +91,7 @@ export class CommandUtils { return args[optionName] !== undefined; } else { - return !isNullOrUndefined(args[optionName]); + return !(args[optionName] == null); } } @@ -106,7 +105,7 @@ export class CommandUtils { public static getOptionDefinitionFromName(optionName: string, commandDefinition: ICommandDefinition) { let optionDef: ICommandOptionDefinition; - if (!isNullOrUndefined(commandDefinition.options)) { + if (!(commandDefinition.options == null)) { for (const option of commandDefinition.options) { if (option.name === optionName) { optionDef = option; diff --git a/packages/imperative/src/cmd/src/utils/SharedOptions.ts b/packages/imperative/src/cmd/src/utils/SharedOptions.ts index 0ac8ca54ca..4fc7f07171 100644 --- a/packages/imperative/src/cmd/src/utils/SharedOptions.ts +++ b/packages/imperative/src/cmd/src/utils/SharedOptions.ts @@ -13,7 +13,6 @@ import { Arguments } from "yargs"; import { ICommandNodeType } from "../doc/ICommandDefinition"; import { IImperativeError, ImperativeError } from "../../../error"; import { Constants } from "../../../constants"; -import { isNullOrUndefined } from "util"; import { CommandResponse } from "../response/CommandResponse"; import { Logger } from "../../../logger"; @@ -97,7 +96,7 @@ export class SharedOptions { const stdinReadError: IImperativeError = { msg: "Error encountered while reading from stdin", causeErrors: error, - additionalDetails: (isNullOrUndefined(error)) ? undefined : error.message + additionalDetails: error == null ? undefined : error.message }; done(stdinReadError, true); // don't call done, we don't want to continue on an error diff --git a/packages/imperative/src/cmd/src/yargs/AbstractCommandYargs.ts b/packages/imperative/src/cmd/src/yargs/AbstractCommandYargs.ts index 78b4621b6e..a179f2786b 100644 --- a/packages/imperative/src/cmd/src/yargs/AbstractCommandYargs.ts +++ b/packages/imperative/src/cmd/src/yargs/AbstractCommandYargs.ts @@ -210,7 +210,7 @@ export abstract class AbstractCommandYargs { */ public constructDefinitionTree(): ICommandDefinition { const parents: GroupCommandYargs[] = this.parents; - return (parents[0]) ? JSON.parse(JSON.stringify(parents[0].definition)) : {}; + return parents[0] ? JSON.parse(JSON.stringify(parents[0].definition)) : {}; } /** @@ -234,7 +234,7 @@ export abstract class AbstractCommandYargs { if (responses != null && responses.length > 0) { for (const response of responses) { // use the maximum exit code from all command responses - if (exitCode == null || (response.exitCode != null && response.exitCode > exitCode)) { + if (exitCode == null || response.exitCode != null && response.exitCode > exitCode) { exitCode = response.exitCode; } } @@ -259,7 +259,7 @@ export abstract class AbstractCommandYargs { * object is recreated/changed based on the currently specified CLI options */ let tempDefinition: ICommandDefinition; - if (args[Constants.HELP_EXAMPLES] && (this.definition.children.length > 0)) { + if (args[Constants.HELP_EXAMPLES] && this.definition.children.length > 0) { tempDefinition = this.getDepthExamples(); } @@ -283,7 +283,7 @@ export abstract class AbstractCommandYargs { daemonContext: ImperativeConfig.instance.daemonContext }).help(new CommandResponse({ silent: false, - responseFormat: (args[Constants.JSON_OPTION] || false) ? "json" : "default", + responseFormat: args[Constants.JSON_OPTION] || false ? "json" : "default", stream: ImperativeConfig.instance.daemonContext?.stream })); } catch (helpErr) { @@ -323,7 +323,7 @@ export abstract class AbstractCommandYargs { commandDefinition.examples = []; } - lodashDeep.deepMapValues(this.definition.children, ((value: any, path: any) => { + lodashDeep.deepMapValues(this.definition.children, (value: any, path: any) => { if(path.endsWith("name") && (path.includes("options") || path.includes("positionals"))) { /* Do nothing */ } else if(path.endsWith("name") && path.includes("children")) { @@ -359,13 +359,13 @@ export abstract class AbstractCommandYargs { if(tempDescPath === tempOpPath ) { let commandExamples: ICommandExampleDefinition; - (tempPre && (tempDescPath === tempPrePath)) ? + tempPre && tempDescPath === tempPrePath ? commandDefinition.examples[commandDefinition.examples.length - 1].prefix = tempPre :commandExamples = {description: tempDesc, options: tempOp}; if(commandExamples) {commandDefinition.examples.push(commandExamples);} } } - })); + }); return commandDefinition; } @@ -395,7 +395,7 @@ export abstract class AbstractCommandYargs { }).webHelp(fullCommandName + "_" + this.definition.name, new CommandResponse({ silent: false, - responseFormat: (args[Constants.JSON_OPTION] || false) ? "json" : "default", + responseFormat: args[Constants.JSON_OPTION] || false ? "json" : "default", stream: ImperativeConfig.instance.daemonContext?.stream }) ); diff --git a/packages/imperative/src/cmd/src/yargs/CommandYargs.ts b/packages/imperative/src/cmd/src/yargs/CommandYargs.ts index 92a3098916..0546c04998 100644 --- a/packages/imperative/src/cmd/src/yargs/CommandYargs.ts +++ b/packages/imperative/src/cmd/src/yargs/CommandYargs.ts @@ -10,7 +10,7 @@ */ import { Arguments, Argv, Options } from "yargs"; -import { isNullOrUndefined, inspect } from "util"; +import { inspect } from "util"; import { Constants } from "../../../constants"; import { IYargsResponse } from "./doc/IYargsResponse"; import { AbstractCommandYargs, YargsCommandCompleted } from "./AbstractCommandYargs"; @@ -32,13 +32,13 @@ export class CommandYargs extends AbstractCommandYargs { * @param {ICommandOptionDefinition[]} zoweOptions: The option definition document array. */ public static defineOptionsToYargs(yargsInstance: Argv, zoweOptions: ICommandOptionDefinition[]): void { - if (!isNullOrUndefined(zoweOptions)) { + if (!(zoweOptions == null)) { for (const option of zoweOptions) { const definition: Options = { alias: option.aliases, description: option.description }; - if (!isNullOrUndefined(option.type)) { + if (!(option.type == null)) { // don't let yargs handle any types that we are validating ourselves // and don't use custom types as the yargs type since yargs won't understand if (option.type !== "number" && @@ -119,7 +119,7 @@ export class CommandYargs extends AbstractCommandYargs { const handlerDefinition: any[] = []; for (const parent of this.parents) { const definition: any = parent.definition; - if (!isNullOrUndefined(definition.handler)) { + if (!(definition.handler == null)) { handlerDefinition.push(definition); } } @@ -176,11 +176,11 @@ export class CommandYargs extends AbstractCommandYargs { private buildPositionalString(): string { if (this.definition.positionals) { this.log.debug("Building positional string from: " + this.definition.name); - let yargPositionalSyntax: string = (this.definition.positionals.length > 0) ? " " : ""; + let yargPositionalSyntax: string = this.definition.positionals.length > 0 ? " " : ""; this.definition.positionals.forEach((positional) => { - yargPositionalSyntax += ("[" + positional.name + "] "); + yargPositionalSyntax += "[" + positional.name + "] "; }); - const posString: string = yargPositionalSyntax.substr(0, yargPositionalSyntax.lastIndexOf(" ")); + const posString: string = yargPositionalSyntax.substring(0, yargPositionalSyntax.lastIndexOf(" ")); this.log.debug("Positional String: " + posString); return posString; } else { @@ -210,7 +210,7 @@ export class CommandYargs extends AbstractCommandYargs { if (!AbstractCommandYargs.STOP_YARGS) { // Determine if we should print JSON - const printJson: boolean = (index === handlers.length - 1) && + const printJson: boolean = index === handlers.length - 1 && (argsForHandler[Constants.JSON_OPTION] as boolean); // Protect against issues allocating the command processor @@ -232,7 +232,7 @@ export class CommandYargs extends AbstractCommandYargs { }).invoke({ arguments: argsForHandler, silent: false, - responseFormat: (printJson) ? "json" : "default" + responseFormat: printJson ? "json" : "default" }).then((commandHandlerResponse) => { /** * Push the responses - If an error occurs, reject the promise with the error response. @@ -258,7 +258,7 @@ export class CommandYargs extends AbstractCommandYargs { } catch (processorError) { const response = new CommandResponse({ silent: false, - responseFormat: (printJson) ? "json" : "default", + responseFormat: printJson ? "json" : "default", stream: ImperativeConfig.instance.daemonContext?.stream }); response.failed(); diff --git a/packages/imperative/src/cmd/src/yargs/YargsConfigurer.ts b/packages/imperative/src/cmd/src/yargs/YargsConfigurer.ts index e921ab63b9..5b97f3836e 100644 --- a/packages/imperative/src/cmd/src/yargs/YargsConfigurer.ts +++ b/packages/imperative/src/cmd/src/yargs/YargsConfigurer.ts @@ -236,11 +236,11 @@ export class YargsConfigurer { // loop through the top level groups for (const group of this.rootCommand.children) { - if ((group.name.trim() === groupValues[0]) || (group.aliases[0] === groupValues[0])) { + if (group.name.trim() === groupValues[0] || group.aliases[0] === groupValues[0]) { groups += groupValues[0] + " "; // found the top level group so loop to see if second level group valid for (const group2 of group.children) { - if ((group2.name.trim() === groupValues[1]) || (group2.aliases[0] === groupValues[1])) { + if (group2.name.trim() === groupValues[1] || group2.aliases[0] === groupValues[1]) { groups += groupValues[1] + " "; // second level group valid so command provided is invalid, retrieve the valid command(s) for (let i = 0; i < group2.children.length; i++) { diff --git a/packages/imperative/src/config/__tests__/ConvertV1Profiles.unit.test.ts b/packages/imperative/src/config/__tests__/ConvertV1Profiles.unit.test.ts index 6f7a8c9606..9ca07a18f2 100644 --- a/packages/imperative/src/config/__tests__/ConvertV1Profiles.unit.test.ts +++ b/packages/imperative/src/config/__tests__/ConvertV1Profiles.unit.test.ts @@ -579,11 +579,11 @@ describe("ConvertV1Profiles tests", () => { let numMsgsFound = 0; for (const nextMsg of ConvertV1Profiles["convertResult"].msgs) { if (nextMsg.msgFormat & ConvertMsgFmt.REPORT_LINE) { - if ((nextMsg.msgText.includes("Your old V1 profiles have been moved") && - nextMsg.msgText.includes("Delete them by re-running this operation and requesting deletion")) + if (nextMsg.msgText.includes("Your old V1 profiles have been moved") && + nextMsg.msgText.includes("Delete them by re-running this operation and requesting deletion") || - (nextMsg.msgText.includes("Your new profiles have been saved") && - nextMsg.msgText.includes("To change your configuration, update that file in your text editor")) + nextMsg.msgText.includes("Your new profiles have been saved") && + nextMsg.msgText.includes("To change your configuration, update that file in your text editor") ) { numMsgsFound++; } diff --git a/packages/imperative/src/config/src/Config.ts b/packages/imperative/src/config/src/Config.ts index decda488ff..381ee06783 100644 --- a/packages/imperative/src/config/src/Config.ts +++ b/packages/imperative/src/config/src/Config.ts @@ -229,7 +229,7 @@ export class Config { try { for (const currLayer of this.mLayers) { - if (allLayers || (currLayer.user === this.mActive.user && currLayer.global === this.mActive.global)) { + if (allLayers || currLayer.user === this.mActive.user && currLayer.global === this.mActive.global) { this.api.layers.write(currLayer); } } @@ -507,8 +507,8 @@ export class Config { */ public setSchema(schema: string | object) { const layer = this.layerActive(); - const schemaUri = (typeof schema === "string") ? schema : `./${this.schemaName}`; - const schemaObj = (typeof schema !== "string") ? schema : null; + const schemaUri = typeof schema === "string" ? schema : `./${this.schemaName}`; + const schemaObj = typeof schema !== "string" ? schema : null; if (layer.properties.$schema == null) { // Typecasting because of this issue: https://github.com/kaelzhang/node-comment-json/issues/42 @@ -613,7 +613,7 @@ export class Config { * @returns The desired layer object. Null if no layer matches. */ public findLayer(user: boolean, global: boolean): IConfigLayer { - for (const layer of (this.mLayers || [])) { + for (const layer of this.mLayers || []) { if (layer.user === user && layer.global === global) return layer; } diff --git a/packages/imperative/src/config/src/ConfigAutoStore.ts b/packages/imperative/src/config/src/ConfigAutoStore.ts index 7c6fae155a..cd9b87d001 100644 --- a/packages/imperative/src/config/src/ConfigAutoStore.ts +++ b/packages/imperative/src/config/src/ConfigAutoStore.ts @@ -46,8 +46,8 @@ export class ConfigAutoStore { */ private static _findActiveProfile(opts: IConfigAutoStoreFindActiveProfileOpts): [string, string] | undefined { const profileTypes = typeof opts.params !== "undefined" ? [ - ...(opts.params.definition.profile?.required || []), - ...(opts.params.definition.profile?.optional || []) + ...opts.params.definition.profile?.required || [], + ...opts.params.definition.profile?.optional || [] ] : opts.profileTypes || []; for (const profType of profileTypes) { @@ -174,9 +174,9 @@ export class ConfigAutoStore { (3) Property is tokenValue and tokenType is missing from service profile, but present in base profile (4) Given profile is just a base profile :yum: */ - if ((!config.api.profiles.exists(profileName) && config.api.profiles.exists(baseProfileName)) || - (profileObj[propName] == null && !profileSecureProps.includes(propName) && - (baseProfileObj[propName] != null || baseProfileSecureProps.includes(propName))) || + if (!config.api.profiles.exists(profileName) && config.api.profiles.exists(baseProfileName) || + profileObj[propName] == null && !profileSecureProps.includes(propName) && + (baseProfileObj[propName] != null || baseProfileSecureProps.includes(propName)) || (propName === "tokenValue" && profileObj.tokenType == null && baseProfileObj.tokenType != null || profileType === "base") ) { diff --git a/packages/imperative/src/config/src/ConfigSchema.ts b/packages/imperative/src/config/src/ConfigSchema.ts index 17a8cd77cb..f0471c12fa 100644 --- a/packages/imperative/src/config/src/ConfigSchema.ts +++ b/packages/imperative/src/config/src/ConfigSchema.ts @@ -388,7 +388,7 @@ export class ConfigSchema { */ public static updateSchema(options?: IConfigUpdateSchemaOptions): IConfigUpdateSchemaPaths { // Handle default values - const opts: IConfigUpdateSchemaOptions = { layer: "active", depth: 0, ...(options ?? {}) }; + const opts: IConfigUpdateSchemaOptions = { layer: "active", depth: 0, ...options ?? {} }; // Build schema from loaded config if needed opts.schema = opts.schema ?? ConfigSchema.buildSchema(ImperativeConfig.instance.loadedConfig.profiles); diff --git a/packages/imperative/src/config/src/ConfigUtils.ts b/packages/imperative/src/config/src/ConfigUtils.ts index 583676a0f8..ba79ef1323 100644 --- a/packages/imperative/src/config/src/ConfigUtils.ts +++ b/packages/imperative/src/config/src/ConfigUtils.ts @@ -112,7 +112,7 @@ export class ConfigUtils { public static secureSaveError(solution?: string): ImperativeError { let details = CredentialManagerFactory.manager.secureErrorDetails(); if (solution != null) { - details = (details != null) ? (details + `\n - ${solution}`) : solution; + details = details != null ? details + `\n - ${solution}` : solution; } return new ImperativeError({ msg: "Unable to securely save credentials.", diff --git a/packages/imperative/src/config/src/ConvertV1Profiles.ts b/packages/imperative/src/config/src/ConvertV1Profiles.ts index 549bd2cf95..d94e92a963 100644 --- a/packages/imperative/src/config/src/ConvertV1Profiles.ts +++ b/packages/imperative/src/config/src/ConvertV1Profiles.ts @@ -144,7 +144,7 @@ export class ConvertV1Profiles { } } } - return (ConvertV1Profiles.convertResult.numProfilesFound > 0); + return ConvertV1Profiles.convertResult.numProfilesFound > 0; } /** @@ -194,7 +194,7 @@ export class ConvertV1Profiles { }; ConvertV1Profiles.convertResult.profilesConverted[profileType] = [ - ...(ConvertV1Profiles.convertResult.profilesConverted[profileType] || []), profileName + ...ConvertV1Profiles.convertResult.profilesConverted[profileType] || [], profileName ]; } catch (error) { ConvertV1Profiles.convertResult.profilesFailed.push({ name: profileName, type: profileType, error }); @@ -457,7 +457,7 @@ export class ConvertV1Profiles { * caller should uninstall. */ ConvertV1Profiles.convertResult.v1ScsPluginName = - (oldPluginInfo.plugins.length > 0) ? oldPluginInfo.plugins[0] : null; + oldPluginInfo.plugins.length > 0 ? oldPluginInfo.plugins[0] : null; } /** diff --git a/packages/imperative/src/config/src/ProfileCredentials.ts b/packages/imperative/src/config/src/ProfileCredentials.ts index 384a99bad3..bb97d4ac57 100644 --- a/packages/imperative/src/config/src/ProfileCredentials.ts +++ b/packages/imperative/src/config/src/ProfileCredentials.ts @@ -23,7 +23,7 @@ export class ProfileCredentials { private mCredMgrOverride?: ICredentialManagerInit; constructor(private mProfileInfo: ProfileInfo, opts?: IProfOpts | (() => NodeModule)) { - this.mCredMgrOverride = (typeof opts === "function") ? ProfileCredentials.defaultCredMgrWithKeytar(opts) : opts?.credMgrOverride; + this.mCredMgrOverride = typeof opts === "function" ? ProfileCredentials.defaultCredMgrWithKeytar(opts) : opts?.credMgrOverride; } /** @@ -78,9 +78,9 @@ export class ProfileCredentials { try { // TODO? Make CredentialManagerFactory.initialize params optional // see https://github.com/zowe/imperative/issues/545 - await CredentialManagerFactory.initialize({ service: null, ...(this.mCredMgrOverride || {}) }); + await CredentialManagerFactory.initialize({ service: null, ...this.mCredMgrOverride || {} }); } catch (error) { - throw (error instanceof ImperativeError) ? error : new ImperativeError({ + throw error instanceof ImperativeError ? error : new ImperativeError({ msg: `Failed to load CredentialManager class: ${error.message}`, causeErrors: error }); @@ -88,12 +88,12 @@ export class ProfileCredentials { } await this.mProfileInfo.getTeamConfig().api.secure.load({ - load: ((key: string): Promise => { + load: (key: string): Promise => { return CredentialManagerFactory.manager.load(key, true); - }), - save: ((key: string, value: any): Promise => { + }, + save: (key: string, value: any): Promise => { return CredentialManagerFactory.manager.save(key, value); - }) + } }); } @@ -119,7 +119,7 @@ export class ProfileCredentials { } const value1 = settings?.overrides.CredentialManager; const value2 = settings?.overrides["credential-manager"]; - return (typeof value1 === "string" && value1.length > 0) || (typeof value2 === "string" && value2.length > 0); + return typeof value1 === "string" && value1.length > 0 || typeof value2 === "string" && value2.length > 0; } catch (error) { throw new ImperativeError({ msg: "Unable to read Imperative settings file", diff --git a/packages/imperative/src/config/src/ProfileInfo.ts b/packages/imperative/src/config/src/ProfileInfo.ts index 278524d0d4..df546c63d3 100644 --- a/packages/imperative/src/config/src/ProfileInfo.ts +++ b/packages/imperative/src/config/src/ProfileInfo.ts @@ -196,7 +196,7 @@ export class ProfileInfo { const mergedArgs = this.mergeArgsForProfile(desiredProfile, { getSecureVals: false }); if (options.forceUpdate) { - const knownProperty = mergedArgs.knownArgs.find((v => v.argName === options.property)); + const knownProperty = mergedArgs.knownArgs.find(v => v.argName === options.property); if (knownProperty != null) { const profPath = this.getTeamConfig().api.profiles.getProfilePathFromName(options.profileName); if (!ConfigUtils.jsonPathMatches(knownProperty.argLoc.jsonLoc, profPath)) { @@ -204,7 +204,7 @@ export class ProfileInfo { } } } - if (!(await this.updateKnownProperty({ ...options, mergedArgs, osLocInfo: this.getOsLocInfo(desiredProfile)?.[0] }))) { + if (!await this.updateKnownProperty({ ...options, mergedArgs, osLocInfo: this.getOsLocInfo(desiredProfile)?.[0] })) { // Check to see if loadedConfig already contains the schema for the specified profile type if (ImperativeConfig.instance.loadedConfig?.profiles?.find(p => p.type === options.profileType)?.schema == null || ImperativeConfig.instance.loadedConfig?.baseProfile?.schema == null) { @@ -244,10 +244,10 @@ export class ProfileInfo { */ public async updateKnownProperty(options: IProfInfoUpdateKnownPropOpts): Promise { this.ensureReadFromDisk(); - const toUpdate = options.mergedArgs.knownArgs.find((v => v.argName === options.property)) || - options.mergedArgs.missingArgs.find((v => v.argName === options.property)); + const toUpdate = options.mergedArgs.knownArgs.find(v => v.argName === options.property) || + options.mergedArgs.missingArgs.find(v => v.argName === options.property); - if (toUpdate == null || (toUpdate.argLoc.locType === ProfLocType.TEAM_CONFIG && !this.getTeamConfig().mProperties.autoStore)) { + if (toUpdate == null || toUpdate.argLoc.locType === ProfLocType.TEAM_CONFIG && !this.getTeamConfig().mProperties.autoStore) { return false; } @@ -1522,7 +1522,7 @@ export class ProfileInfo { // Drop segment from end of path if property not found segments.pop(); } - const jsonPath = (segments.length > 0) ? buildPath(segments, opts.propName) : undefined; + const jsonPath = segments.length > 0 ? buildPath(segments, opts.propName) : undefined; if (jsonPath == null) { throw new ProfInfoErr({ errorCode: ProfInfoErr.PROP_NOT_IN_PROFILE, @@ -1533,7 +1533,7 @@ export class ProfileInfo { const foundInSecureArray = secFields.indexOf(buildPath(segments, opts.propName)) >= 0; const _isPropInLayer = (properties: IConfig) => { return properties && (lodash.get(properties, jsonPath) !== undefined || - (foundInSecureArray && lodash.get(properties, jsonPath.split(`.properties.${opts.propName}`)[0]) !== undefined)); + foundInSecureArray && lodash.get(properties, jsonPath.split(`.properties.${opts.propName}`)[0]) !== undefined); }; let filePath: string; @@ -1624,7 +1624,7 @@ export class ProfileInfo { if (profSchema == null || !argNameFound) { if (argValue.toUpperCase() === "TRUE" || argValue.toUpperCase() === "FALSE") { dataType = "boolean"; - } else if (!isNaN(+(argValue))) { + } else if (!isNaN(+argValue)) { dataType = "number"; } // TODO: Look for option definition for argName to check if it's an array @@ -1633,7 +1633,7 @@ export class ProfileInfo { if (dataType === "boolean") { argValue = argValue.toUpperCase() === "TRUE"; } else if (dataType === "number") { - argValue = +(argValue); + argValue = +argValue; } else if (dataType === "array") { argValue = CliUtils.extractArrayFromEnvValue(argValue); } diff --git a/packages/imperative/src/config/src/api/ConfigLayers.ts b/packages/imperative/src/config/src/api/ConfigLayers.ts index 0f3fed59eb..e790c321ce 100644 --- a/packages/imperative/src/config/src/api/ConfigLayers.ts +++ b/packages/imperative/src/config/src/api/ConfigLayers.ts @@ -179,7 +179,7 @@ export class ConfigLayers extends ConfigApi { layer.properties.defaults = lodash.merge(cnfg.defaults, layer.properties.defaults); - for (const pluginName of (cnfg.plugins || [])) { + for (const pluginName of cnfg.plugins || []) { if (layer.properties.plugins == null) { layer.properties.plugins = [pluginName]; } else if (!layer.properties.plugins?.includes(pluginName)) { diff --git a/packages/imperative/src/config/src/api/ConfigProfiles.ts b/packages/imperative/src/config/src/api/ConfigProfiles.ts index c3e1305a61..e80627bdfc 100644 --- a/packages/imperative/src/config/src/api/ConfigProfiles.ts +++ b/packages/imperative/src/config/src/api/ConfigProfiles.ts @@ -68,7 +68,7 @@ export class ConfigProfiles extends ConfigApi { * @returns True if a profile exists. False otherwise. */ public exists(path: string): boolean { - return (this.findProfile(path, this.mConfig.mProperties.profiles) != null); + return this.findProfile(path, this.mConfig.mProperties.profiles) != null; } // _______________________________________________________________________ diff --git a/packages/imperative/src/config/src/api/ConfigSecure.ts b/packages/imperative/src/config/src/api/ConfigSecure.ts index ad9e622e58..474b754290 100644 --- a/packages/imperative/src/config/src/api/ConfigSecure.ts +++ b/packages/imperative/src/config/src/api/ConfigSecure.ts @@ -114,7 +114,7 @@ export class ConfigSecure extends ConfigApi { // Build the entries for each layer for (const { user, global } of this.mConfig.mLayers) { - if (allLayers || (user === this.mConfig.mActive.user && global === this.mConfig.mActive.global)) { + if (allLayers || user === this.mConfig.mActive.user && global === this.mConfig.mActive.global) { this.cacheAndPrune({ user, global }); } } @@ -232,7 +232,7 @@ export class ConfigSecure extends ConfigApi { public findSecure(profiles: { [key: string]: IConfigProfile }, path: string): string[] { const secureProps = []; for (const profName of Object.keys(profiles)) { - for (const propName of (profiles[profName].secure || [])) { + for (const propName of profiles[profName].secure || []) { secureProps.push(`${path}.${profName}.properties.${propName}`); } if (profiles[profName].profiles != null) { @@ -299,6 +299,6 @@ export class ConfigSecure extends ConfigApi { * it was never called because the CredentialManager failed to initialize. */ public get loadFailed(): boolean { - return (this.mLoadFailed != null) ? this.mLoadFailed : !CredentialManagerFactory.initialized; + return this.mLoadFailed != null ? this.mLoadFailed : !CredentialManagerFactory.initialized; } } diff --git a/packages/imperative/src/events/__tests__/__integration__/ImperativeEventEmitter.integration.test.ts b/packages/imperative/src/events/__tests__/__integration__/ImperativeEventEmitter.integration.test.ts index 2b4dd4041e..ff81d4a59a 100644 --- a/packages/imperative/src/events/__tests__/__integration__/ImperativeEventEmitter.integration.test.ts +++ b/packages/imperative/src/events/__tests__/__integration__/ImperativeEventEmitter.integration.test.ts @@ -23,11 +23,11 @@ const iee_s = ImperativeSharedEvents; let cwd = ''; describe("Event Emitter", () => { - const mainModule = process.mainModule; + const mainModule = require.main; const testLogger = TestLogger.getTestLogger(); beforeAll(async () => { - (process.mainModule as any) = { + (require.main as any) = { filename: __filename }; @@ -47,7 +47,7 @@ describe("Event Emitter", () => { }); afterAll(() => { - process.mainModule = mainModule; + require.main = mainModule; TestUtil.rimraf(cwd); }); diff --git a/packages/imperative/src/events/__tests__/__unit__/ImperativeEventEmitter.unit.test.ts b/packages/imperative/src/events/__tests__/__unit__/ImperativeEventEmitter.unit.test.ts index ff7ba8fef7..9b4e3a57d5 100644 --- a/packages/imperative/src/events/__tests__/__unit__/ImperativeEventEmitter.unit.test.ts +++ b/packages/imperative/src/events/__tests__/__unit__/ImperativeEventEmitter.unit.test.ts @@ -12,7 +12,6 @@ import * as fs from "fs"; import { join } from "path"; import { homedir } from "os"; -import { Logger } from "../../../logger/src/Logger"; import { ImperativeEventEmitter, ImperativeSharedEvents, ImperativeUserEvents } from "../.."; jest.mock("fs"); @@ -82,7 +81,7 @@ describe("Event Emitter", () => { const processError = (eventType: string, msg: string, isCustomEvent = true) => { let caughtError: any; try { - iee.instance[(isCustomEvent ? "emitCustomEvent" : "emitEvent")](eventType as any); + iee.instance[isCustomEvent ? "emitCustomEvent" : "emitEvent"](eventType as any); } catch (err) { caughtError = err; } @@ -105,7 +104,7 @@ describe("Event Emitter", () => { const processEvent = (theEvent: any, isUser: boolean, isCustomEvent = false) => { // Emit the event - iee.instance[(isCustomEvent ? "emitCustomEvent" : "emitEvent")](theEvent); + iee.instance[isCustomEvent ? "emitCustomEvent" : "emitEvent"](theEvent); const dir = isUser ? userDir : sharedDir; expect(fs.existsSync).toHaveBeenCalledWith(dir); @@ -153,7 +152,7 @@ describe("Event Emitter", () => { () => { iee.instance.unsubscribe(ImperativeSharedEvents.ON_CREDENTIAL_MANAGER_CHANGED); }, ]; cbs.forEach(cb => { - expect((getError(cb)).message).toContain("You must initialize the instance"); + expect(getError(cb).message).toContain("You must initialize the instance"); }); }); @@ -223,7 +222,7 @@ describe("Event Emitter", () => { iee.instance.subscribe(theEvent, cbSpy); } - iee.instance[(isCustomEvent ? "emitCustomEvent" : "emitEvent")](theEvent); + iee.instance[isCustomEvent ? "emitCustomEvent" : "emitEvent"](theEvent); expect(cbSpy).toHaveBeenCalledTimes(numberOfCalls); }; @@ -235,9 +234,9 @@ describe("Event Emitter", () => { iee.initialize("zowe"); const dummyMap = { - has: () => (true), + has: () => true, delete: jest.fn(), - get: () => ([{ removeAllListeners }, jest.fn()]) + get: () => [{ removeAllListeners }, jest.fn()] }; // Mocked map of subscriptions (iee.instance as any).subscriptions = dummyMap; @@ -256,10 +255,10 @@ describe("Event Emitter", () => { expect((iee as any).initialized).toBeTruthy(); const dummyMap = { - has: () => (true), + has: () => true, delete: jest.fn(), keys: () => ["dummy"], - get: () => ([{ removeAllListeners }, jest.fn()]) + get: () => [{ removeAllListeners }, jest.fn()] }; // Mocked map of subscriptions (iee.instance as any).subscriptions = dummyMap; diff --git a/packages/imperative/src/expect/src/ImperativeExpect.ts b/packages/imperative/src/expect/src/ImperativeExpect.ts index 4aab004e5b..c1e8976481 100644 --- a/packages/imperative/src/expect/src/ImperativeExpect.ts +++ b/packages/imperative/src/expect/src/ImperativeExpect.ts @@ -10,7 +10,7 @@ */ import { ImperativeError } from "../../error"; -import { inspect, isNullOrUndefined } from "util"; +import { inspect } from "util"; const DataObjectParser = require("dataobject-parser"); @@ -87,7 +87,7 @@ export class ImperativeExpect { * @memberof ImperativeExpect */ public static toMatchRegExp(value: any, myRegex: string, msg?: string) { - if (!(new RegExp(myRegex).test(value))) { + if (!new RegExp(myRegex).test(value)) { throw new ImperativeError({msg: msg || "Input object/value does not match the regular expression"}, {tag: ImperativeExpect.ERROR_TAG}); } @@ -101,7 +101,7 @@ export class ImperativeExpect { * @memberof ImperativeExpect */ public static toNotBeNullOrUndefined(obj: any, msg?: string) { - if (isNullOrUndefined(obj)) { + if (obj == null) { throw new ImperativeError({msg: msg || "Required object must be defined"}, {tag: ImperativeExpect.ERROR_TAG}); } @@ -127,7 +127,7 @@ export class ImperativeExpect { break; } } - if (isNullOrUndefined(foundEntry)) { + if (foundEntry == null) { throw new ImperativeError({ msg: msg || "The required entry was NOT found within the input array: " + arr.map((entry) => inspect(entry)) @@ -182,7 +182,7 @@ export class ImperativeExpect { ImperativeExpect.toNotBeNullOrUndefined(obj, msg); const objParser = new DataObjectParser(obj); keys.forEach((key) => { - if (isNullOrUndefined(objParser.get(key))) { + if (objParser.get(key) == null) { throw new ImperativeError({msg: msg || "Required parameter '" + key + "' must be defined"}, {tag: ImperativeExpect.ERROR_TAG}); } @@ -209,7 +209,7 @@ export class ImperativeExpect { ImperativeExpect.toNotBeNullOrUndefined(obj, msg); const objParser = new DataObjectParser(obj); keys.forEach((key) => { - if (isNullOrUndefined(objParser.get(key))) { + if (objParser.get(key) == null) { throw new ImperativeError({msg: msg || "Required parameter '" + key + "' must be defined"}, {tag: ImperativeExpect.ERROR_TAG}); } @@ -290,7 +290,7 @@ export class ImperativeExpect { public static keysToBeUndefined(obj: { [key: string]: any }, keys: string[], msg?: string) { ImperativeExpect.toNotBeNullOrUndefined(obj, msg); keys.forEach((key) => { - if (!isNullOrUndefined(obj[key])) { + if (!(obj[key] == null)) { throw new ImperativeError({msg: "Required parameter '" + key + "' must be undefined"}, {tag: ImperativeExpect.ERROR_TAG}); } diff --git a/packages/imperative/src/imperative/__tests__/Imperative.unit.test.ts b/packages/imperative/src/imperative/__tests__/Imperative.unit.test.ts index d60148701f..06fd293775 100644 --- a/packages/imperative/src/imperative/__tests__/Imperative.unit.test.ts +++ b/packages/imperative/src/imperative/__tests__/Imperative.unit.test.ts @@ -21,7 +21,7 @@ import * as yargs from "yargs"; import { ImperativeError } from "../../error/src/ImperativeError"; describe("Imperative", () => { - const mainModule = process.mainModule; + const mainModule = require.main; const loadImperative = () => { return require("../src/Imperative").Imperative; @@ -128,7 +128,7 @@ describe("Imperative", () => { }; beforeEach(() => { - (process.mainModule as any) = { + (require.main as any) = { filename: __filename }; @@ -146,7 +146,7 @@ describe("Imperative", () => { }); afterEach(() => { - process.mainModule = mainModule; + require.main = mainModule; }); describe("init", () => { diff --git a/packages/imperative/src/imperative/__tests__/OverridesLoader.unit.test.ts b/packages/imperative/src/imperative/__tests__/OverridesLoader.unit.test.ts index 1bc0f3ae2e..66722986b5 100644 --- a/packages/imperative/src/imperative/__tests__/OverridesLoader.unit.test.ts +++ b/packages/imperative/src/imperative/__tests__/OverridesLoader.unit.test.ts @@ -23,7 +23,7 @@ import { AppSettings } from "../../settings"; const TEST_MANAGER_NAME = "test manager"; describe("OverridesLoader", () => { - const mainModule = process.mainModule; + const mainModule = require.main; const mockCredMgrInitialized = jest.fn().mockReturnValue(false); beforeAll(() => { @@ -33,13 +33,13 @@ describe("OverridesLoader", () => { beforeEach(() => { jest.restoreAllMocks(); jest.resetAllMocks(); - (process.mainModule as any) = { + (require.main as any) = { filename: __filename }; }); afterEach(() => { - process.mainModule = mainModule; + require.main = mainModule; }); afterAll(() => { @@ -214,8 +214,8 @@ describe("OverridesLoader", () => { }; // DON'T YOU EVER DO THIS AFTER THE SPY, IT WILL CAUSE YOU MASSIVE PROBLEMS - // I suspect that process.mainModule.filename somehow uses path.resolve (25 times when I ran this) - const expectedArgs = [process.mainModule.filename, "../", config.overrides.CredentialManager]; + // I suspect that require.main.filename somehow uses path.resolve (25 times when I ran this) + const expectedArgs = [require.main?.filename, "../", config.overrides?.CredentialManager]; const expectedLocation = "/some/random/dummy/location/DummyFile.ts"; jest.spyOn(path, "resolve").mockReturnValueOnce(expectedLocation); diff --git a/packages/imperative/src/imperative/__tests__/config/cmd/list/list.handler.unit.test.ts b/packages/imperative/src/imperative/__tests__/config/cmd/list/list.handler.unit.test.ts index 7cb1cc5743..6423288d72 100644 --- a/packages/imperative/src/imperative/__tests__/config/cmd/list/list.handler.unit.test.ts +++ b/packages/imperative/src/imperative/__tests__/config/cmd/list/list.handler.unit.test.ts @@ -100,7 +100,7 @@ describe("Configuration List command handler", () => { jest.spyOn(fakeConfig, "exists", "get").mockReturnValueOnce(false); handlerParms.arguments = {}; - await (new ListHandler()).process(handlerParms); + await new ListHandler().process(handlerParms); expect(errorText).toBeNull(); expect(dataObj).toEqual({}); expect(formatObj).toEqual(dataObj); @@ -110,7 +110,7 @@ describe("Configuration List command handler", () => { (fakeConfig as any).mLayers = configLayers; handlerParms.arguments = {}; - await (new ListHandler()).process(handlerParms); + await new ListHandler().process(handlerParms); expect(errorText).toBeNull(); expect(dataObj).toEqual(configMaskedProps); expect(dataObj.profiles.email.properties.user).toBe(ConfigConstants.SECURE_VALUE); @@ -122,7 +122,7 @@ describe("Configuration List command handler", () => { (fakeConfig as any).mLayers = configLayers; handlerParms.arguments = { property: "plugins" }; - await (new ListHandler()).process(handlerParms); + await new ListHandler().process(handlerParms); expect(errorText).toBeNull(); expect(dataObj).toEqual(["fakePlugin"]); expect(formatObj).toEqual(dataObj); @@ -132,7 +132,7 @@ describe("Configuration List command handler", () => { (fakeConfig as any).mLayers = configLayers; handlerParms.arguments = { locations: true }; - await (new ListHandler()).process(handlerParms); + await new ListHandler().process(handlerParms); expect(errorText).toBeNull(); expect(dataObj.fakePath).toEqual(configMaskedProps); expect(dataObj.fakePath.profiles.email.properties.user).toBe(ConfigConstants.SECURE_VALUE); @@ -144,7 +144,7 @@ describe("Configuration List command handler", () => { (fakeConfig as any).mLayers = configLayers; handlerParms.arguments = { locations: true, property: "plugins" }; - await (new ListHandler()).process(handlerParms); + await new ListHandler().process(handlerParms); expect(errorText).toBeNull(); expect(dataObj.fakePath).toEqual(["fakePlugin"]); expect(formatObj).toEqual(dataObj); @@ -154,7 +154,7 @@ describe("Configuration List command handler", () => { (fakeConfig as any).mLayers = configLayers; handlerParms.arguments = { locations: true, property: "profiles" }; - await (new ListHandler()).process(handlerParms); + await new ListHandler().process(handlerParms); expect(errorText).toBeNull(); expect(dataObj.fakePath).toEqual(configMaskedProps.profiles); expect(dataObj.fakePath.email.properties.user).toBe(ConfigConstants.SECURE_VALUE); @@ -166,7 +166,7 @@ describe("Configuration List command handler", () => { (fakeConfig as any).mLayers = configLayers; handlerParms.arguments = { nameOnly: true }; - await (new ListHandler()).process(handlerParms); + await new ListHandler().process(handlerParms); expect(errorText).toBeNull(); expect(dataObj).toEqual(Object.keys(configLayers[0].properties)); expect(formatObj).toEqual(dataObj); diff --git a/packages/imperative/src/imperative/__tests__/config/cmd/profiles/profiles.handler.unit.test.ts b/packages/imperative/src/imperative/__tests__/config/cmd/profiles/profiles.handler.unit.test.ts index cdd0b68689..de832b3f68 100644 --- a/packages/imperative/src/imperative/__tests__/config/cmd/profiles/profiles.handler.unit.test.ts +++ b/packages/imperative/src/imperative/__tests__/config/cmd/profiles/profiles.handler.unit.test.ts @@ -93,7 +93,7 @@ describe("Configuration Profiles command handler", () => { properties: configProps }); - await (new ProfilesHandler()).process(handlerParms); + await new ProfilesHandler().process(handlerParms); expect(errorText).toBeNull(); expect(dataObj).toEqual(["email", "email.incoming", "email.outgoing"]); expect(formatObj).toEqual(dataObj); diff --git a/packages/imperative/src/imperative/__tests__/config/cmd/schema/schema.handler.unit.test.ts b/packages/imperative/src/imperative/__tests__/config/cmd/schema/schema.handler.unit.test.ts index fc726fa006..3abd5d11a6 100644 --- a/packages/imperative/src/imperative/__tests__/config/cmd/schema/schema.handler.unit.test.ts +++ b/packages/imperative/src/imperative/__tests__/config/cmd/schema/schema.handler.unit.test.ts @@ -103,7 +103,7 @@ describe("Configuration Schema command handler", () => { profiles: testProfileConfiguration }); - await (new SchemaHandler()).process(handlerParms); + await new SchemaHandler().process(handlerParms); expect(errorText).toBeNull(); expect(dataObj).toMatchObject(expectedSchemaObj); expect(JSON.parse(logText)).toMatchObject(dataObj); @@ -112,7 +112,7 @@ describe("Configuration Schema command handler", () => { it("should fail when Imperative config not loaded", async () => { loadedConfigMock.mockReturnValueOnce(undefined); - await (new SchemaHandler()).process(handlerParms); + await new SchemaHandler().process(handlerParms); expect(errorText).toBe("Failed to load profile schemas"); expect(logText).toBeNull(); }); diff --git a/packages/imperative/src/imperative/__tests__/config/cmd/secure/secure.handler.unit.test.ts b/packages/imperative/src/imperative/__tests__/config/cmd/secure/secure.handler.unit.test.ts index 89c4aa879c..b8ee830ef2 100644 --- a/packages/imperative/src/imperative/__tests__/config/cmd/secure/secure.handler.unit.test.ts +++ b/packages/imperative/src/imperative/__tests__/config/cmd/secure/secure.handler.unit.test.ts @@ -93,12 +93,12 @@ describe("Configuration Secure command handler", () => { readPromptSpy = jest.fn().mockReturnValue("fakePromptingData"); const configOpts: IConfigOpts = { vault: { - load: ((k: string): Promise => { + load: (k: string): Promise => { return CredentialManagerFactory.manager.load(k, true); - }), - save: ((k: string, v: any): Promise => { + }, + save: (k: string, v: any): Promise => { return CredentialManagerFactory.manager.save(k, v); - }) + } } }; diff --git a/packages/imperative/src/imperative/__tests__/config/cmd/set/set.handler.unit.test.ts b/packages/imperative/src/imperative/__tests__/config/cmd/set/set.handler.unit.test.ts index 08613f6777..609c672e44 100644 --- a/packages/imperative/src/imperative/__tests__/config/cmd/set/set.handler.unit.test.ts +++ b/packages/imperative/src/imperative/__tests__/config/cmd/set/set.handler.unit.test.ts @@ -88,12 +88,12 @@ describe("Configuration Set command handler", () => { const configOpts: IConfigOpts = { vault: { - load: ((k: string): Promise => { + load: (k: string): Promise => { return CredentialManagerFactory.manager.load(k, true); - }), - save: ((k: string, v: any): Promise => { + }, + save: (k: string, v: any): Promise => { return CredentialManagerFactory.manager.save(k, v); - }) + } } }; diff --git a/packages/imperative/src/imperative/__tests__/config/cmd/update-schema/updateSchema.handler.unit.test.ts b/packages/imperative/src/imperative/__tests__/config/cmd/update-schema/updateSchema.handler.unit.test.ts index 650539f2a8..9cf0375c11 100644 --- a/packages/imperative/src/imperative/__tests__/config/cmd/update-schema/updateSchema.handler.unit.test.ts +++ b/packages/imperative/src/imperative/__tests__/config/cmd/update-schema/updateSchema.handler.unit.test.ts @@ -123,7 +123,7 @@ describe("Configuration Update-Schema command handler", () => { loadedConfigMock.mockReturnValueOnce(undefined); let caughtError = null; try { - await (new UpdateSchemasHandler()).process(handlerParms); + await new UpdateSchemasHandler().process(handlerParms); } catch (err) { caughtError = err.message; } @@ -134,7 +134,7 @@ describe("Configuration Update-Schema command handler", () => { }); it("should print schema JSON", async () => { - await (new UpdateSchemasHandler()).process(handlerParms); + await new UpdateSchemasHandler().process(handlerParms); expect(dataObj).toMatchObject(expectedDataObj); expect(logText).toEqual(`Configuration files found: ${Object.keys(expectedDataObj).length}`); expect(formatObj).toMatchObject({ diff --git a/packages/imperative/src/imperative/__tests__/plugins/PluginRequireProvider.unit.test.ts b/packages/imperative/src/imperative/__tests__/plugins/PluginRequireProvider.unit.test.ts index 7a2c307a99..58a79b2ac6 100644 --- a/packages/imperative/src/imperative/__tests__/plugins/PluginRequireProvider.unit.test.ts +++ b/packages/imperative/src/imperative/__tests__/plugins/PluginRequireProvider.unit.test.ts @@ -349,9 +349,9 @@ describe("PluginRequireProvider", () => { modules: randomModuleMaxLength, shouldRequireDirectly: [ "./anything/goes/here", - randomModuleMaxLength[0].substr(15), - randomModuleMaxLength[1].substr(200), - randomModuleMaxLength[2].substr(59) + randomModuleMaxLength[0].substring(15), + randomModuleMaxLength[1].substring(200), + randomModuleMaxLength[2].substring(59) ] }, "1 module with periods": { @@ -429,7 +429,7 @@ describe("PluginRequireProvider", () => { try { // The return should be the main module as that is what the module loader does. - expect(modulePrototype.require.call(thisObject, module, testRequireIndicator)).toBe(process.mainModule); + expect(modulePrototype.require.call(thisObject, module, testRequireIndicator)).toBe(require.main); // Expect that the require was just called with the module expect(mockedRequire).toHaveBeenCalledTimes(1); @@ -442,7 +442,7 @@ describe("PluginRequireProvider", () => { const submodule = `${module}/submodule/import`; expect(modulePrototype.require.call( thisObject, submodule, testRequireIndicator - )).toBe(process.mainModule); + )).toBe(require.main); // Expect that the require was just called with the submodule expect(mockedRequire).toHaveBeenCalledTimes(1); @@ -475,7 +475,7 @@ describe("PluginRequireProvider", () => { try { expect(modulePrototype.require.call( thisObject, module, testRequireIndicator - )).toBe(process.mainModule); + )).toBe(require.main); expect(mockedRequire).toHaveBeenCalledTimes(1); expect(mockedRequire).toHaveBeenCalledWith("./", testRequireIndicator); @@ -506,7 +506,7 @@ describe("PluginRequireProvider", () => { try { expect(modulePrototype.require.call( thisObject, module + submoduleImport, testRequireIndicator - )).toBe(process.mainModule); + )).toBe(require.main); expect(mockedRequire).toHaveBeenCalledTimes(1); expect(mockedRequire).toHaveBeenCalledWith(packageRoot + submoduleImport, testRequireIndicator); diff --git a/packages/imperative/src/imperative/__tests__/plugins/utilities/runValidatePlugin.unit.test.ts b/packages/imperative/src/imperative/__tests__/plugins/utilities/runValidatePlugin.unit.test.ts index 1f5ae7e922..afb62119a7 100644 --- a/packages/imperative/src/imperative/__tests__/plugins/utilities/runValidatePlugin.unit.test.ts +++ b/packages/imperative/src/imperative/__tests__/plugins/utilities/runValidatePlugin.unit.test.ts @@ -31,16 +31,16 @@ const spawnSyncOutput = { }; describe("runValidatePlugin", () => { - const mainModule = process.mainModule; + const mainModule = require.main; beforeEach(() => { - (process.mainModule as any) = { + (require.main as any) = { filename: __filename }; }); afterEach(() => { - process.mainModule = mainModule; + require.main = mainModule; mocks.spawnSync.mockReset(); }); diff --git a/packages/imperative/src/imperative/src/ConfigurationValidator.ts b/packages/imperative/src/imperative/src/ConfigurationValidator.ts index fa6bceedd6..eb956d68b3 100644 --- a/packages/imperative/src/imperative/src/ConfigurationValidator.ts +++ b/packages/imperative/src/imperative/src/ConfigurationValidator.ts @@ -10,7 +10,6 @@ */ import { IImperativeConfig } from "./doc/IImperativeConfig"; -import { isNullOrUndefined } from "util"; import { TextUtils } from "../../utilities"; import { ImperativeError } from "../../error"; import { ICommandProfileProperty } from "../../cmd/src/doc/profiles/definition/ICommandProfileProperty"; @@ -34,10 +33,10 @@ export class ConfigurationValidator { + fieldName + ". Please provide this field in order to use Imperative" }); }; - if (isNullOrUndefined(config.productDisplayName)) { + if (config.productDisplayName == null) { throw getMissingFieldError("productDisplayName"); } - if (isNullOrUndefined(config.commandModuleGlobs) && isNullOrUndefined(config.definitions)) { + if (config.commandModuleGlobs == null && config.definitions == null) { throw new ImperativeError({ msg: "Your Imperative configuration had neither \"definitions\"" + " nor \"commandModuleGlobs\". At least one of these fields is required so that the syntax for " + @@ -45,31 +44,31 @@ export class ConfigurationValidator { }); } - if (isNullOrUndefined(config.primaryTextColor)) { + if (config.primaryTextColor == null) { config.primaryTextColor = "yellow"; } else { // if the user specified a color, test to make sure it works ConfigurationValidator.verifyChalkColor(config, "primaryTextColor", "primary text highlighting"); } - if (isNullOrUndefined(config.secondaryTextColor)) { + if (config.secondaryTextColor == null) { config.secondaryTextColor = "blue"; } else { // if the user specified a color, test to make sure it works ConfigurationValidator.verifyChalkColor(config, "secondaryTextColor", "secondary text highlighting"); } - if (isNullOrUndefined(config.allowConfigGroup)) { + if (config.allowConfigGroup == null) { // default allowConfigGroup to true config.allowConfigGroup = true; } - if (isNullOrUndefined(config.allowPlugins)) { + if (config.allowPlugins == null) { // default allowPlugins to true config.allowPlugins = true; } // validate profile configurations - if (!isNullOrUndefined(config.profiles)) { + if (!(config.profiles == null)) { for (const profileConfig of config.profiles) { - if (isNullOrUndefined(profileConfig.schema)) { + if (profileConfig.schema == null) { throw new ImperativeError({ msg: "Your Imperative profile configuration of type \"" + profileConfig.type + "\" has no schema. Please provide a schema for your profile so that it can be used to " + @@ -80,7 +79,7 @@ export class ConfigurationValidator { for (const propertyName of Object.keys(profileConfig.schema.properties)) { const property: ICommandProfileProperty = profileConfig.schema.properties[propertyName]; - if (!isNullOrUndefined(property.optionDefinitions) && + if (!(property.optionDefinitions == null) && property.optionDefinitions.length > 1) { throw new ImperativeError({ diff --git a/packages/imperative/src/imperative/src/DefinitionTreeResolver.ts b/packages/imperative/src/imperative/src/DefinitionTreeResolver.ts index 7bc7784d11..19c2f4bd7f 100644 --- a/packages/imperative/src/imperative/src/DefinitionTreeResolver.ts +++ b/packages/imperative/src/imperative/src/DefinitionTreeResolver.ts @@ -150,7 +150,7 @@ export class DefinitionTreeResolver { private static addBaseProfile(cmdDefs: ICommandDefinition[]): ICommandDefinition[] { return cmdDefs.map((cmdDef: ICommandDefinition) => { if (cmdDef.profile && Object.keys(cmdDef.profile).length > 0) { - cmdDef.profile.optional = [...(cmdDef.profile.optional || []), "base"]; + cmdDef.profile.optional = [...cmdDef.profile.optional || [], "base"]; } if (cmdDef.children && cmdDef.children.length > 0) { cmdDef.children = this.addBaseProfile(cmdDef.children); diff --git a/packages/imperative/src/imperative/src/Imperative.ts b/packages/imperative/src/imperative/src/Imperative.ts index d2a5a07edb..76eab278a5 100644 --- a/packages/imperative/src/imperative/src/Imperative.ts +++ b/packages/imperative/src/imperative/src/Imperative.ts @@ -129,7 +129,7 @@ export class Imperative { /** * Identify caller's location on the system */ - ImperativeConfig.instance.callerLocation = process.mainModule.filename; + ImperativeConfig.instance.callerLocation = require.main.filename; /** * Load callers configuration, validate, and save diff --git a/packages/imperative/src/imperative/src/OverridesLoader.ts b/packages/imperative/src/imperative/src/OverridesLoader.ts index 1e72675441..f3b2f03ff0 100644 --- a/packages/imperative/src/imperative/src/OverridesLoader.ts +++ b/packages/imperative/src/imperative/src/OverridesLoader.ts @@ -65,24 +65,24 @@ export class OverridesLoader { const overrides: IImperativeOverrides = config.overrides; // The manager display name used to populate the "managed by" fields in profiles - const displayName: string = ( + const displayName: string = overrides.CredentialManager != null && AppSettings.initialized && AppSettings.instance.getNamespace("overrides") != null && AppSettings.instance.get("overrides", "CredentialManager") != null && AppSettings.instance.get("overrides", "CredentialManager") !== false - ) ? + ? // App settings is configured - use the plugin name for the manager name - AppSettings.instance.get("overrides", "CredentialManager") as string - : + AppSettings.instance.get("overrides", "CredentialManager") as string + : // App settings is not configured - use the CLI display name OR the package name as the manager name - config.productDisplayName || config.name; + config.productDisplayName || config.name; // Initialize the credential manager if an override was supplied and/or keytar was supplied in package.json if (overrides.CredentialManager != null || this.shouldUseKeytar(packageJson, useTeamConfig)) { let Manager = overrides.CredentialManager; if (typeof overrides.CredentialManager === "string" && !isAbsolute(overrides.CredentialManager)) { - Manager = resolve(process.mainModule.filename, "../", overrides.CredentialManager); + Manager = resolve(require.main.filename, "../", overrides.CredentialManager); } await CredentialManagerFactory.initialize({ @@ -125,12 +125,12 @@ export class OverridesLoader { if (!CredentialManagerFactory.initialized) return; const vault: IConfigVault = { - load: ((key: string): Promise => { + load: (key: string): Promise => { return CredentialManagerFactory.manager.load(key, true); - }), - save: ((key: string, value: any): Promise => { + }, + save: (key: string, value: any): Promise => { return CredentialManagerFactory.manager.save(key, value); - }) + } }; try { diff --git a/packages/imperative/src/imperative/src/auth/builders/AuthLoginCommandBuilder.ts b/packages/imperative/src/imperative/src/auth/builders/AuthLoginCommandBuilder.ts index 169722f28f..59f6f9e4c9 100644 --- a/packages/imperative/src/imperative/src/auth/builders/AuthLoginCommandBuilder.ts +++ b/packages/imperative/src/imperative/src/auth/builders/AuthLoginCommandBuilder.ts @@ -54,7 +54,7 @@ export class AuthLoginCommandBuilder extends AuthCommandBuilder { description: authLoginShowTokenDesc.message, type: "boolean" }, - ...(this.mConfig.login?.options || []) + ...this.mConfig.login?.options || [] ], examples: this.mConfig.login?.examples, profile: { diff --git a/packages/imperative/src/imperative/src/auth/handlers/BaseAuthHandler.ts b/packages/imperative/src/imperative/src/auth/handlers/BaseAuthHandler.ts index 62eefad738..0937d37e75 100644 --- a/packages/imperative/src/imperative/src/auth/handlers/BaseAuthHandler.ts +++ b/packages/imperative/src/imperative/src/auth/handlers/BaseAuthHandler.ts @@ -164,7 +164,7 @@ export abstract class BaseAuthHandler extends AbstractAuthHandler { `Do you want to store the host, port, and token on disk for use with future commands? If you answer Yes, the credentials will ` + `be saved to a ${this.mProfileType} profile named '${profileName}'. If you answer No, the token will be printed to the ` + `terminal and will not be stored on disk. [y/N]: `); - return (answer != null && (answer.toLowerCase() === "y" || answer.toLowerCase() === "yes")); + return answer != null && (answer.toLowerCase() === "y" || answer.toLowerCase() === "yes"); } private showToken(response: IHandlerResponseApi, tokenValue: string) { diff --git a/packages/imperative/src/imperative/src/config/cmd/auto-init/builders/AutoInitCommandBuilder.ts b/packages/imperative/src/imperative/src/config/cmd/auto-init/builders/AutoInitCommandBuilder.ts index 32c290f339..fbcdc460ec 100644 --- a/packages/imperative/src/imperative/src/config/cmd/auto-init/builders/AutoInitCommandBuilder.ts +++ b/packages/imperative/src/imperative/src/config/cmd/auto-init/builders/AutoInitCommandBuilder.ts @@ -88,7 +88,7 @@ export class AutoInitCommandBuilder implements AbstractCommandBuilder { AutoInitConstants.AUTO_INIT_OPTION_EDITOR, AutoInitConstants.AUTO_INIT_OPTION_OVERWRITE, AutoInitConstants.AUTO_INIT_OPTION_FOR_SURE, - ...(this.mConfig.autoInit?.options || []) + ...this.mConfig.autoInit?.options || [] ], examples: this.mConfig.autoInit?.examples, customize: {} diff --git a/packages/imperative/src/imperative/src/config/cmd/init/init.handler.ts b/packages/imperative/src/imperative/src/config/cmd/init/init.handler.ts index 6217b2cf70..3d50670de4 100644 --- a/packages/imperative/src/imperative/src/config/cmd/init/init.handler.ts +++ b/packages/imperative/src/imperative/src/config/cmd/init/init.handler.ts @@ -105,11 +105,11 @@ export default class InitHandler implements ICommandHandler { if (params.arguments.prompt !== false && config.api.secure.loadFailed && config.api.secure.secureFields().length > 0) { const warning = ConfigUtils.secureSaveError(); let message = "Warning:\n" + warning.message + " Skipped prompting for credentials."; - + if (warning.additionalDetails) { message += `\n\n${warning.additionalDetails}\n`; } - + params.response.console.log(TextUtils.chalk.yellow(message)); } diff --git a/packages/imperative/src/imperative/src/config/cmd/list/list.handler.ts b/packages/imperative/src/imperative/src/config/cmd/list/list.handler.ts index 6445c9da04..47b83fc810 100644 --- a/packages/imperative/src/imperative/src/config/cmd/list/list.handler.ts +++ b/packages/imperative/src/imperative/src/config/cmd/list/list.handler.ts @@ -60,7 +60,7 @@ export default class ListHandler implements ICommandHandler { params.response.data.setObj(obj); params.response.format.output({ output: obj, - format: (Array.isArray(obj)) ? "list" : "object" + format: Array.isArray(obj) ? "list" : "object" }); } } diff --git a/packages/imperative/src/imperative/src/config/cmd/report-env/EnvQuery.ts b/packages/imperative/src/imperative/src/config/cmd/report-env/EnvQuery.ts index 7b15107314..70cc2a614c 100644 --- a/packages/imperative/src/imperative/src/config/cmd/report-env/EnvQuery.ts +++ b/packages/imperative/src/imperative/src/config/cmd/report-env/EnvQuery.ts @@ -212,7 +212,7 @@ export class EnvQuery { getResult: IGetItemVal, getItemOpts: IGetItemOpts ): Promise { const teamCfg: string = "Zowe Client Config"; - const doesProgBarExist: boolean = (getItemOpts?.progressApi) ? true: false; + const doesProgBarExist: boolean = getItemOpts?.progressApi ? true: false; // setup progress bar const configProgress: ITaskWithStatus = { @@ -289,7 +289,7 @@ export class EnvQuery { let maxSpace: number = 1; for (const profType of Object.keys(config.mProperties.defaults)) { // calculate the max space we need between profile type and name - maxSpace = (maxSpace < profType.length) ? profType.length + 1 : maxSpace; + maxSpace = maxSpace < profType.length ? profType.length + 1 : maxSpace; } for (const profType of Object.keys(config.mProperties.defaults)) { getResult.itemValMsg += EnvQuery.indent + profType + " ="; @@ -381,7 +381,7 @@ export class EnvQuery { getItemOpts: IGetItemOpts ): Promise { const percentIncr: number = 10; - const doesProgBarExist: boolean = (getItemOpts?.progressApi) ? true: false; + const doesProgBarExist: boolean = getItemOpts?.progressApi ? true: false; // setup progress bar const npmProgress: ITaskWithStatus = { @@ -511,7 +511,7 @@ export class EnvQuery { private static async getPluginInfo( getResult: IGetItemVal, getItemOpts: IGetItemOpts ): Promise { - const doesProgBarExist: boolean = (getItemOpts?.progressApi) ? true: false; + const doesProgBarExist: boolean = getItemOpts?.progressApi ? true: false; // setup progress bar const configProgress: ITaskWithStatus = { diff --git a/packages/imperative/src/imperative/src/help/ImperativeHelpGeneratorFactory.ts b/packages/imperative/src/imperative/src/help/ImperativeHelpGeneratorFactory.ts index 1443d098ea..3b3d585f30 100644 --- a/packages/imperative/src/imperative/src/help/ImperativeHelpGeneratorFactory.ts +++ b/packages/imperative/src/imperative/src/help/ImperativeHelpGeneratorFactory.ts @@ -9,7 +9,6 @@ * */ -import { isNullOrUndefined } from "util"; import { IHelpGenerator, HelpGeneratorFactory, IHelpGeneratorParms, @@ -57,7 +56,7 @@ export class ImperativeHelpGeneratorFactory extends AbstractHelpGeneratorFactory fullCommandTree: parms.fullCommandTree, experimentalCommandsDescription: parms.experimentalCommandsDescription }; - if (isNullOrUndefined(this.config)) { + if (this.config == null) { return new HelpGeneratorFactory({ produceMarkdown: this.produceMarkdown, primaryHighlightColor: this.primaryHighlightColor, diff --git a/packages/imperative/src/imperative/src/plugins/PluginManagementFacility.ts b/packages/imperative/src/imperative/src/plugins/PluginManagementFacility.ts index 966ac60033..1936837395 100644 --- a/packages/imperative/src/imperative/src/plugins/PluginManagementFacility.ts +++ b/packages/imperative/src/imperative/src/plugins/PluginManagementFacility.ts @@ -885,10 +885,10 @@ export class PluginManagementFacility { for ( let credMgrInx = 1; credMgrInx < knownCredMgrs.length; credMgrInx++) { overrideErrMsg += `\n"${settingNm}": "${knownCredMgrs[credMgrInx].credMgrDisplayName}" `; - if ( typeof(knownCredMgrs[credMgrInx].credMgrPluginName) !== "undefined") { + if ( typeof knownCredMgrs[credMgrInx].credMgrPluginName !== "undefined") { overrideErrMsg += `(supplied in CLI plugin ${knownCredMgrs[credMgrInx].credMgrPluginName}`; } - if ( typeof(knownCredMgrs[credMgrInx].credMgrZEName) !== "undefined") { + if ( typeof knownCredMgrs[credMgrInx].credMgrZEName !== "undefined") { const punctuation = 8; overrideErrMsg += "\n"; for (let indent: number = 0; indent < diff --git a/packages/imperative/src/imperative/src/plugins/PluginRequireProvider.ts b/packages/imperative/src/imperative/src/plugins/PluginRequireProvider.ts index 7bc6b90f29..b33545d4e1 100644 --- a/packages/imperative/src/imperative/src/plugins/PluginRequireProvider.ts +++ b/packages/imperative/src/imperative/src/plugins/PluginRequireProvider.ts @@ -32,7 +32,7 @@ import * as lodash from "lodash"; * PluginRequireProvider.createPluginHooks(["module-a", "module-b"]); * * // Now in all places of the application, module-a and module-b will be loaded - * // from the package location of process.mainModule (I.E the Host Package). This + * // from the package location of require.main (I.E the Host Package). This * // is useful when the Host Package has some sort of plugin infrastructure that * // might require modules to be injected to the plugins. * @@ -175,12 +175,12 @@ export class PluginRequireProvider { if (request === ImperativeConfig.instance.hostPackageName) { args[0] = "./"; } else { - args[0] = `${hostPackageRoot}${request.substr(hostPackageNameLength)}`; + args[0] = `${hostPackageRoot}${request.substring(hostPackageNameLength)}`; } } // Inject it from the main module dependencies - return origRequire.apply(process.mainModule, args); + return origRequire.apply(require.main, args); } else { // Otherwise use the package dependencies return origRequire.apply(this, args); diff --git a/packages/imperative/src/imperative/src/plugins/utilities/PMFConstants.ts b/packages/imperative/src/imperative/src/plugins/utilities/PMFConstants.ts index b411a59763..c1b2ef84a0 100644 --- a/packages/imperative/src/imperative/src/plugins/utilities/PMFConstants.ts +++ b/packages/imperative/src/imperative/src/plugins/utilities/PMFConstants.ts @@ -139,7 +139,7 @@ export class PMFConstants { if (this.PLUGIN_USING_CONFIG) { this.PLUGIN_CONFIG.paths.forEach((path: string) => { const dir = dirname(path); - modPaths.push(join(dir, (process.platform !== "win32") ? "lib" : "", "node_modules")); + modPaths.push(join(dir, process.platform !== "win32" ? "lib" : "", "node_modules")); }); } modPaths.push(this.PLUGIN_HOME_LOCATION); diff --git a/packages/imperative/src/imperative/src/plugins/utilities/npm-interface/install.ts b/packages/imperative/src/imperative/src/plugins/utilities/npm-interface/install.ts index eff42b2adc..a54badb564 100644 --- a/packages/imperative/src/imperative/src/plugins/utilities/npm-interface/install.ts +++ b/packages/imperative/src/imperative/src/plugins/utilities/npm-interface/install.ts @@ -142,7 +142,7 @@ export async function install(packageLocation: string, registry: string, install const passedVersionIdx = packageLocation.indexOf("@"); if (passedVersionIdx !== -1) { - packageVersion = packageLocation.substr(passedVersionIdx + 1); + packageVersion = packageLocation.substring(passedVersionIdx + 1); } } diff --git a/packages/imperative/src/io/src/IO.ts b/packages/imperative/src/io/src/IO.ts index 6ee08b87f4..8159c7bb0a 100644 --- a/packages/imperative/src/io/src/IO.ts +++ b/packages/imperative/src/io/src/IO.ts @@ -139,7 +139,7 @@ export class IO { let createDir: string = ""; for (const crDir of dirs) { - createDir += (crDir + path.posix.sep); + createDir += crDir + path.posix.sep; IO.createDirSync(createDir); } } diff --git a/packages/imperative/src/logger/src/Logger.ts b/packages/imperative/src/logger/src/Logger.ts index 85e8d6a380..a53c545dc8 100644 --- a/packages/imperative/src/logger/src/Logger.ts +++ b/packages/imperative/src/logger/src/Logger.ts @@ -9,7 +9,7 @@ * */ -import { format, inspect, isNullOrUndefined } from "util"; +import { format, inspect } from "util"; import { ImperativeError } from "../../error/src/ImperativeError"; import * as StackTrace from "stack-trace"; import * as path from "path"; @@ -113,15 +113,15 @@ export class Logger { * @return {[type]} [description] */ public static initLogger(loggingConfig: IConfigLogging) { - if (isNullOrUndefined(loggingConfig)) { + if (loggingConfig == null) { throw new ImperativeError({msg: "Input logging config document is required"}); } - if (isNullOrUndefined(loggingConfig.log4jsConfig)) { + if (loggingConfig.log4jsConfig == null) { throw new ImperativeError({msg: "Input logging config is incomplete, does not contain log4jsConfig"}); } - if (isNullOrUndefined(loggingConfig.log4jsConfig.appenders)) { + if (loggingConfig.log4jsConfig.appenders == null) { throw new ImperativeError({msg: "Input logging config is incomplete, does not contain log4jsConfig.appenders"}); } @@ -297,13 +297,13 @@ export class Logger { public logError(err: ImperativeError): void { this.debug("Stack at time of error logging: %s", new Error().stack); - if (!isNullOrUndefined(err.details.additionalDetails)) { + if (!err.details.additionalDetails) { this.error(err.details.additionalDetails); } - if (!isNullOrUndefined(err.stack)) { + if (!(err.stack == null)) { this.error(err.stack); } - if (!isNullOrUndefined(err.details.causeErrors) && !isNullOrUndefined(err.details.causeErrors.length) + if (!(err.details.causeErrors == null) && !(err.details.causeErrors.length == null) && err.details.causeErrors.length > 0) { for (const cause of err.details.causeErrors) { this.error("Cause error:\n%s", inspect(cause)); @@ -353,7 +353,7 @@ export class Logger { try { const frame: StackTrace.StackFrame[] = StackTrace.parse(new Error()); let callerStackIndex = 1; - while (!frame[callerStackIndex].getFileName() || (frame[callerStackIndex].getFileName().indexOf(path.basename(__filename)) >= 0)) { + while (!frame[callerStackIndex].getFileName() || frame[callerStackIndex].getFileName().indexOf(path.basename(__filename)) >= 0) { // go up the stack until we're outside of the Zowe Logger file callerStackIndex += 1; } diff --git a/packages/imperative/src/logger/src/LoggerConfigBuilder.ts b/packages/imperative/src/logger/src/LoggerConfigBuilder.ts index f943d9167f..a665032baa 100644 --- a/packages/imperative/src/logger/src/LoggerConfigBuilder.ts +++ b/packages/imperative/src/logger/src/LoggerConfigBuilder.ts @@ -10,7 +10,6 @@ */ import { IConfigLogging } from "./doc/IConfigLogging"; -import { IO } from "../../io"; import * as path from "path"; import * as os from "os"; @@ -28,11 +27,11 @@ export class LoggerConfigBuilder { /** * @deprecated Use `DEFAULT_LOGS_DIR` instead. */ - public static readonly DEFAULT_LOG_DIR = IO.FILE_DELIM; + public static readonly DEFAULT_LOG_DIR = path.posix.sep; /** * @deprecated Use `DEFAULT_LOGS_DIR` instead. */ - public static readonly DEFAULT_LOG_FILE_DIR = "logs" + IO.FILE_DELIM; + public static readonly DEFAULT_LOG_FILE_DIR = "logs" + path.posix.sep; public static readonly DEFAULT_LOGS_DIR = "logs"; public static readonly DEFAULT_LOG_FILE_EXT = ".log"; public static readonly DEFAULT_LOG_FILE_MAX_SIZE = 10000000; // 10MB log size diff --git a/packages/imperative/src/operations/__tests__/__integration__/Operations.integration.spec.ts b/packages/imperative/src/operations/__tests__/__integration__/Operations.integration.spec.ts index b5273a15e6..be637f6505 100644 --- a/packages/imperative/src/operations/__tests__/__integration__/Operations.integration.spec.ts +++ b/packages/imperative/src/operations/__tests__/__integration__/Operations.integration.spec.ts @@ -13,7 +13,6 @@ import { TestOperations1 } from "../operation/TestOperations1"; import { TestOperations4 } from "../operation/TestOperations4"; -import { isNullOrUndefined } from "util"; import { TestOperations3 } from "../operation/TestOperations3"; import { IOperationResult, Operation, Operations } from "../../index"; @@ -305,7 +304,7 @@ describe("Operation Infrastructure", () => { function checkResults(operationActualResults: IOperationResult, operationExpectedResults: Array>) { - if (isNullOrUndefined(operationActualResults)) { + if (operationActualResults == null) { expect(0).toEqual(1); let currentOperationResults: IOperationResult = operationActualResults; for (const result of operationExpectedResults) { @@ -327,7 +326,7 @@ function checkResults(operationActualResults: IOperationResult, currentOperationResults = currentOperationResults.nextOperationResult; } - if (!isNullOrUndefined(currentOperationResults)) { + if (!(currentOperationResults == null)) { // more results than expected - fail expect(0).toEqual(1); } diff --git a/packages/imperative/src/operations/src/Operation.ts b/packages/imperative/src/operations/src/Operation.ts index e616531aee..7e8bedd4ce 100644 --- a/packages/imperative/src/operations/src/Operation.ts +++ b/packages/imperative/src/operations/src/Operation.ts @@ -185,7 +185,7 @@ export abstract class Operation implements ITaskWithStatus { operationUndoPossible: false, operationUndoFailed: false, operationUndoAttempted: false, - critical: (criticalOperation != null ? criticalOperation : false), + critical: criticalOperation != null ? criticalOperation : false, output: null, infoMessages: [], errorMessages: [] @@ -317,7 +317,7 @@ export abstract class Operation implements ITaskWithStatus { * @param {string} message: The result message you wish to append. */ set operationResultMessage(message: string) { - this.mOperationResult.resultMessage += (" " + message); + this.mOperationResult.resultMessage += " " + message; } /** diff --git a/packages/imperative/src/operations/src/Operations.ts b/packages/imperative/src/operations/src/Operations.ts index 4ea02bf2a4..507ded9d01 100644 --- a/packages/imperative/src/operations/src/Operations.ts +++ b/packages/imperative/src/operations/src/Operations.ts @@ -11,7 +11,6 @@ import { IOperationResultReady, Operation } from "./Operation"; import { IOperationResult } from "./doc/IOperationResult"; -import { isNullOrUndefined } from "util"; import { TextUtils } from "../../utilities"; import { TaskProgress } from "./TaskProgress"; @@ -109,7 +108,7 @@ export abstract class Operations extends Operation { } public get statusMessage(): string { - if (isNullOrUndefined(this.mOverallStatusMessage)) { + if (this.mOverallStatusMessage == null) { return this.mOperationList[this.mCurrentOperation].statusMessage; } else { @@ -123,12 +122,12 @@ export abstract class Operations extends Operation { * @returns {number} percentComplete weighted against how many operations are complete */ public get percentComplete(): number { - const percentPerOp: number = (TaskProgress.ONE_HUNDRED_PERCENT / this.mOperationList.length); - const currentOpPercentComplete = isNullOrUndefined(this.mOperationList[this.mCurrentOperation].percentComplete) + const percentPerOp: number = TaskProgress.ONE_HUNDRED_PERCENT / this.mOperationList.length; + const currentOpPercentComplete = this.mOperationList[this.mCurrentOperation].percentComplete == null ? 0 : this.mOperationList[this.mCurrentOperation].percentComplete; return Math.ceil(percentPerOp * this.mCurrentOperation + // how many operations completed so far (each 100%) - (percentPerOp * (currentOpPercentComplete / TaskProgress.ONE_HUNDRED_PERCENT))); + percentPerOp * (currentOpPercentComplete / TaskProgress.ONE_HUNDRED_PERCENT)); // what is the percent complete of the current operation in the list? weight that against number of ops } @@ -269,7 +268,7 @@ export abstract class Operations extends Operation { private prepareForUndo(): void { this.log.debug("Building list of undo operation actions"); let currentOperationResult: IOperationResult = this.mOperationResults; - while (!isNullOrUndefined(currentOperationResult)) { + while (!(currentOperationResult == null)) { if (currentOperationResult.operationUndoPossible && !currentOperationResult.operationUndoAttempted) { this.log.debug("Adding operation (" + currentOperationResult.operationName + ") to undo list."); diff --git a/packages/imperative/src/profiles/src/utils/ProfileUtils.ts b/packages/imperative/src/profiles/src/utils/ProfileUtils.ts index d38aa308d4..2e67fe118a 100644 --- a/packages/imperative/src/profiles/src/utils/ProfileUtils.ts +++ b/packages/imperative/src/profiles/src/utils/ProfileUtils.ts @@ -11,7 +11,6 @@ import { IProfileTypeConfiguration } from "../doc/config/IProfileTypeConfiguration"; import { IProfileLoaded } from "../doc/response/IProfileLoaded"; -import { isNullOrUndefined } from "util"; import * as nodePath from "path"; /** @@ -46,9 +45,9 @@ export class ProfileUtils { */ public static flattenDependencies(dependencyResponses: IProfileLoaded[]): IProfileLoaded[] { let flatten: IProfileLoaded[] = []; - if (!isNullOrUndefined(dependencyResponses)) { + if (!(dependencyResponses == null)) { for (const response of dependencyResponses) { - const moreDependencies = (!isNullOrUndefined(response.dependencyLoadResponses)) ? + const moreDependencies = !(response.dependencyLoadResponses == null) ? JSON.parse(JSON.stringify(response.dependencyLoadResponses)) : []; flatten.push(response); delete response.dependencyLoadResponses; diff --git a/packages/imperative/src/profiles/src/validation/__tests__/ProfileValidation.unit.test.ts b/packages/imperative/src/profiles/src/validation/__tests__/ProfileValidation.unit.test.ts index 04691e2eef..8b74413713 100644 --- a/packages/imperative/src/profiles/src/validation/__tests__/ProfileValidation.unit.test.ts +++ b/packages/imperative/src/profiles/src/validation/__tests__/ProfileValidation.unit.test.ts @@ -334,7 +334,7 @@ describe("We should provide the ability to validate Imperative CLI profiles by t let expectedWords: string[] = []; const findExpectedWordsInTask = (task: IProfileValidationTask) => { expectedWords = expectedWords.concat(task.description.split(" ")); - for (const dependent of (task.dependentTasks || [])) { + for (const dependent of task.dependentTasks || []) { findExpectedWordsInTask(dependent); } }; diff --git a/packages/imperative/src/profiles/src/validation/api/ProfileValidator.ts b/packages/imperative/src/profiles/src/validation/api/ProfileValidator.ts index 6b4dc0f79a..aaacbba40d 100644 --- a/packages/imperative/src/profiles/src/validation/api/ProfileValidator.ts +++ b/packages/imperative/src/profiles/src/validation/api/ProfileValidator.ts @@ -17,7 +17,6 @@ import { VALIDATION_OUTCOME } from "../doc/IProfileValidationTask"; import { IProfileValidationTaskResult } from "../doc/IProfileValidationTaskResult"; -import { isNullOrUndefined } from "util"; import { Logger, LoggerUtils } from "../../../../logger"; import { TextUtils } from "../../../../utilities"; import { IPromiseWithProgress, ITaskWithStatus, TaskProgress, TaskStage } from "../../../../operations"; @@ -84,7 +83,7 @@ export class ProfileValidator { let numTasksToComplete = 0; const countTasks = (task: IProfileValidationTask) => { numTasksToComplete++; - if (!isNullOrUndefined(task.dependentTasks)) { + if (!(task.dependentTasks == null)) { for (const dependent of task.dependentTasks) { countTasks(dependent); } @@ -117,7 +116,7 @@ export class ProfileValidator { }; report.taskResults.push(skippedResult); tasksCompleted++; - if (!isNullOrUndefined(dependentTask.dependentTasks)) { + if (!(dependentTask.dependentTasks == null)) { for (const grandDependent of dependentTask.dependentTasks) { skipDependentTask(grandDependent, result); } @@ -125,7 +124,7 @@ export class ProfileValidator { }; const taskFunction: IProfileValidationTaskFunction = currentTask.taskFunction; - progress.percentComplete = (((tasksCompleted) / numTasksToComplete) * TaskProgress.ONE_HUNDRED_PERCENT); + progress.percentComplete = tasksCompleted / numTasksToComplete * TaskProgress.ONE_HUNDRED_PERCENT; progress.statusMessage = TextUtils.formatMessage("Checking '%s' (%d of %d)", currentTask.name, tasksCompleted + 1, numTasksToComplete); try { @@ -137,7 +136,7 @@ export class ProfileValidator { report.taskResults.push(result); log.debug("Profile validation task result: task name: %s, outcome %s, description %s, associated endpoints: %s", result.taskName, this.outcomeToString(result.outcome), result.resultDescription, - (isNullOrUndefined(result.associatedEndpoints) ? "none" : result.associatedEndpoints.join(", "))); + result.associatedEndpoints == null ? "none" : result.associatedEndpoints.join(", ")); // set the overall status of the validation based on this outcome // only 100% success is considered a successful validation @@ -148,7 +147,7 @@ export class ProfileValidator { // mark the validation failed if any task fails report.overallResult = "Failed"; } - if (!isNullOrUndefined(currentTask.dependentTasks)) { + if (!(currentTask.dependentTasks == null)) { if (result.outcome === "Failed" || result.outcome === "Warning") { log.warn("Parent task %s failed, skipping dependent tasks", currentTask.name); @@ -278,7 +277,7 @@ export class ProfileValidator { Description: description, Endpoint: taskResult.associatedEndpoints ? taskResult.associatedEndpoints.join(", ") : undefined }; - if (isNullOrUndefined(result.Endpoint)) { + if (result.Endpoint == null) { // this prevents the endpoint column from showing up // if there are no endpoints specified delete result.Endpoint; @@ -338,7 +337,7 @@ export class ProfileValidator { const allTasks: IProfileValidationTask[] = []; const addTasks = (task: IProfileValidationTask) => { allTasks.push(task); - if (!isNullOrUndefined(task.dependentTasks)) { + if (!(task.dependentTasks == null)) { for (const dependent of task.dependentTasks) { addTasks(dependent); } diff --git a/packages/imperative/src/rest/__tests__/client/AbstractRestClient.unit.test.ts b/packages/imperative/src/rest/__tests__/client/AbstractRestClient.unit.test.ts index 73ed3d54b8..0860187746 100644 --- a/packages/imperative/src/rest/__tests__/client/AbstractRestClient.unit.test.ts +++ b/packages/imperative/src/rest/__tests__/client/AbstractRestClient.unit.test.ts @@ -944,7 +944,7 @@ describe("AbstractRestClient tests", () => { callback(newEmit); await ProcessUtils.nextTick(() => { - newEmit.emit("data", gzipBuffer.slice(0, -10)); + newEmit.emit("data", gzipBuffer.subarray(0, -10)); }); await ProcessUtils.nextTick(() => { @@ -1052,7 +1052,7 @@ describe("AbstractRestClient tests", () => { callback(newEmit); await ProcessUtils.nextTick(() => { - newEmit.emit("data", gzipBuffer.slice(0, -10)); + newEmit.emit("data", gzipBuffer.subarray(0, -10)); }); await ProcessUtils.nextTick(() => { diff --git a/packages/imperative/src/rest/__tests__/client/__model__/CustomRestClient.ts b/packages/imperative/src/rest/__tests__/client/__model__/CustomRestClient.ts index e43dea2642..d76e08f1f2 100644 --- a/packages/imperative/src/rest/__tests__/client/__model__/CustomRestClient.ts +++ b/packages/imperative/src/rest/__tests__/client/__model__/CustomRestClient.ts @@ -9,7 +9,6 @@ * */ -import { isNullOrUndefined } from "util"; import { RestClient } from "../../../src/client/RestClient"; import { Headers } from "../../../src/client/Headers"; @@ -29,7 +28,7 @@ export class CustomRestClient extends RestClient { * @memberof ZosmfRestClient */ protected appendHeaders(headers: any[] | undefined): any[] { - if (isNullOrUndefined(headers)) { + if (headers == null) { return [Headers.APPLICATION_JSON]; } else { headers.push(Headers.APPLICATION_JSON); diff --git a/packages/imperative/src/rest/__tests__/client/__model__/MockHttpRequestResponse.ts b/packages/imperative/src/rest/__tests__/client/__model__/MockHttpRequestResponse.ts index 67181c76e1..5306899a13 100644 --- a/packages/imperative/src/rest/__tests__/client/__model__/MockHttpRequestResponse.ts +++ b/packages/imperative/src/rest/__tests__/client/__model__/MockHttpRequestResponse.ts @@ -10,8 +10,6 @@ */ import { EventEmitter } from "events"; -import { isNullOrUndefined } from "util"; - /** * Simulate http(s).clientRequest or http(s).clientRequest callback invoked * @export @@ -48,7 +46,7 @@ export class MockHttpRequestResponse extends EventEmitter { * @memberof RequestOrResponse */ get statusCode() { - if (isNullOrUndefined(this.mStatus)) { + if (this.mStatus == null) { this.mStatus = "200"; } return this.mStatus; diff --git a/packages/imperative/src/rest/src/client/AbstractRestClient.ts b/packages/imperative/src/rest/src/client/AbstractRestClient.ts index 204292662e..469613cd5f 100644 --- a/packages/imperative/src/rest/src/client/AbstractRestClient.ts +++ b/packages/imperative/src/rest/src/client/AbstractRestClient.ts @@ -531,7 +531,7 @@ export abstract class AbstractRestClient { this.setTransferFlags(options.headers); const logResource = path.posix.join(path.posix.sep, - (this.session.ISession.basePath == null ? "" : this.session.ISession.basePath), resource); + this.session.ISession.basePath == null ? "" : this.session.ISession.basePath, resource); this.log.trace("Rest request: %s %s:%s%s %s", request, this.session.ISession.hostname, this.session.ISession.port, logResource, this.session.ISession.user ? "as user " + this.session.ISession.user : ""); @@ -865,8 +865,8 @@ export abstract class AbstractRestClient { finalError.host = this.mSession.ISession.hostname; finalError.basePath = this.mSession.ISession.basePath; finalError.httpStatus = httpStatus; - finalError.errno = (nodeClientError != null) ? nodeClientError.errno : undefined; - finalError.syscall = (nodeClientError != null) ? nodeClientError.syscall : undefined; + finalError.errno = nodeClientError != null ? nodeClientError.errno : undefined; + finalError.syscall = nodeClientError != null ? nodeClientError.syscall : undefined; finalError.payload = this.mWriteData; finalError.headers = this.mReqHeaders; finalError.resource = this.mResource; @@ -938,7 +938,7 @@ export abstract class AbstractRestClient { * @memberof AbstractRestClient */ private setTransferFlags(headers: http.OutgoingHttpHeaders) { - if ((headers[Headers.CONTENT_TYPE]) != null) { + if (headers[Headers.CONTENT_TYPE] != null) { const contentType = headers[Headers.CONTENT_TYPE]; if (contentType === Headers.APPLICATION_JSON[Headers.CONTENT_TYPE]) { this.mIsJson = true; @@ -958,8 +958,8 @@ export abstract class AbstractRestClient { if (this.response == null) { return false; } else { - return (this.response.statusCode >= RestConstants.HTTP_STATUS_200 && - this.response.statusCode < RestConstants.HTTP_STATUS_300); + return this.response.statusCode >= RestConstants.HTTP_STATUS_200 && + this.response.statusCode < RestConstants.HTTP_STATUS_300; } } diff --git a/packages/imperative/src/rest/src/client/RestClient.ts b/packages/imperative/src/rest/src/client/RestClient.ts index 6702ca9f4d..7ba3c7ab0a 100644 --- a/packages/imperative/src/rest/src/client/RestClient.ts +++ b/packages/imperative/src/rest/src/client/RestClient.ts @@ -501,7 +501,7 @@ export class RestClient extends AbstractRestClient { * @memberof RestClient */ public static hasQueryString(query: string): boolean { - return (query.slice(-1) !== RestConstants.QUERY_ID); + return query.slice(-1) !== RestConstants.QUERY_ID; } /** diff --git a/packages/imperative/src/rest/src/session/ConnectionPropsForSessCfg.ts b/packages/imperative/src/rest/src/session/ConnectionPropsForSessCfg.ts index 13f3952cb8..f7af5e7f4c 100644 --- a/packages/imperative/src/rest/src/session/ConnectionPropsForSessCfg.ts +++ b/packages/imperative/src/rest/src/session/ConnectionPropsForSessCfg.ts @@ -145,9 +145,9 @@ export class ConnectionPropsForSessCfg { } const isTokenIrrelevant = ConnectionPropsForSessCfg.propHasValue(sessCfgToUse.tokenValue) === false || - (connOpts.supportedAuthTypes && !connOpts.supportedAuthTypes.includes(SessConstants.AUTH_TYPE_TOKEN)); + connOpts.supportedAuthTypes && !connOpts.supportedAuthTypes.includes(SessConstants.AUTH_TYPE_TOKEN); const isCertIrrelevant = ConnectionPropsForSessCfg.propHasValue(sessCfgToUse.cert) === false || - (connOpts.supportedAuthTypes && !connOpts.supportedAuthTypes.includes(SessConstants.AUTH_TYPE_CERT_PEM)); + connOpts.supportedAuthTypes && !connOpts.supportedAuthTypes.includes(SessConstants.AUTH_TYPE_CERT_PEM); if (isTokenIrrelevant && isCertIrrelevant) { if (ConnectionPropsForSessCfg.propHasValue(sessCfgToUse.user) === false && !doNotPromptForValues.includes("user")) { promptForValues.push("user"); diff --git a/packages/imperative/src/security/__tests__/CredentialManagerFactory.unit.test.ts b/packages/imperative/src/security/__tests__/CredentialManagerFactory.unit.test.ts index d724faadaf..008d094289 100644 --- a/packages/imperative/src/security/__tests__/CredentialManagerFactory.unit.test.ts +++ b/packages/imperative/src/security/__tests__/CredentialManagerFactory.unit.test.ts @@ -110,8 +110,8 @@ describe("CredentialManagerFactory", () => { beforeEach(async () => { // Generate a random name so we can verify that different names work - emulated.pluginName = generateRandomAlphaNumericString(Math.floor((Math.random() * nameMaxLength) + 1)); - emulated.cliName = generateRandomAlphaNumericString(Math.floor((Math.random() * nameMaxLength) + 1)); + emulated.pluginName = generateRandomAlphaNumericString(Math.floor(Math.random() * nameMaxLength + 1)); + emulated.cliName = generateRandomAlphaNumericString(Math.floor(Math.random() * nameMaxLength + 1)); }); afterEach(() => { diff --git a/packages/imperative/src/security/__tests__/DefaultCredentialManager.unit.test.ts b/packages/imperative/src/security/__tests__/DefaultCredentialManager.unit.test.ts index 822d4f51a4..0847f9a10d 100644 --- a/packages/imperative/src/security/__tests__/DefaultCredentialManager.unit.test.ts +++ b/packages/imperative/src/security/__tests__/DefaultCredentialManager.unit.test.ts @@ -76,8 +76,8 @@ describe("DefaultCredentialManager", () => { // Jest doesn't let us mock require.resolve, so instead we purposely // fail the import and look for module path in the error message const fakeCliPath = "/root/fakeCli"; - const mainModule = process.mainModule; - process.mainModule = { filename: fakeCliPath } as any; + const mainModule = require.main; + require.main = { filename: fakeCliPath } as any; const resolveSpy = jest.spyOn(path, "resolve").mockReturnValue(fakeCliPath); // Force enter the try catch @@ -95,14 +95,14 @@ describe("DefaultCredentialManager", () => { expect(error.message).toContain("Cannot resolve module"); expect(error.message).toContain(fakeCliPath); } finally { - process.mainModule = mainModule; + require.main = mainModule; resolveSpy.mockRestore(); } }); it("should look for keytar in local node_modules folder", async () => { - const mainModule = process.mainModule; - process.mainModule = { filename: "/root/fakeCli" } as any; + const mainModule = require.main; + require.main = { filename: "/root/fakeCli" } as any; // Force enter the try catch Object.defineProperty(manager, "keytar", { @@ -118,7 +118,7 @@ describe("DefaultCredentialManager", () => { expect(error).toBeDefined(); expect(error.message).toContain("Cannot assign to read only property"); } finally { - process.mainModule = mainModule; + require.main = mainModule; } }); }); diff --git a/packages/imperative/src/security/src/CredentialManagerFactory.ts b/packages/imperative/src/security/src/CredentialManagerFactory.ts index 011d804068..a382a2ecd2 100644 --- a/packages/imperative/src/security/src/CredentialManagerFactory.ts +++ b/packages/imperative/src/security/src/CredentialManagerFactory.ts @@ -82,13 +82,13 @@ export class CredentialManagerFactory { } // If the display name is not passed, use the cli name - const displayName = (params.displayName == null) ? params.service : params.displayName; + const displayName = params.displayName == null ? params.service : params.displayName; // If a manager override was not passed, use the default keytar manager - const Manager = (params.Manager == null) ? DefaultCredentialManager : params.Manager; + const Manager = params.Manager == null ? DefaultCredentialManager : params.Manager; // Default invalid on failure to false if not specified - params.invalidOnFailure = (params.invalidOnFailure == null) ? false : params.invalidOnFailure; + params.invalidOnFailure = params.invalidOnFailure == null ? false : params.invalidOnFailure; if (this.mManager != null) { // Something tried to change the already existing credential manager, we should stop this. @@ -117,7 +117,7 @@ export class CredentialManagerFactory { if (manager instanceof AbstractCredentialManager) { this.mManager = manager; } else { - const message = (typeof Manager === "string") ? + const message = typeof Manager === "string" ? `The manager provided at ${Manager} does not extend AbstractCredentialManager properly!` : "A bad object was provided to the CredentialManagerFactory.initialize() method. This could be " + "due to a bad plugin."; diff --git a/packages/imperative/src/security/src/CredentialManagerOverride.ts b/packages/imperative/src/security/src/CredentialManagerOverride.ts index ca66b4a64e..a5f545a8d0 100644 --- a/packages/imperative/src/security/src/CredentialManagerOverride.ts +++ b/packages/imperative/src/security/src/CredentialManagerOverride.ts @@ -222,7 +222,7 @@ export class CredentialManagerOverride { "\nReason: " + error.message }); } - if ( typeof(settings.json?.overrides?.CredentialManager) === "undefined") { + if ( typeof settings.json?.overrides?.CredentialManager === "undefined") { throw new ImperativeError({ msg: "The property key 'overrides.CredentialManager' does not exist in settings file = " + settings.fileName diff --git a/packages/imperative/src/security/src/DefaultCredentialManager.ts b/packages/imperative/src/security/src/DefaultCredentialManager.ts index 8a2b9e43ea..513fd446fb 100644 --- a/packages/imperative/src/security/src/DefaultCredentialManager.ts +++ b/packages/imperative/src/security/src/DefaultCredentialManager.ts @@ -116,12 +116,12 @@ export class DefaultCredentialManager extends AbstractCredentialManager { */ public async initialize(): Promise { try { - // Imperative overrides the value of process.mainModule.filename to point to + // Imperative overrides the value of require.main.filename to point to // our calling CLI. Since our caller must supply keytar, we search for keytar // within our caller's path. const requireOpts: any = {}; - if (process.mainModule?.filename != null) { - requireOpts.paths = [process.mainModule.filename, ...require.resolve.paths("@zowe/secrets-for-zowe-sdk")]; + if (require.main?.filename != null) { + requireOpts.paths = [require.main.filename, ...require.resolve.paths("@zowe/secrets-for-zowe-sdk")]; } // use helper function for require.resolve so it can be mocked in jest tests const keytarPath = require.resolve("@zowe/secrets-for-zowe-sdk", requireOpts); diff --git a/packages/imperative/src/security/src/abstract/AbstractCredentialManager.ts b/packages/imperative/src/security/src/abstract/AbstractCredentialManager.ts index 3c17ffc375..c5fae99f43 100644 --- a/packages/imperative/src/security/src/abstract/AbstractCredentialManager.ts +++ b/packages/imperative/src/security/src/abstract/AbstractCredentialManager.ts @@ -11,8 +11,6 @@ /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */ import { ImperativeError } from "../../../error"; -import { isNullOrUndefined } from "util"; - /** * String credential */ @@ -122,7 +120,7 @@ export abstract class AbstractCredentialManager { */ public async save(account: string, secureValue: string): Promise { // Check both username and password are set and are not empty strings. Ah, the magic of JavaScript - if (!isNullOrUndefined(secureValue) && secureValue !== "") { + if (!(secureValue == null) && secureValue !== "") { const encodedString = Buffer.from(`${secureValue}`).toString("base64"); await this.saveCredentials(account, encodedString); } else { diff --git a/packages/imperative/src/utilities/__tests__/diff/WebDiffManager.unit.test.ts b/packages/imperative/src/utilities/__tests__/diff/WebDiffManager.unit.test.ts index 76a1884b5f..17f451f0b7 100644 --- a/packages/imperative/src/utilities/__tests__/diff/WebDiffManager.unit.test.ts +++ b/packages/imperative/src/utilities/__tests__/diff/WebDiffManager.unit.test.ts @@ -26,7 +26,7 @@ describe("WebDiffManager", () => { const fakePatchDiff = "test"; const cliHome: string = "packages/__tests__/fakeCliHome"; const webDiffDir: string = path.join(cliHome, 'web-diff'); - const mainModule = process.mainModule; + const mainModule = require.main; beforeAll(async () => { const configs: IImperativeConfig = { @@ -36,7 +36,7 @@ describe("WebDiffManager", () => { }; - (process.mainModule as any) = { + (require.main as any) = { filename: "fakeCliCmd" }; @@ -51,7 +51,7 @@ describe("WebDiffManager", () => { await Imperative.init(configs); }); afterAll(() => { - process.mainModule = mainModule; + require.main = mainModule; // removing test dir generated by the test const rimraf = require('rimraf'); rimraf.sync('packages/__tests__'); diff --git a/packages/imperative/src/utilities/src/CliUtils.ts b/packages/imperative/src/utilities/src/CliUtils.ts index 435eb96e65..8082613889 100644 --- a/packages/imperative/src/utilities/src/CliUtils.ts +++ b/packages/imperative/src/utilities/src/CliUtils.ts @@ -51,7 +51,7 @@ export class CliUtils { * @returns {string} - e.g. --my-option */ public static getDashFormOfOption(optionName: string): string { - if ((optionName !== undefined && optionName !== null) && optionName.length >= 1) { + if (optionName !== undefined && optionName !== null && optionName.length >= 1) { const dashes = optionName.length > 1 ? Constants.OPT_LONG_DASH : Constants.OPT_SHORT_DASH; return dashes + optionName; } else { @@ -123,7 +123,7 @@ export class CliUtils { let args: any = {}; // Construct the precedence order to iterate through the profiles - let profileOrder: any = (definitions.required != null) ? definitions.required : []; + let profileOrder: any = definitions.required != null ? definitions.required : []; if (definitions.optional != null) { profileOrder = profileOrder.concat(definitions.optional); } @@ -170,11 +170,11 @@ export class CliUtils { // If both case properties are present in the profile, use the one that matches // the option name explicitly - const value = (profileKebab !== undefined && profileCamel !== undefined) ? - ((opt.name === cases.kebabCase) ? profileKebab : profileCamel) : - ((profileKebab !== undefined) ? profileKebab : profileCamel); + const value = profileKebab !== undefined && profileCamel !== undefined ? + opt.name === cases.kebabCase ? profileKebab : profileCamel : + profileKebab !== undefined ? profileKebab : profileCamel; const keys = CliUtils.setOptionValue(opt.name, - ("aliases" in opt) ? (opt as ICommandOptionDefinition).aliases : [], + "aliases" in opt ? (opt as ICommandOptionDefinition).aliases : [], value ); args = {...args, ...keys}; @@ -257,7 +257,7 @@ export class CliUtils { } const keys = CliUtils.setOptionValue(opt.name, - ("aliases" in opt) ? (opt as ICommandOptionDefinition).aliases : [], + "aliases" in opt ? (opt as ICommandOptionDefinition).aliases : [], envValue ); args = {...args, ...keys}; @@ -495,7 +495,7 @@ export class CliUtils { prompt: message, silent: opts?.hideText, replace: opts?.maskChar, - timeout: secToWait ? (secToWait * 1000) : null // eslint-disable-line @typescript-eslint/no-magic-numbers + timeout: secToWait ? secToWait * 1000 : null // eslint-disable-line @typescript-eslint/no-magic-numbers }); if (opts?.hideText) { process.stdout.write("\r\n"); diff --git a/packages/imperative/src/utilities/src/JSONUtils.ts b/packages/imperative/src/utilities/src/JSONUtils.ts index e8aa97d7c8..babd013da0 100644 --- a/packages/imperative/src/utilities/src/JSONUtils.ts +++ b/packages/imperative/src/utilities/src/JSONUtils.ts @@ -10,7 +10,6 @@ */ import { ImperativeError } from "../../error"; -import { isNullOrUndefined } from "util"; /** * JSON utility to wrap and throw ImperativeErrors @@ -30,7 +29,7 @@ export class JSONUtils { * @throws {ImperativeError} When there was a failure trying to parse a non-zero length data string. */ public static parse(data: string, failMessage?: string): T { - if (isNullOrUndefined(failMessage)) { + if (failMessage == null) { failMessage = "Parse of " + data + " failed"; } try { diff --git a/packages/imperative/src/utilities/src/TextUtils.ts b/packages/imperative/src/utilities/src/TextUtils.ts index c89196b1da..b68b96e383 100644 --- a/packages/imperative/src/utilities/src/TextUtils.ts +++ b/packages/imperative/src/utilities/src/TextUtils.ts @@ -9,7 +9,7 @@ * */ -import { format, isArray, isNullOrUndefined, isNumber, isString } from "util"; +import { format } from "util"; /** * Interface of an explanation map object @@ -41,8 +41,8 @@ export class TextUtils { ): number { const widthSafeGuard = 8; // prevent partial words from continuing over lines const yargs = require("yargs"); - const maxWidth = !isNullOrUndefined(yargs.terminalWidth() && yargs.terminalWidth() > 0) ? - (yargs.terminalWidth() - widthSafeGuard) : preferredWidth; + const maxWidth = !((yargs.terminalWidth() && yargs.terminalWidth() > 0) == null) ? + yargs.terminalWidth() - widthSafeGuard : preferredWidth; return Math.min(preferredWidth, maxWidth); } @@ -68,11 +68,11 @@ export class TextUtils { includeUnexplainedKeys: boolean = true): any { // no object to explain, return null - if (isNullOrUndefined(original)) { + if (original == null) { return null; } // no explanation map, return original - if (isNullOrUndefined(explanationMap)) { + if (explanationMap == null) { return original; } @@ -131,7 +131,7 @@ export class TextUtils { /** * Default options for printing prettyJson */ - const defaultOptions = (!color || process.env.FORCE_COLOR === "0") ? { + const defaultOptions = !color || process.env.FORCE_COLOR === "0" ? { noColor: true } : { keysColor: "yellow" @@ -165,7 +165,7 @@ export class TextUtils { if (!headers) { headers = this.buildHeaders(objects); } - if (isNullOrUndefined(maxColumnWidth)) { + if (maxColumnWidth == null) { maxColumnWidth = this.getRecommendedWidth() / headers.length; } const borderChars = includeBorders ? @@ -276,7 +276,7 @@ export class TextUtils { * @returns {string} - a formatted string with the variables inserted */ public static formatMessage(message: string, ...values: any[]): string { - if (!isNullOrUndefined(values)) { + if (!(values == undefined)) { const isPrintfValue = (value: any) => { let isJson = false; try { @@ -285,9 +285,9 @@ export class TextUtils { } catch (e) { // not json } - return isString(value) || isNumber(value) || isJson; + return typeof value === 'string' || typeof value === 'number' || isJson; }; - if (isArray(values) && values.filter(isPrintfValue).length === values.length) { + if (Array.isArray(values) && values.filter(isPrintfValue).length === values.length) { message = format.apply(this, [message, ...values]); } else { @@ -330,7 +330,7 @@ export class TextUtils { const numberOfCommas = (keysAndValues.match(/[^\\],/g) || []).length; if (!/[^\\]=/g.test(keysAndValues) || - (numberOfEqualsSigns > 1 && numberOfCommas !== (numberOfEqualsSigns - 1)) + numberOfEqualsSigns > 1 && numberOfCommas !== numberOfEqualsSigns - 1 ) { throw new Error("The keys and values provided are not in the expected format. Example of expected format: " + keyValueExample); } diff --git a/packages/provisioning/src/ListRegistryInstances.ts b/packages/provisioning/src/ListRegistryInstances.ts index bccb77c3da..8e08a5b8a7 100644 --- a/packages/provisioning/src/ListRegistryInstances.ts +++ b/packages/provisioning/src/ListRegistryInstances.ts @@ -9,7 +9,6 @@ * */ -import { isNullOrUndefined } from "util"; import { ZosmfRestClient, nozOSMFVersion } from "@zowe/core-for-zowe-sdk"; import { AbstractSession } from "@zowe/imperative"; import { ProvisioningValidator } from "./ProvisioningValidator"; @@ -65,10 +64,10 @@ export class ListRegistryInstances { */ public static getResourcesQuery(zOSMFVersion: string, type?: string, externalName?: string) { let query = `${ProvisioningConstants.RESOURCE}/${zOSMFVersion}/${ProvisioningConstants.INSTANCES_RESOURCE}`; - if (!isNullOrUndefined(type)) { + if (!(type == null)) { query += `?${ProvisioningConstants.RESOURCE_TYPE}=${type}`; } - if (!isNullOrUndefined(externalName)) { + if (!(externalName == null)) { query += type ? "&" : "?"; query += `${ProvisioningConstants.RESOURCE_EXTERNAL_NAME}=${externalName}`; } diff --git a/packages/secrets/package.json b/packages/secrets/package.json index 005190ee6a..050fa119a9 100644 --- a/packages/secrets/package.json +++ b/packages/secrets/package.json @@ -39,7 +39,6 @@ "build:debug": "cd src/keyring && napi build --config napi.json --js false --platform", "build:ts": "tsc --pretty", "install": "node scripts/prebuildCheck.js || npm run rebuild", - "lint": "echo 'Nothing to Lint'", "prepack": "node ../../scripts/prepareLicenses.js", "prepublishOnly": "bash scripts/prebuildify.sh", "rebuild": "npx --yes --package=@napi-rs/cli@2.16.2 -- napi build --config src/keyring/napi.json --cargo-cwd src/keyring --platform --release --js=false src/keyring", diff --git a/packages/workflows/src/Create.ts b/packages/workflows/src/Create.ts index f4294311cb..d917d23bb8 100644 --- a/packages/workflows/src/Create.ts +++ b/packages/workflows/src/Create.ts @@ -21,7 +21,6 @@ import { wrongOwner } from "./WorkflowConstants"; import { WorkflowValidator } from "./WorkflowValidator"; -import { isNullOrUndefined } from "util"; import { ICreateWorkflow, accessT } from "./doc/ICreateWorkflow"; import { ICreatedWorkflow } from "./doc/ICreatedWorkflow"; import { ICreatedWorkflowLocal } from "./doc/ICreatedWorkflowLocal"; @@ -96,22 +95,22 @@ export class CreateWorkflow{ accessType: AccessType, deleteCompletedJobs: DeleteCompletedJobs }; - if (!isNullOrUndefined(VariableInputFile)){ + if (!(VariableInputFile == null)){ if (VariableInputFile.charAt(0) === "/" && VariableInputFile.charAt(1) === "/") { VariableInputFile = VariableInputFile.substring(1); } data.variableInputFile = VariableInputFile; } - if (!isNullOrUndefined(Variables)){ + if (!(Variables == null)){ data.variables = this.parseProperties(Variables); } - if (isNullOrUndefined(AssignToOwner)){ + if (AssignToOwner == null){ data.assignToOwner = true; } - if (isNullOrUndefined(AccessType)){ + if (AccessType == null){ data.accessType = "Public"; } - if (isNullOrUndefined(DeleteCompletedJobs)){ + if (DeleteCompletedJobs == null){ data.deleteCompletedJobs = false; } @@ -210,7 +209,7 @@ export class CreateWorkflow{ await Upload.fileToUssFile(session, localFile, remoteFile, { binary: true }); } catch (error) { throw new ImperativeError({ - msg : "Failed to create temporary uss file\n" + (error.message) + "\n" + (error.additionalDetails) + msg : "Failed to create temporary uss file\n" + error.message + "\n" + error.additionalDetails }); } } diff --git a/packages/workflows/src/Start.ts b/packages/workflows/src/Start.ts index cfa0147afd..e1866c2d58 100644 --- a/packages/workflows/src/Start.ts +++ b/packages/workflows/src/Start.ts @@ -15,7 +15,6 @@ import { ZosmfRestClient, nozOSMFVersion } from "@zowe/core-for-zowe-sdk"; import { WorkflowConstants, noWorkflowKey } from "./WorkflowConstants"; import { WorkflowValidator } from "./WorkflowValidator"; import { IStartWorkflow, startT } from "./doc/IStartWorkflow"; -import { isNullOrUndefined } from "util"; /** * Class to handle starting of zOSMF workflow instance @@ -51,7 +50,7 @@ export class StartWorkflow{ // TODO error if stepName doesn't exist + add to unit and system tests data.stepName = step; } - if (!isNullOrUndefined(subsequent)) { + if (!(subsequent == null)) { data.performSubsequent = subsequent; } diff --git a/packages/zosconsole/src/CollectCommand.ts b/packages/zosconsole/src/CollectCommand.ts index 850e82adcc..47f7ac5d1d 100644 --- a/packages/zosconsole/src/CollectCommand.ts +++ b/packages/zosconsole/src/CollectCommand.ts @@ -12,7 +12,6 @@ import { AbstractSession, Logger, TextUtils } from "@zowe/imperative"; import { ZosmfRestClient } from "@zowe/core-for-zowe-sdk"; -import { isNullOrUndefined } from "util"; import { ConsoleValidator } from "./ConsoleValidator"; import { IZosmfCollectResponse } from "./doc/zosmf/IZosmfCollectResponse"; import { collectProcessingDetails, ConsoleConstants, decreaseCounter, resetCounter } from "./ConsoleConstants"; @@ -70,11 +69,11 @@ export class CollectCommand { public static async collect(session: AbstractSession, parms: ICollectParms, response?: IConsoleResponse) { ConsoleValidator.validateCollectParms(session, parms); - if (isNullOrUndefined(response)) { + if (response == null) { response = ConsoleResponseService.getEmptyConsoleResponse(); } - const consoleName: string = isNullOrUndefined(parms.consoleName) ? ConsoleConstants.RES_DEF_CN : parms.consoleName; + const consoleName: string = parms.consoleName == null ? ConsoleConstants.RES_DEF_CN : parms.consoleName; const maxFollowUpAttempts: number = CollectCommand.getFollowUpAttempts(parms); const timeout = CollectCommand.getTimeout(parms); let collectResponse: IZosmfCollectResponse; @@ -127,7 +126,7 @@ export class CollectCommand { * @return {number} */ private static getFollowUpAttempts(parms: ICollectParms): number { - return isNullOrUndefined(parms) || isNullOrUndefined(parms.followUpAttempts) ? ConsoleConstants.DEFAULT_FOLLOWUP_ATTEMPTS + return parms == null || parms.followUpAttempts == null ? ConsoleConstants.DEFAULT_FOLLOWUP_ATTEMPTS : parms.followUpAttempts; } @@ -138,7 +137,7 @@ export class CollectCommand { * @memberof CollectCommand */ private static getTimeout(parms: ICollectParms): number { - return isNullOrUndefined(parms) || isNullOrUndefined(parms.waitToCollect) ? ConsoleConstants.DEFAULT_TIMEOUT + return parms == null || parms.waitToCollect == null ? ConsoleConstants.DEFAULT_TIMEOUT : parms.waitToCollect * CollectCommand.TO_SECONDS; } diff --git a/packages/zosconsole/src/ConsoleResponseService.ts b/packages/zosconsole/src/ConsoleResponseService.ts index b3a2b1d57f..b83e15ae55 100644 --- a/packages/zosconsole/src/ConsoleResponseService.ts +++ b/packages/zosconsole/src/ConsoleResponseService.ts @@ -10,7 +10,7 @@ */ import { ImperativeError, Logger, TextUtils } from "@zowe/imperative"; -import { inspect, isNullOrUndefined } from "util"; +import { inspect } from "util"; import { IZosmfIssueResponse } from "./doc/zosmf/IZosmfIssueResponse"; import { IConsoleResponse } from "./doc/IConsoleResponse"; import { displayError, displayResponse } from "./ConsoleConstants"; @@ -44,32 +44,32 @@ export class ConsoleResponseService { response.success = true; // If this request specified a solicited keyword, indicate if the keyword was found in the console response. - if (!isNullOrUndefined(zosmfResponse["sol-key-detected"])) { + if (!(zosmfResponse["sol-key-detected"] == null)) { response.keywordDetected = zosmfResponse["sol-key-detected"]; } // Append the command response string to the console response. - if (!isNullOrUndefined(zosmfResponse["cmd-response"]) && zosmfResponse["cmd-response"].length > 0 - && (isNullOrUndefined(processResponses) || processResponses !== false)) { + if (!(zosmfResponse["cmd-response"] == null) && zosmfResponse["cmd-response"].length > 0 + && (processResponses == null || processResponses !== false)) { // the IBM responses sometimes have \r and sometimes \r\n, we will process them our here and hopefully // return them with just \n. response.commandResponse += zosmfResponse["cmd-response"].replace(/\r\n/g, "\n").replace(/\r/g, "\n"); // If there are messages append a line-break to ensure that additional messages collected are // displayed properly. if (response.commandResponse.length > 0 - && (response.commandResponse.indexOf("\n") - !== response.commandResponse.length - 1)) { + && response.commandResponse.indexOf("\n") + !== response.commandResponse.length - 1) { response.commandResponse += "\n"; } } // If the response key is present, set the last response key value in the response. - if (!isNullOrUndefined(zosmfResponse["cmd-response-key"])) { + if (!(zosmfResponse["cmd-response-key"] == null)) { response.lastResponseKey = zosmfResponse["cmd-response-key"]; } // Collect the response url. - if (!isNullOrUndefined(zosmfResponse["cmd-response-url"])) { + if (!(zosmfResponse["cmd-response-url"] == null)) { response.cmdResponseUrl = zosmfResponse["cmd-response-url"]; } @@ -120,9 +120,9 @@ export class ConsoleResponseService { */ public static isLastZosmfResponseEmpty(response: IConsoleResponse): boolean { let result: boolean = true; - if (!isNullOrUndefined(response) && response.zosmfResponse.length > 0) { + if (!(response == null) && response.zosmfResponse.length > 0) { const lastResponse: IZosmfIssueResponse = response.zosmfResponse[response.zosmfResponse.length - 1]; - result = isNullOrUndefined(lastResponse["cmd-response"]) || lastResponse["cmd-response"] === ""; + result = lastResponse["cmd-response"] == null || lastResponse["cmd-response"] === ""; } return result; } diff --git a/packages/zosconsole/src/IssueCommand.ts b/packages/zosconsole/src/IssueCommand.ts index 41b8d3d831..bf127664d3 100644 --- a/packages/zosconsole/src/IssueCommand.ts +++ b/packages/zosconsole/src/IssueCommand.ts @@ -12,7 +12,6 @@ import { AbstractSession, Headers } from "@zowe/imperative"; import { ZosmfRestClient } from "@zowe/core-for-zowe-sdk"; -import { isNullOrUndefined } from "util"; import { IZosmfIssueParms } from "./doc/zosmf/IZosmfIssueParms"; import { ConsoleValidator } from "./ConsoleValidator"; import { IZosmfIssueResponse } from "./doc/zosmf/IZosmfIssueResponse"; @@ -70,7 +69,7 @@ export class IssueCommand { public static async issue(session: AbstractSession, parms: IIssueParms) { ConsoleValidator.validateIssueParms(session, parms); - const consoleName: string = isNullOrUndefined(parms.consoleName) ? ConsoleConstants.RES_DEF_CN : parms.consoleName; + const consoleName: string = parms.consoleName == null ? ConsoleConstants.RES_DEF_CN : parms.consoleName; const commandParms: IZosmfIssueParms = IssueCommand.buildZosmfConsoleApiParameters(parms); let response: IConsoleResponse = ConsoleResponseService.getEmptyConsoleResponse(); @@ -146,13 +145,13 @@ export class IssueCommand { ConsoleValidator.validateIssueParm(parms); const zosmfParms: IZosmfIssueParms = {cmd: parms.command}; - if (!isNullOrUndefined(parms.solicitedKeyword)) { + if (!(parms.solicitedKeyword == null)) { zosmfParms["sol-key"] = parms.solicitedKeyword; } - if (!isNullOrUndefined(parms.sysplexSystem)) { + if (!(parms.sysplexSystem == null)) { zosmfParms.system = parms.sysplexSystem; } - if (!isNullOrUndefined(parms.async)) { + if (!(parms.async == null)) { zosmfParms.async = parms.async; } return zosmfParms; diff --git a/packages/zosfiles/__tests__/__system__/methods/download/Download.system.test.ts b/packages/zosfiles/__tests__/__system__/methods/download/Download.system.test.ts index b7f11029fc..2009a9b432 100644 --- a/packages/zosfiles/__tests__/__system__/methods/download/Download.system.test.ts +++ b/packages/zosfiles/__tests__/__system__/methods/download/Download.system.test.ts @@ -1006,7 +1006,7 @@ describe("Download Data Set", () => { const endpoint: string = ZosFilesConstants.RESOURCE + ZosFilesConstants.RES_USS_FILES + ussname; try { - (await ZosmfRestClient.deleteExpectString(REAL_SESSION, endpoint)); + await ZosmfRestClient.deleteExpectString(REAL_SESSION, endpoint); await delay(delayTime); } catch (err) { Imperative.console.error(err); @@ -1793,7 +1793,7 @@ describe("Download Data Set - encoded", () => { const endpoint: string = ZosFilesConstants.RESOURCE + ZosFilesConstants.RES_USS_FILES + encodeURIComponent(ussname); try { - (await ZosmfRestClient.deleteExpectString(REAL_SESSION, endpoint)); + await ZosmfRestClient.deleteExpectString(REAL_SESSION, endpoint); await delay(delayTime); } catch (err) { Imperative.console.error(err); diff --git a/packages/zosfiles/__tests__/__unit__/methods/download/Download.unit.test.ts b/packages/zosfiles/__tests__/__unit__/methods/download/Download.unit.test.ts index 61bcc19e13..9d7af8b881 100644 --- a/packages/zosfiles/__tests__/__unit__/methods/download/Download.unit.test.ts +++ b/packages/zosfiles/__tests__/__unit__/methods/download/Download.unit.test.ts @@ -1875,7 +1875,7 @@ describe("z/OS Files - Download", () => { caughtError = e; } - const endpoint = path.posix.join(ZosFilesConstants.RESOURCE, ZosFilesConstants.RES_USS_FILES, encodeURIComponent(ussname.substr(1))); + const endpoint = path.posix.join(ZosFilesConstants.RESOURCE, ZosFilesConstants.RES_USS_FILES, encodeURIComponent(ussname.substring(1))); expect(caughtError).toBeUndefined(); expect(response).toEqual({ @@ -1909,7 +1909,7 @@ describe("z/OS Files - Download", () => { caughtError = e; } - const endpoint = path.posix.join(ZosFilesConstants.RESOURCE, ZosFilesConstants.RES_USS_FILES, encodeURIComponent(ussname.substr(1))); + const endpoint = path.posix.join(ZosFilesConstants.RESOURCE, ZosFilesConstants.RES_USS_FILES, encodeURIComponent(ussname.substring(1))); expect(caughtError).toBeUndefined(); expect(response).toEqual({ @@ -1947,7 +1947,7 @@ describe("z/OS Files - Download", () => { caughtError = e; } - const endpoint = path.posix.join(ZosFilesConstants.RESOURCE, ZosFilesConstants.RES_USS_FILES, encodeURIComponent(ussname.substr(1))); + const endpoint = path.posix.join(ZosFilesConstants.RESOURCE, ZosFilesConstants.RES_USS_FILES, encodeURIComponent(ussname.substring(1))); expect(caughtError).toBeUndefined(); expect(response).toEqual({ @@ -1985,7 +1985,7 @@ describe("z/OS Files - Download", () => { caughtError = e; } - const endpoint = path.posix.join(ZosFilesConstants.RESOURCE, ZosFilesConstants.RES_USS_FILES, encodeURIComponent(ussname.substr(1))); + const endpoint = path.posix.join(ZosFilesConstants.RESOURCE, ZosFilesConstants.RES_USS_FILES, encodeURIComponent(ussname.substring(1))); expect(caughtError).toBeUndefined(); expect(response).toEqual({ @@ -2026,7 +2026,7 @@ describe("z/OS Files - Download", () => { caughtError = e; } - const endpoint = path.posix.join(ZosFilesConstants.RESOURCE, ZosFilesConstants.RES_USS_FILES, encodeURIComponent(ussname.substr(1))); + const endpoint = path.posix.join(ZosFilesConstants.RESOURCE, ZosFilesConstants.RES_USS_FILES, encodeURIComponent(ussname.substring(1))); expect(caughtError).toBeUndefined(); expect(response).toEqual({ @@ -2062,7 +2062,7 @@ describe("z/OS Files - Download", () => { caughtError = e; } - const endpoint = path.posix.join(ZosFilesConstants.RESOURCE, ZosFilesConstants.RES_USS_FILES, encodeURIComponent(ussname.substr(1))); + const endpoint = path.posix.join(ZosFilesConstants.RESOURCE, ZosFilesConstants.RES_USS_FILES, encodeURIComponent(ussname.substring(1))); expect(caughtError).toBeUndefined(); expect(response).toEqual({ @@ -2095,7 +2095,7 @@ describe("z/OS Files - Download", () => { caughtError = e; } - const endpoint = path.posix.join(ZosFilesConstants.RESOURCE, ZosFilesConstants.RES_USS_FILES, encodeURIComponent(ussname.substr(1))); + const endpoint = path.posix.join(ZosFilesConstants.RESOURCE, ZosFilesConstants.RES_USS_FILES, encodeURIComponent(ussname.substring(1))); expect(caughtError).toBeUndefined(); expect(response).toEqual({ @@ -2131,7 +2131,7 @@ describe("z/OS Files - Download", () => { caughtError = e; } - const endpoint = path.posix.join(ZosFilesConstants.RESOURCE, ZosFilesConstants.RES_USS_FILES, encodeURIComponent(ussname.substr(1))); + const endpoint = path.posix.join(ZosFilesConstants.RESOURCE, ZosFilesConstants.RES_USS_FILES, encodeURIComponent(ussname.substring(1))); expect(caughtError).toBeUndefined(); expect(response).toEqual({ @@ -2165,7 +2165,7 @@ describe("z/OS Files - Download", () => { caughtError = e; } - const endpoint = path.posix.join(ZosFilesConstants.RESOURCE, ZosFilesConstants.RES_USS_FILES, encodeURIComponent(ussname.substr(1))); + const endpoint = path.posix.join(ZosFilesConstants.RESOURCE, ZosFilesConstants.RES_USS_FILES, encodeURIComponent(ussname.substring(1))); expect(caughtError).toBeUndefined(); expect(response).toEqual({ diff --git a/packages/zosfiles/__tests__/__unit__/methods/search/Search.unit.test.ts b/packages/zosfiles/__tests__/__unit__/methods/search/Search.unit.test.ts index d6b8f2946c..62c1aea359 100644 --- a/packages/zosfiles/__tests__/__unit__/methods/search/Search.unit.test.ts +++ b/packages/zosfiles/__tests__/__unit__/methods/search/Search.unit.test.ts @@ -51,7 +51,7 @@ describe("Search", () => { function generateDS(name: string, pds: boolean, poe: boolean = false, migr: boolean = false) { return { dsname: name, - dsorg: pds ? (poe ? "PO-E" : "PO") : "PS", + dsorg: pds ? poe ? "PO-E" : "PO" : "PS", migr: migr ? "yes" : undefined }; } diff --git a/packages/zosfiles/__tests__/__unit__/methods/upload/Upload.unit.test.ts b/packages/zosfiles/__tests__/__unit__/methods/upload/Upload.unit.test.ts index b755d19f2f..9f232a790e 100644 --- a/packages/zosfiles/__tests__/__unit__/methods/upload/Upload.unit.test.ts +++ b/packages/zosfiles/__tests__/__unit__/methods/upload/Upload.unit.test.ts @@ -2486,7 +2486,7 @@ describe("z/OS Files - Upload", () => { // ignoredfile isDirSpy.mockImplementation((dirPath: string) => { - return (dirPath.endsWith("dir")); + return dirPath.endsWith("dir"); }); getFileListWithFsSpy.mockImplementation((dirPath: any): any[] => { if (dirPath.endsWith("uploaddir")) { diff --git a/packages/zosfiles/__tests__/__unit__/methods/utilities/Utilities.unit.test.ts b/packages/zosfiles/__tests__/__unit__/methods/utilities/Utilities.unit.test.ts index ab030d7d1c..d0f65e09f7 100644 --- a/packages/zosfiles/__tests__/__unit__/methods/utilities/Utilities.unit.test.ts +++ b/packages/zosfiles/__tests__/__unit__/methods/utilities/Utilities.unit.test.ts @@ -179,7 +179,7 @@ describe("Utilities.putUSSPayload", () => { caughtError = e; } - const endpoint = posix.join(ZosFilesConstants.RESOURCE, ZosFilesConstants.RES_USS_FILES, encodeURIComponent(filename.substr(1))); + const endpoint = posix.join(ZosFilesConstants.RESOURCE, ZosFilesConstants.RES_USS_FILES, encodeURIComponent(filename.substring(1))); expect(response).toBeUndefined(); expect(caughtError).toBeDefined(); @@ -213,7 +213,7 @@ describe("Utilities.putUSSPayload", () => { caughtError = e; } - const endpoint = posix.join(ZosFilesConstants.RESOURCE, ZosFilesConstants.RES_USS_FILES, encodeURIComponent(filename.substr(1))); + const endpoint = posix.join(ZosFilesConstants.RESOURCE, ZosFilesConstants.RES_USS_FILES, encodeURIComponent(filename.substring(1))); expect(caughtError).toBeUndefined(); expect(response).toEqual(content); @@ -273,7 +273,7 @@ describe("Utilities.putUSSPayload", () => { caughtError = e; } - const endpoint = posix.join(ZosFilesConstants.RESOURCE, ZosFilesConstants.RES_USS_FILES, encodeURIComponent(filename.substr(1))); + const endpoint = posix.join(ZosFilesConstants.RESOURCE, ZosFilesConstants.RES_USS_FILES, encodeURIComponent(filename.substring(1))); expect(caughtError).toBeUndefined(); expect(response).toEqual(true); @@ -296,7 +296,7 @@ describe("Utilities.putUSSPayload", () => { caughtError = e; } - const endpoint = posix.join(ZosFilesConstants.RESOURCE, ZosFilesConstants.RES_USS_FILES, encodeURIComponent(filename.substr(1))); + const endpoint = posix.join(ZosFilesConstants.RESOURCE, ZosFilesConstants.RES_USS_FILES, encodeURIComponent(filename.substring(1))); expect(caughtError).toBeUndefined(); expect(response).toEqual(true); @@ -317,7 +317,7 @@ describe("Utilities.putUSSPayload", () => { caughtError = e; } - const endpoint = posix.join(ZosFilesConstants.RESOURCE, ZosFilesConstants.RES_USS_FILES, encodeURIComponent(filename.substr(1))); + const endpoint = posix.join(ZosFilesConstants.RESOURCE, ZosFilesConstants.RES_USS_FILES, encodeURIComponent(filename.substring(1))); expect(caughtError).toBeUndefined(); expect(response).toEqual(true); @@ -338,7 +338,7 @@ describe("Utilities.putUSSPayload", () => { caughtError = e; } - const endpoint = posix.join(ZosFilesConstants.RESOURCE, ZosFilesConstants.RES_USS_FILES, encodeURIComponent(filename.substr(1))); + const endpoint = posix.join(ZosFilesConstants.RESOURCE, ZosFilesConstants.RES_USS_FILES, encodeURIComponent(filename.substring(1))); expect(caughtError).toBeUndefined(); expect(response).toEqual(false); @@ -359,7 +359,7 @@ describe("Utilities.putUSSPayload", () => { caughtError = e; } - const endpoint = posix.join(ZosFilesConstants.RESOURCE, ZosFilesConstants.RES_USS_FILES, encodeURIComponent(filename.substr(1))); + const endpoint = posix.join(ZosFilesConstants.RESOURCE, ZosFilesConstants.RES_USS_FILES, encodeURIComponent(filename.substring(1))); expect(caughtError).toBeUndefined(); expect(response).toEqual(false); diff --git a/packages/zosfiles/src/methods/copy/Copy.ts b/packages/zosfiles/src/methods/copy/Copy.ts index 8dacc64bdb..2f29a329c0 100644 --- a/packages/zosfiles/src/methods/copy/Copy.ts +++ b/packages/zosfiles/src/methods/copy/Copy.ts @@ -10,7 +10,7 @@ */ import { AbstractSession, ImperativeError, ImperativeExpect, ITaskWithStatus, Logger, Headers, - TaskStage } from "@zowe/imperative"; + IHeaderContent, TaskStage } from "@zowe/imperative"; import { posix } from "path"; import { Create, CreateDataSetTypeEnum, ICreateDataSetOptions } from "../create"; @@ -18,7 +18,7 @@ import { Get } from "../get"; import { Upload } from "../upload"; import { List } from "../list"; import { IGetOptions } from "../get/doc/IGetOptions"; -import { ZosmfRestClient, ZosmfHeaders, IHeaderContent } from "@zowe/core-for-zowe-sdk"; +import { ZosmfRestClient, ZosmfHeaders } from "@zowe/core-for-zowe-sdk"; import { ZosFilesConstants } from "../../constants/ZosFiles.constants"; import { ZosFilesMessages } from "../../constants/ZosFiles.messages"; import { IZosFilesResponse } from "../../doc/IZosFilesResponse"; @@ -262,7 +262,7 @@ export class Copy { * Don't overwrite an existing dataset or member if overwrite is false */ if(overwriteTarget || !targetFound || - (targetMember != undefined && !targetMemberFound )){ + targetMember != undefined && !targetMemberFound ){ /** * Upload the source data to the target dataset */ @@ -304,7 +304,7 @@ export class Copy { storclass: targetOptions.targetStorageClass, mgntclass: targetOptions.targetManagementClass, dataclass: targetOptions.targetDataClass, - dirblk: parseInt(((dsInfo.dsorg == "PO" || dsInfo.dsorg == "POE" ) ? "10" : "0")) + dirblk: parseInt(dsInfo.dsorg == "PO" || dsInfo.dsorg == "POE" ? "10" : "0") })); } diff --git a/packages/zosfiles/src/methods/create/Create.ts b/packages/zosfiles/src/methods/create/Create.ts index 79f7b50d7a..c22028ca7e 100644 --- a/packages/zosfiles/src/methods/create/Create.ts +++ b/packages/zosfiles/src/methods/create/Create.ts @@ -91,7 +91,7 @@ export class Create { const tPrimary = tempOptions.size.toString().match(/[0-9]+/g); if (!(tPrimary === null || tPrimary === undefined)) { - tempOptions.primary = +(tPrimary.join("")); + tempOptions.primary = +tPrimary.join(""); if (tempOptions.secondary === null || tempOptions.secondary === undefined) { const TEN_PERCENT = 0.10; @@ -153,7 +153,7 @@ export class Create { headers.push({[ZosmfHeaders.X_IBM_RESPONSE_TIMEOUT]: options.responseTimeout.toString()}); } - const tempOptions = JSON.parse(JSON.stringify({ like: likeDataSetName, ...(options || {}) })); + const tempOptions = JSON.parse(JSON.stringify({ like: likeDataSetName, ...options || {} })); Create.dataSetValidateOptions(tempOptions); /* @@ -687,7 +687,7 @@ export class Create { case "perms": { const maxPerm = 777; - if ((options.perms < 0) || (options.perms > maxPerm)) { + if (options.perms < 0 || options.perms > maxPerm) { throw new ImperativeError({ msg: ZosFilesMessages.invalidPermsOption.message + options.perms }); diff --git a/packages/zosfiles/src/methods/delete/Delete.ts b/packages/zosfiles/src/methods/delete/Delete.ts index 8184afbd36..21d7be526f 100644 --- a/packages/zosfiles/src/methods/delete/Delete.ts +++ b/packages/zosfiles/src/methods/delete/Delete.ts @@ -9,11 +9,11 @@ * */ -import { AbstractSession, ImperativeExpect, Logger } from "@zowe/imperative"; +import { AbstractSession, ImperativeExpect, Logger, IHeaderContent } from "@zowe/imperative"; import { posix } from "path"; -import { ZosmfRestClient, IHeaderContent, ZosmfHeaders } from "@zowe/core-for-zowe-sdk"; +import { ZosmfRestClient, ZosmfHeaders } from "@zowe/core-for-zowe-sdk"; import { ZosFilesConstants } from "../../constants/ZosFiles.constants"; import { ZosFilesMessages } from "../../constants/ZosFiles.messages"; import { IZosFilesResponse } from "../../doc/IZosFilesResponse"; diff --git a/packages/zosfiles/src/methods/download/Download.ts b/packages/zosfiles/src/methods/download/Download.ts index 13f495ad62..6962d4b855 100644 --- a/packages/zosfiles/src/methods/download/Download.ts +++ b/packages/zosfiles/src/methods/download/Download.ts @@ -9,13 +9,13 @@ * */ -import { AbstractSession, Headers, ImperativeExpect, IO, Logger, TaskProgress, ImperativeError, TextUtils } from "@zowe/imperative"; +import { AbstractSession, Headers, ImperativeExpect, IO, Logger, TaskProgress, ImperativeError, TextUtils, IHeaderContent } from "@zowe/imperative"; import { posix, join, relative } from "path"; import * as fs from "fs"; import * as util from "util"; -import { ZosmfRestClient, IHeaderContent, ZosmfHeaders, asyncPool } from "@zowe/core-for-zowe-sdk"; +import { ZosmfRestClient, ZosmfHeaders, asyncPool } from "@zowe/core-for-zowe-sdk"; import { ZosFilesConstants } from "../../constants/ZosFiles.constants"; import { ZosFilesMessages } from "../../constants/ZosFiles.messages"; import { IZosFilesResponse } from "../../doc/IZosFilesResponse"; @@ -666,7 +666,7 @@ export class Download { // For each item in the listing... for (const item of list) { - if (item.name === "." || item.name === ".." || item.name === "..." || (!fileOptions.includeHidden && /(^|\/)\./.test(item.name))) { + if (item.name === "." || item.name === ".." || item.name === "..." || !fileOptions.includeHidden && /(^|\/)\./.test(item.name)) { // If the name is ., .., ..., or a hidden file, ignore it. continue; } else if (item.mode.startsWith("-")) { diff --git a/packages/zosfiles/src/methods/invoke/Invoke.ts b/packages/zosfiles/src/methods/invoke/Invoke.ts index 0cbfd1538c..eac6174a50 100644 --- a/packages/zosfiles/src/methods/invoke/Invoke.ts +++ b/packages/zosfiles/src/methods/invoke/Invoke.ts @@ -10,11 +10,11 @@ */ import * as fs from "fs"; -import { AbstractSession, Headers, ImperativeError, ImperativeExpect, Logger } from "@zowe/imperative"; +import { AbstractSession, Headers, ImperativeError, ImperativeExpect, Logger, IHeaderContent } from "@zowe/imperative"; import { posix } from "path"; import * as util from "util"; -import { IHeaderContent, ZosmfRestClient, ZosmfHeaders, getErrorContext } from "@zowe/core-for-zowe-sdk"; +import { ZosmfRestClient, ZosmfHeaders, getErrorContext } from "@zowe/core-for-zowe-sdk"; import { ZosFilesConstants } from "../../constants/ZosFiles.constants"; import { ZosFilesMessages } from "../../constants/ZosFiles.messages"; import { IZosFilesResponse } from "../../doc/IZosFilesResponse"; diff --git a/packages/zosfiles/src/methods/list/List.ts b/packages/zosfiles/src/methods/list/List.ts index 10d8a29da0..4046d6095f 100644 --- a/packages/zosfiles/src/methods/list/List.ts +++ b/packages/zosfiles/src/methods/list/List.ts @@ -419,7 +419,7 @@ export class List { } // Exclude names of data sets - for (const pattern of (options.excludePatterns || [])) { + for (const pattern of options.excludePatterns || []) { const response = await List.dataSet(session, pattern); response.apiResponse.items.forEach((dataSetObj: IZosmfListResponse) => { const responseIndex = zosmfResponses.findIndex(response => response.dsname === dataSetObj.dsname); diff --git a/packages/zosfiles/src/methods/mount/Mount.ts b/packages/zosfiles/src/methods/mount/Mount.ts index ea1a565cb5..cb88b27248 100644 --- a/packages/zosfiles/src/methods/mount/Mount.ts +++ b/packages/zosfiles/src/methods/mount/Mount.ts @@ -12,7 +12,6 @@ import { AbstractSession, ImperativeExpect, ImperativeError } from "@zowe/imperative"; import { IMountFsOptions } from "./doc/IMountFsOptions"; -import { isNullOrUndefined } from "util"; import { ZosmfRestClient, ZosmfHeaders } from "@zowe/core-for-zowe-sdk"; import { ZosFilesConstants } from "../../constants/ZosFiles.constants"; import { ZosFilesMessages } from "../../constants/ZosFiles.messages"; @@ -48,7 +47,7 @@ export class Mount { ImperativeExpect.toBeDefinedAndNonBlank(mountPoint, ZosFilesMessages.missingMountPoint.message); // Removes undefined properties - const tempOptions = !isNullOrUndefined(options) ? JSON.parse(JSON.stringify(options)) : {}; + const tempOptions = !(options == null) ? JSON.parse(JSON.stringify(options)) : {}; this.fsValidateOptions(tempOptions); tempOptions.action = "mount"; @@ -96,7 +95,7 @@ export class Mount { switch (option) { case "mode": - if ((options.mode !== "rdonly") && (options.mode !== "rdwr")) { + if (options.mode !== "rdonly" && options.mode !== "rdwr") { throw new ImperativeError({ msg: ZosFilesMessages.invalidMountModeOption.message + options.mode }); diff --git a/packages/zosfiles/src/methods/rename/Rename.ts b/packages/zosfiles/src/methods/rename/Rename.ts index 2c6d07ccc3..0e1be569a4 100644 --- a/packages/zosfiles/src/methods/rename/Rename.ts +++ b/packages/zosfiles/src/methods/rename/Rename.ts @@ -9,10 +9,10 @@ * */ -import { AbstractSession, ImperativeExpect, Logger, Headers } from "@zowe/imperative"; +import { AbstractSession, ImperativeExpect, Logger, Headers, IHeaderContent } from "@zowe/imperative"; import { posix } from "path"; -import { ZosmfRestClient, IHeaderContent, ZosmfHeaders } from "@zowe/core-for-zowe-sdk"; +import { ZosmfRestClient, ZosmfHeaders } from "@zowe/core-for-zowe-sdk"; import { ZosFilesConstants } from "../../constants/ZosFiles.constants"; import { ZosFilesMessages } from "../../constants/ZosFiles.messages"; import { IZosFilesResponse } from "../../doc/IZosFilesResponse"; diff --git a/packages/zosfiles/src/methods/search/Search.ts b/packages/zosfiles/src/methods/search/Search.ts index 268a76da6e..e56416d499 100644 --- a/packages/zosfiles/src/methods/search/Search.ts +++ b/packages/zosfiles/src/methods/search/Search.ts @@ -222,7 +222,7 @@ export class Search { // Update the progress bar if (searchOptions.progressTask) { // eslint-disable-next-line @typescript-eslint/no-magic-numbers - searchOptions.progressTask.percentComplete = Math.floor(((complete / total) / 2) * 100); + searchOptions.progressTask.percentComplete = Math.floor(complete / total / 2 * 100); searchOptions.progressTask.statusMessage = "Initial mainframe search: " + complete + " of " + total + " entries checked"; } @@ -285,11 +285,11 @@ export class Search { if (searchOptions.progressTask) { if (searchOptions.mainframeSearch) { // eslint-disable-next-line @typescript-eslint/no-magic-numbers - searchOptions.progressTask.percentComplete = Math.floor((((complete / total) / 2) * 100) + 50); + searchOptions.progressTask.percentComplete = Math.floor(complete / total / 2 * 100 + 50); searchOptions.progressTask.statusMessage = "Performing search: " + complete + " of " + total + " entries checked"; } else { // eslint-disable-next-line @typescript-eslint/no-magic-numbers - searchOptions.progressTask.percentComplete = Math.floor(((complete / total) * 100)); + searchOptions.progressTask.percentComplete = Math.floor(complete / total * 100); searchOptions.progressTask.statusMessage = "Performing search: " + complete + " of " + total + " entries checked"; } } diff --git a/packages/zosfiles/src/methods/upload/Upload.ts b/packages/zosfiles/src/methods/upload/Upload.ts index 570796a722..87d5ead3e0 100644 --- a/packages/zosfiles/src/methods/upload/Upload.ts +++ b/packages/zosfiles/src/methods/upload/Upload.ts @@ -9,11 +9,11 @@ * */ -import { AbstractSession, Headers, ImperativeError, ImperativeExpect, IO, Logger, TaskProgress } from "@zowe/imperative"; +import { AbstractSession, Headers, ImperativeError, ImperativeExpect, IO, Logger, TaskProgress, IHeaderContent } from "@zowe/imperative"; import * as fs from "fs"; import * as path from "path"; -import { IHeaderContent, ZosmfHeaders, ZosmfRestClient, asyncPool } from "@zowe/core-for-zowe-sdk"; +import { ZosmfHeaders, ZosmfRestClient, asyncPool } from "@zowe/core-for-zowe-sdk"; import { ZosFilesConstants } from "../../constants/ZosFiles.constants"; import { ZosFilesMessages } from "../../constants/ZosFiles.messages"; @@ -319,8 +319,8 @@ export class Upload { }); } - memberName = dataSetName.substr(dataSetName.indexOf("(")).replace(/[()]/g, ""); - dataSetName = dataSetName.substr(0, dataSetName.indexOf("(")); + memberName = dataSetName.substring(dataSetName.indexOf("(")).replace(/[()]/g, ""); + dataSetName = dataSetName.substring(0, dataSetName.indexOf("(")); } diff --git a/packages/zosfiles/src/methods/utilities/Utilities.ts b/packages/zosfiles/src/methods/utilities/Utilities.ts index e80c41de96..6ea34fd8f8 100644 --- a/packages/zosfiles/src/methods/utilities/Utilities.ts +++ b/packages/zosfiles/src/methods/utilities/Utilities.ts @@ -11,11 +11,11 @@ import { IOptions } from "../../doc/IOptions"; import { IZosFilesResponse } from "../../doc/IZosFilesResponse"; -import { AbstractSession, ImperativeExpect, Headers } from "@zowe/imperative"; +import { AbstractSession, ImperativeExpect, Headers, IHeaderContent } from "@zowe/imperative"; import { Tag } from "./doc/Tag"; import { ZosFilesMessages } from "../../constants/ZosFiles.messages"; import { ZosFilesConstants } from "../../constants/ZosFiles.constants"; -import { ZosmfRestClient, IHeaderContent, ZosmfHeaders } from "@zowe/core-for-zowe-sdk"; +import { ZosmfRestClient, ZosmfHeaders } from "@zowe/core-for-zowe-sdk"; import * as path from "path"; import { ZosFilesUtils } from "../../utils/ZosFilesUtils"; @@ -109,8 +109,8 @@ export class Utilities { if (Object.prototype.hasOwnProperty.call(jsonObj, "stdout")) { const stdout = jsonObj.stdout[0]; // Tests if binary tag set - return (stdout.indexOf("b ") > -1) || - (stdout.indexOf("UTF-") > -1) || (stdout.indexOf("ISO8859-") > -1) || (stdout.indexOf("IBM-850") > -1); + return stdout.indexOf("b ") > -1 || + stdout.indexOf("UTF-") > -1 || stdout.indexOf("ISO8859-") > -1 || stdout.indexOf("IBM-850") > -1; } return false; } diff --git a/packages/zosfiles/src/utils/ZosFilesUtils.ts b/packages/zosfiles/src/utils/ZosFilesUtils.ts index c321711a36..ab2a7c7e55 100644 --- a/packages/zosfiles/src/utils/ZosFilesUtils.ts +++ b/packages/zosfiles/src/utils/ZosFilesUtils.ts @@ -171,7 +171,7 @@ export class ZosFilesUtils { memberName = memberName.replace(/[\d]/gy, ""); // Trunkage lenght to max lenght allowed - memberName = memberName.substr(0, this.MAX_MEMBER_LENGTH); + memberName = memberName.substring(0, this.MAX_MEMBER_LENGTH); return memberName; } diff --git a/packages/zosjobs/__tests__/__system__/DownloadJobs.system.test.ts b/packages/zosjobs/__tests__/__system__/DownloadJobs.system.test.ts index 503afa9f1f..6e1fff50a9 100644 --- a/packages/zosjobs/__tests__/__system__/DownloadJobs.system.test.ts +++ b/packages/zosjobs/__tests__/__system__/DownloadJobs.system.test.ts @@ -68,7 +68,7 @@ describe("Download Jobs - System tests", () => { ACCOUNT = defaultSystem.tso.account; const JOB_LENGTH = 6; - DOWNLOAD_JOB_NAME = REAL_SESSION.ISession.user?.substr(0, JOB_LENGTH).toUpperCase() + "DJ"; + DOWNLOAD_JOB_NAME = REAL_SESSION.ISession.user?.substring(0, JOB_LENGTH).toUpperCase() + "DJ"; JOBCLASS = testEnvironment.systemTestProperties.zosjobs.jobclass; SYSAFF = testEnvironment.systemTestProperties.zosjobs.sysaff; }); @@ -103,7 +103,7 @@ describe("Download Jobs - System tests", () => { ACCOUNT = defaultSystem.tso.account; const JOB_LENGTH = 6; - DOWNLOAD_JOB_NAME = REAL_SESSION.ISession.user?.substr(0, JOB_LENGTH).toUpperCase() + "DJ"; + DOWNLOAD_JOB_NAME = REAL_SESSION.ISession.user?.substring(0, JOB_LENGTH).toUpperCase() + "DJ"; JOBCLASS = testEnvironment.systemTestProperties.zosjobs.jobclass; SYSAFF = testEnvironment.systemTestProperties.zosjobs.sysaff; }); @@ -367,7 +367,7 @@ describe("Download Jobs - System tests - Encoded", () => { } const JOB_LENGTH = 5; - DOWNLOAD_JOB_NAME = REAL_SESSION.ISession.user?.substr(0, JOB_LENGTH).toUpperCase() + "#DJ"; + DOWNLOAD_JOB_NAME = REAL_SESSION.ISession.user?.substring(0, JOB_LENGTH).toUpperCase() + "#DJ"; JOBCLASS = testEnvironment.systemTestProperties.zosjobs.jobclass; SYSAFF = testEnvironment.systemTestProperties.zosjobs.sysaff; }); diff --git a/packages/zosjobs/__tests__/__system__/MonitorJobs.system.test.ts b/packages/zosjobs/__tests__/__system__/MonitorJobs.system.test.ts index 5d3b09ba45..427fa943f4 100644 --- a/packages/zosjobs/__tests__/__system__/MonitorJobs.system.test.ts +++ b/packages/zosjobs/__tests__/__system__/MonitorJobs.system.test.ts @@ -78,7 +78,7 @@ describe("System Tests - Monitor Jobs", () => { ACCOUNT = defaultSystem.tso.account; const JOB_LENGTH = 6; - MONITOR_JOB_NAME = REAL_SESSION.ISession.user.substr(0, JOB_LENGTH).toUpperCase() + "MJ"; + MONITOR_JOB_NAME = REAL_SESSION.ISession.user.substring(0, JOB_LENGTH).toUpperCase() + "MJ"; JOBCLASS = testEnvironment.systemTestProperties.zosjobs.jobclass; SYSAFF = testEnvironment.systemTestProperties.zosjobs.sysaff; @@ -693,7 +693,7 @@ describe("System Tests - Monitor Jobs - Encoded", () => { ACCOUNT = defaultSystem.tso.account; const JOB_LENGTH = 5; - MONITOR_JOB_NAME = REAL_SESSION.ISession.user?.substr(0, JOB_LENGTH).toUpperCase() + "#MJ"; + MONITOR_JOB_NAME = REAL_SESSION.ISession.user?.substring(0, JOB_LENGTH).toUpperCase() + "#MJ"; JOBCLASS = testEnvironment.systemTestProperties.zosjobs.jobclass; SYSAFF = testEnvironment.systemTestProperties.zosjobs.sysaff; diff --git a/packages/zosjobs/src/GetJobs.ts b/packages/zosjobs/src/GetJobs.ts index 9750d88561..5cefdfc953 100644 --- a/packages/zosjobs/src/GetJobs.ts +++ b/packages/zosjobs/src/GetJobs.ts @@ -156,7 +156,7 @@ export class GetJobs { if (params) { if (params.owner) { - query += (JobsConstants.QUERY_OWNER + encodeURIComponent(params.owner)); + query += JobsConstants.QUERY_OWNER + encodeURIComponent(params.owner); } if (params.prefix) { if (params.prefix !== JobsConstants.DEFAULT_PREFIX) { @@ -171,31 +171,31 @@ export class GetJobs { if (RestClient.hasQueryString(query)) { query += JobsConstants.COMBO_ID; } - query += (JobsConstants.QUERY_MAX_JOBS + encodeURIComponent(params.maxJobs)); + query += JobsConstants.QUERY_MAX_JOBS + encodeURIComponent(params.maxJobs); } } if (params.jobid) { if (RestClient.hasQueryString(query)) { query += JobsConstants.COMBO_ID; } - query += (JobsConstants.QUERY_JOBID + encodeURIComponent(params.jobid)); + query += JobsConstants.QUERY_JOBID + encodeURIComponent(params.jobid); } if (params.execData) { if (RestClient.hasQueryString(query)) { query += JobsConstants.COMBO_ID; } - query += (JobsConstants.EXEC_DATA); + query += JobsConstants.EXEC_DATA; } if (params.status) { if (RestClient.hasQueryString(query)) { query += JobsConstants.COMBO_ID; } - query += (JobsConstants.QUERY_STATUS + encodeURIComponent(params.status)); + query += JobsConstants.QUERY_STATUS + encodeURIComponent(params.status); } } let resource = JobsConstants.RESOURCE; - resource += (query === JobsConstants.QUERY_ID) ? "" : query; + resource += query === JobsConstants.QUERY_ID ? "" : query; Logger.getAppLogger().info("GetJobs.getJobsCommon() resource: " + resource); const jobs = await ZosmfRestClient.getExpectJSON(session, resource); diff --git a/packages/zoslogs/src/GetZosLog.ts b/packages/zoslogs/src/GetZosLog.ts index 3cfb362ee2..b003a9a5d5 100644 --- a/packages/zoslogs/src/GetZosLog.ts +++ b/packages/zoslogs/src/GetZosLog.ts @@ -15,7 +15,6 @@ import { IZosLogType } from "./doc/IZosLogType"; import { IZosLogParms } from "./doc/IZosLogParms"; import { GetZosLogValidator } from "./GetZosLogValidator"; import { ZosLogConstants } from "./ZosLogConstants"; -import { isNullOrUndefined } from "util"; /** @@ -37,7 +36,7 @@ export class GetZosLog { let resp: IZosLogType = await ZosmfRestClient.getExpectJSON(session, GetZosLog.getResourcePath(commandParms), [ZosmfHeaders.X_CSRF_ZOSMF_HEADER]); - if (isNullOrUndefined(commandParms.processResponses) || commandParms.processResponses !== false) { + if (commandParms.processResponses == null || commandParms.processResponses !== false) { // the IBM responses sometimes have \r and sometimes \r\n, we will process them our here and hopefully // return them with just \n. resp = JSON.parse(JSON.stringify(resp).replace(/\\r\\n/g, "\\n").replace(/\\r/g, "\\n")); diff --git a/packages/zostso/src/SendTso.ts b/packages/zostso/src/SendTso.ts index fc9a46c7e2..290a23b6bd 100644 --- a/packages/zostso/src/SendTso.ts +++ b/packages/zostso/src/SendTso.ts @@ -12,7 +12,6 @@ import { AbstractSession, Headers } from "@zowe/imperative"; import { ZosmfRestClient } from "@zowe/core-for-zowe-sdk"; -import { isNullOrUndefined } from "util"; import { TsoValidator } from "./TsoValidator"; import { noDataInput, noServletKeyInput, TsoConstants } from "./TsoConstants"; import { ISendTsoParms } from "./doc/input/ISendTsoParms"; @@ -88,10 +87,10 @@ export class SendTso { tsos.push(tso); let messages: string = ""; while (!done) { - if (!isNullOrUndefined(tso.tsoData)) { + if (!(tso.tsoData == null)) { tso.tsoData.forEach((data) => { if (data[TsoConstants.TSO_MESSAGE]) { - messages += (data[TsoConstants.TSO_MESSAGE].DATA + "\n"); + messages += data[TsoConstants.TSO_MESSAGE].DATA + "\n"; } else if (data[TsoConstants.TSO_PROMPT]) { // handle case where we get a PROMPT but no data has been accumulated yet if (messages !== "") { diff --git a/packages/zosuss/src/Shell.ts b/packages/zosuss/src/Shell.ts index 2320071ba6..dc7ff271f5 100644 --- a/packages/zosuss/src/Shell.ts +++ b/packages/zosuss/src/Shell.ts @@ -145,11 +145,11 @@ export class Shell { port: session.ISshSession.port, username: session.ISshSession.user, password: session.ISshSession.password, - privateKey: (session.ISshSession.privateKey != null && session.ISshSession.privateKey !== "undefined") ? + privateKey: session.ISshSession.privateKey != null && session.ISshSession.privateKey !== "undefined" ? require("fs").readFileSync(session.ISshSession.privateKey) : "", passphrase: session.ISshSession.keyPassphrase, authHandler: this.authenticationHandler(authsAllowed), - readyTimeout: (session.ISshSession.handshakeTimeout != null && session.ISshSession.handshakeTimeout !== undefined) ? + readyTimeout: session.ISshSession.handshakeTimeout != null && session.ISshSession.handshakeTimeout !== undefined ? session.ISshSession.handshakeTimeout : 0 } as any); }); From 72c44fa19b42171f582253883c7809c6fb843fba Mon Sep 17 00:00:00 2001 From: "Andrew W. Harn" Date: Wed, 5 Jun 2024 12:28:31 -0400 Subject: [PATCH 03/15] Commit fixes Signed-off-by: Andrew W. Harn --- package.json | 1 + ...ts => cli.zowe.exe.integration.subtest.ts} | 0 packages/cli/scripts/validatePlugins.js | 14 +----- ...md.cli.chainedhandlers.integration.test.ts | 12 ----- ...mentalVariableSettings.integration.test.ts | 11 ---- .../CliProfileManager.integration.test.ts | 7 +-- .../SyntaxValidator.integration.test.ts | 12 ++--- .../ConfigLoading.integration.test.ts | 12 +---- .../help/WebHelpGenerator.unit.test.ts | 10 +--- .../help/WebHelpManager.unit.test.ts | 10 +--- .../src/cmd/src/syntax/SyntaxValidator.ts | 2 +- ...ImperativeEventEmitter.integration.test.ts | 6 --- .../__tests__/Imperative.unit.test.ts | 10 ---- .../__tests__/OverridesLoader.unit.test.ts | 10 +--- .../PluginRequireProvider.unit.test.ts | 8 +-- .../utilities/runValidatePlugin.unit.test.ts | 8 --- .../src/imperative/src/OverridesLoader.ts | 3 +- .../src/plugins/PluginRequireProvider.ts | 3 +- .../plugins/utilities/runValidatePlugin.ts | 4 +- packages/imperative/src/logger/src/Logger.ts | 2 +- .../DefaultCredentialManager.unit.test.ts | 50 ++++--------------- .../security/src/DefaultCredentialManager.ts | 6 ++- .../diff/WebDiffManager.unit.test.ts | 6 --- .../zosfiles/src/methods/create/Create.ts | 2 +- 24 files changed, 40 insertions(+), 169 deletions(-) rename packages/cli/__tests__/daemon/__integration__/{cli.zowe.exe.integration.test.ts => cli.zowe.exe.integration.subtest.ts} (100%) diff --git a/package.json b/package.json index 17b350ce2d..a58cb894f4 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "circularDependencyCheck": "lerna run --parallel circularDependencyCheck -- --warning --no-spinner", "lint": "lerna run lint --parallel --no-bail", "lint:packages": "lerna run lint:packages --parallel --no-bail", + "lint:series": "lerna run lint --no-bail", "lint:tests": "lerna run lint:tests --parallel --no-bail", "test": "npm run test:unit && npm run test:integration && npm run test:system", "test:act": "node scripts/testCliWorkflow.js", diff --git a/packages/cli/__tests__/daemon/__integration__/cli.zowe.exe.integration.test.ts b/packages/cli/__tests__/daemon/__integration__/cli.zowe.exe.integration.subtest.ts similarity index 100% rename from packages/cli/__tests__/daemon/__integration__/cli.zowe.exe.integration.test.ts rename to packages/cli/__tests__/daemon/__integration__/cli.zowe.exe.integration.subtest.ts diff --git a/packages/cli/scripts/validatePlugins.js b/packages/cli/scripts/validatePlugins.js index f0751fe475..61a81552f4 100644 --- a/packages/cli/scripts/validatePlugins.js +++ b/packages/cli/scripts/validatePlugins.js @@ -25,23 +25,13 @@ function validatePlugins() { const fs = require('fs'); + const { spawnSync } = require('child_process'); // only run the zowe command when main has been built const zowePgm = process.cwd() + "/lib/main.js"; if (fs.existsSync(zowePgm)) { - /* Imperative gets its root directory from the mainModule filename, - * which is currently set to this script. Make it look like the script - * being run by NodeJS is main.js. - */ - process.mainModule.filename = zowePgm; - - // add the parameters for the zowe command to validate plugins - process.argv.push("plugins"); - process.argv.push("validate"); - process.argv.push("--no-fail-on-error"); - console.log("Since you re-installed Zowe CLI, we are re-validating any plugins."); - require(zowePgm); + spawnSync("node " + zowePgm + " plugins validate --no-fail-on-error", {shell: true, cwd: process.cwd(), windowsHide: true}); } } diff --git a/packages/imperative/__tests__/__integration__/cmd/__tests__/integration/cli/chained/Cmd.cli.chainedhandlers.integration.test.ts b/packages/imperative/__tests__/__integration__/cmd/__tests__/integration/cli/chained/Cmd.cli.chainedhandlers.integration.test.ts index 511809045e..151002209e 100644 --- a/packages/imperative/__tests__/__integration__/cmd/__tests__/integration/cli/chained/Cmd.cli.chainedhandlers.integration.test.ts +++ b/packages/imperative/__tests__/__integration__/cmd/__tests__/integration/cli/chained/Cmd.cli.chainedhandlers.integration.test.ts @@ -27,18 +27,6 @@ describe("cmd-cli chained handlers", () => { }); }); - const mainModule = require.main; - - beforeEach(() => { - (require.main as any) = { - filename: __filename - }; - }); - - afterEach(() => { - require.main = mainModule; - }); - it("should not allow us to configure chained handlers that map arguments to indices beyond " + "the end of the list of chained handlers (edge case - one beyond the length of the array)", async () => { const fakeHandler = "my_handler_here"; diff --git a/packages/imperative/__tests__/__integration__/imperative/__tests__/__integration__/api/env/EnvironmentalVariableSettings.integration.test.ts b/packages/imperative/__tests__/__integration__/imperative/__tests__/__integration__/api/env/EnvironmentalVariableSettings.integration.test.ts index 56e053c14a..1642572478 100644 --- a/packages/imperative/__tests__/__integration__/imperative/__tests__/__integration__/api/env/EnvironmentalVariableSettings.integration.test.ts +++ b/packages/imperative/__tests__/__integration__/imperative/__tests__/__integration__/api/env/EnvironmentalVariableSettings.integration.test.ts @@ -15,17 +15,6 @@ import { EnvironmentalVariableSettings, Imperative } from "../../../../../../../src"; describe("environmental variable integration", () => { - const mainModule = require.main; - - beforeEach(() => { - (require.main as any) = { - filename: __filename - }; - }); - - afterEach(() => { - require.main = mainModule; - }); it ("should be able to extract the values for the environment variables", () => { process.env.IMP_INTEGRATION_TESTING_IMPERATIVE_LOG_LEVEL = "THIS IS A TEST"; diff --git a/packages/imperative/__tests__/src/packages/cmd/__integration__/CliProfileManager.integration.test.ts b/packages/imperative/__tests__/src/packages/cmd/__integration__/CliProfileManager.integration.test.ts index 86025d97f7..23761347e8 100644 --- a/packages/imperative/__tests__/src/packages/cmd/__integration__/CliProfileManager.integration.test.ts +++ b/packages/imperative/__tests__/src/packages/cmd/__integration__/CliProfileManager.integration.test.ts @@ -21,15 +21,11 @@ import { bananaProfile, getConfig, PROFILE_TYPE } from "./CliProfileManagerTestC let TEST_ENVIRONMENT: ITestEnvironment; describe("Cli Profile Manager", () => { - const mainModule = require.main; const testLogger = TestLogger.getTestLogger(); const profileTypeOne = "banana"; beforeAll(async () => { - (require.main as any) = { - filename: __filename - }; - + TEST_ENVIRONMENT = await SetupTestEnvironment.createTestEnv({ cliHomeEnvVar: "CMD_CLI_CLI_HOME", testName: "basic_profile_mgr" @@ -37,7 +33,6 @@ describe("Cli Profile Manager", () => { }); afterAll(() => { - require.main = mainModule; TestUtil.rimraf(TEST_ENVIRONMENT.workingDir); }); diff --git a/packages/imperative/__tests__/src/packages/cmd/__integration__/SyntaxValidator.integration.test.ts b/packages/imperative/__tests__/src/packages/cmd/__integration__/SyntaxValidator.integration.test.ts index 66d773f89d..cecc818ed2 100644 --- a/packages/imperative/__tests__/src/packages/cmd/__integration__/SyntaxValidator.integration.test.ts +++ b/packages/imperative/__tests__/src/packages/cmd/__integration__/SyntaxValidator.integration.test.ts @@ -18,7 +18,7 @@ import { TestLogger } from "../../../../src/TestLogger"; import { createUniqueTestDataDir, rimraf } from "../../../TestUtil"; import { AbstractHelpGenerator } from "../../../../../src/cmd/src/help/abstract/AbstractHelpGenerator"; import { DefaultHelpGenerator } from "../../../../../src/cmd/src/help/DefaultHelpGenerator"; -import { IProfileTypeConfiguration } from "../../../../../src/index"; +import { IProfileTypeConfiguration, ImperativeConfig } from "../../../../../src/index"; const ENV_PREFIX = "INTEGRATION_TEST"; const TEST_HOME = createUniqueTestDataDir(); @@ -43,13 +43,9 @@ const DUMMY_PROFILE_TYPE_CONFIG: IProfileTypeConfiguration[] = [ ]; describe("Imperative should provide advanced syntax validation rules", function () { const home = __dirname + "/validationtests"; - const mainModule = require.main; - beforeAll(function () { - (require.main as any) = { - filename: __filename - }; - return Imperative.init({ + beforeAll(async function () { + await Imperative.init({ productDisplayName: "Validation tests", definitions: [{ name: "banana", @@ -58,9 +54,9 @@ describe("Imperative should provide advanced syntax validation rules", function }], defaultHome: home, }); + ImperativeConfig.instance.callerLocation = __filename }); afterAll(() => { - require.main = mainModule; rimraf(home); }); describe("Advanced syntax validation for commands using a test command", function () { diff --git a/packages/imperative/__tests__/src/packages/imperative/__integration__/ConfigLoading.integration.test.ts b/packages/imperative/__tests__/src/packages/imperative/__integration__/ConfigLoading.integration.test.ts index f6a635a172..ef8ebf2d2a 100644 --- a/packages/imperative/__tests__/src/packages/imperative/__integration__/ConfigLoading.integration.test.ts +++ b/packages/imperative/__tests__/src/packages/imperative/__integration__/ConfigLoading.integration.test.ts @@ -14,19 +14,9 @@ import { IImperativeConfig, Imperative } from "../../../../../src/imperative"; import { ImperativeConfig } from "../../../../../src/utilities"; describe("Imperative should validate config provided by the consumer", function () { - const testDir = T.createUniqueTestDataDir("config-loading"); - const packageJsonPath = testDir + "/package.json"; - const mainModule = require.main; - - beforeAll(() => { - // Temporarily change the main module filename so that the test can work. - (require.main as any) = { - filename: packageJsonPath - }; - }); + const packageJsonPath = __dirname + "/package.json"; afterAll(() => { - require.main = mainModule; T.unlinkSync(packageJsonPath); }); diff --git a/packages/imperative/src/cmd/__tests__/help/WebHelpGenerator.unit.test.ts b/packages/imperative/src/cmd/__tests__/help/WebHelpGenerator.unit.test.ts index 435c196aef..814a3298c2 100644 --- a/packages/imperative/src/cmd/__tests__/help/WebHelpGenerator.unit.test.ts +++ b/packages/imperative/src/cmd/__tests__/help/WebHelpGenerator.unit.test.ts @@ -23,7 +23,6 @@ import { ICommandDefinition } from "../../../cmd/src/doc/ICommandDefinition"; describe("WebHelpGenerator", () => { describe("buildHelp", () => { - const mainModule = require.main; let moduleFileNm: string; let cliHome: string; let configForHelp: IImperativeConfig; @@ -101,19 +100,12 @@ describe("WebHelpGenerator", () => { rimraf.sync(cliHome); - /* require.main.filename was null, so we must give it a value. - * mainModule is a getter of a property, so we mock the property. - */ - (require.main as any) = { - filename: moduleFileNm - }; - // imperative.init does all the setup for WebHelp to be run await Imperative.init(configForHelp); + ImperativeConfig.instance.rootCommandName = moduleFileNm; }); afterAll(() => { - require.main = mainModule; rimraf.sync(cliHome); }); diff --git a/packages/imperative/src/cmd/__tests__/help/WebHelpManager.unit.test.ts b/packages/imperative/src/cmd/__tests__/help/WebHelpManager.unit.test.ts index 884b59998f..8ab28c75fa 100644 --- a/packages/imperative/src/cmd/__tests__/help/WebHelpManager.unit.test.ts +++ b/packages/imperative/src/cmd/__tests__/help/WebHelpManager.unit.test.ts @@ -41,7 +41,6 @@ describe("WebHelpManager", () => { const webHelpDirNm = path.join(mockCliHome, "web-help"); const impCfg: ImperativeConfig = ImperativeConfig.instance; const cmdReponse = new CommandResponse({ silent: false }); - const mainModule = require.main; let opener: any; let instPluginsFileNm: string; let oldProcessEnv: any; @@ -52,13 +51,6 @@ describe("WebHelpManager", () => { rimraf.sync(mockCliHome); - /* getResolvedCmdTree calls getCallerLocation, and we need it to return some string. - * getCallerLocation is a getter of a property, so we mock the property. - */ - (require.main as any) = { - filename: "FakeCli" - }; - // cliHome is a getter of a property, so mock the property Object.defineProperty(impCfg, "cliHome", { configurable: true, @@ -69,6 +61,7 @@ describe("WebHelpManager", () => { // imperative.init does all the setup for WebHelp to be run await Imperative.init(configForHelp); + ImperativeConfig.instance.rootCommandName = "FakeCli"; }); beforeEach(() => { @@ -81,7 +74,6 @@ describe("WebHelpManager", () => { }); afterAll(() => { - require.main = mainModule; rimraf.sync(mockCliHome); }); diff --git a/packages/imperative/src/cmd/src/syntax/SyntaxValidator.ts b/packages/imperative/src/cmd/src/syntax/SyntaxValidator.ts index 1569f9c69f..4a02792b23 100644 --- a/packages/imperative/src/cmd/src/syntax/SyntaxValidator.ts +++ b/packages/imperative/src/cmd/src/syntax/SyntaxValidator.ts @@ -124,7 +124,7 @@ export class SyntaxValidator { * Prevent empty string options, regardless of if they are * required or not e.g. --zosmf-profile (without a value) */ - if (!this.mCommandDefinition.options == null) { + if (!(this.mCommandDefinition.options == null)) { for (const option of this.mCommandDefinition.options) { if (!(commandArguments[option.name] == null) && (option.type !== "stringOrEmpty" && commandArguments[option.name] === "") || diff --git a/packages/imperative/src/events/__tests__/__integration__/ImperativeEventEmitter.integration.test.ts b/packages/imperative/src/events/__tests__/__integration__/ImperativeEventEmitter.integration.test.ts index ff81d4a59a..f1f1d7f677 100644 --- a/packages/imperative/src/events/__tests__/__integration__/ImperativeEventEmitter.integration.test.ts +++ b/packages/imperative/src/events/__tests__/__integration__/ImperativeEventEmitter.integration.test.ts @@ -23,14 +23,9 @@ const iee_s = ImperativeSharedEvents; let cwd = ''; describe("Event Emitter", () => { - const mainModule = require.main; const testLogger = TestLogger.getTestLogger(); beforeAll(async () => { - (require.main as any) = { - filename: __filename - }; - TEST_ENVIRONMENT = await SetupTestEnvironment.createTestEnv({ cliHomeEnvVar: "ZOWE_CLI_HOME", testName: "event_emitter" @@ -47,7 +42,6 @@ describe("Event Emitter", () => { }); afterAll(() => { - require.main = mainModule; TestUtil.rimraf(cwd); }); diff --git a/packages/imperative/src/imperative/__tests__/Imperative.unit.test.ts b/packages/imperative/src/imperative/__tests__/Imperative.unit.test.ts index 06fd293775..667ac0111f 100644 --- a/packages/imperative/src/imperative/__tests__/Imperative.unit.test.ts +++ b/packages/imperative/src/imperative/__tests__/Imperative.unit.test.ts @@ -21,8 +21,6 @@ import * as yargs from "yargs"; import { ImperativeError } from "../../error/src/ImperativeError"; describe("Imperative", () => { - const mainModule = require.main; - const loadImperative = () => { return require("../src/Imperative").Imperative; }; @@ -128,10 +126,6 @@ describe("Imperative", () => { }; beforeEach(() => { - (require.main as any) = { - filename: __filename - }; - jest.resetModules(); // Refresh the imperative load every time @@ -145,10 +139,6 @@ describe("Imperative", () => { Imperative.getPreparedCmdTree = jest.fn(() => mockCmdTree); }); - afterEach(() => { - require.main = mainModule; - }); - describe("init", () => { let defaultConfig = { name: "test-cli", diff --git a/packages/imperative/src/imperative/__tests__/OverridesLoader.unit.test.ts b/packages/imperative/src/imperative/__tests__/OverridesLoader.unit.test.ts index 66722986b5..3baa73b1d1 100644 --- a/packages/imperative/src/imperative/__tests__/OverridesLoader.unit.test.ts +++ b/packages/imperative/src/imperative/__tests__/OverridesLoader.unit.test.ts @@ -23,7 +23,6 @@ import { AppSettings } from "../../settings"; const TEST_MANAGER_NAME = "test manager"; describe("OverridesLoader", () => { - const mainModule = require.main; const mockCredMgrInitialized = jest.fn().mockReturnValue(false); beforeAll(() => { @@ -33,13 +32,6 @@ describe("OverridesLoader", () => { beforeEach(() => { jest.restoreAllMocks(); jest.resetAllMocks(); - (require.main as any) = { - filename: __filename - }; - }); - - afterEach(() => { - require.main = mainModule; }); afterAll(() => { @@ -215,7 +207,7 @@ describe("OverridesLoader", () => { // DON'T YOU EVER DO THIS AFTER THE SPY, IT WILL CAUSE YOU MASSIVE PROBLEMS // I suspect that require.main.filename somehow uses path.resolve (25 times when I ran this) - const expectedArgs = [require.main?.filename, "../", config.overrides?.CredentialManager]; + const expectedArgs = [__filename, "../", config.overrides?.CredentialManager]; const expectedLocation = "/some/random/dummy/location/DummyFile.ts"; jest.spyOn(path, "resolve").mockReturnValueOnce(expectedLocation); diff --git a/packages/imperative/src/imperative/__tests__/plugins/PluginRequireProvider.unit.test.ts b/packages/imperative/src/imperative/__tests__/plugins/PluginRequireProvider.unit.test.ts index 58a79b2ac6..eb6f9845cb 100644 --- a/packages/imperative/src/imperative/__tests__/plugins/PluginRequireProvider.unit.test.ts +++ b/packages/imperative/src/imperative/__tests__/plugins/PluginRequireProvider.unit.test.ts @@ -429,7 +429,7 @@ describe("PluginRequireProvider", () => { try { // The return should be the main module as that is what the module loader does. - expect(modulePrototype.require.call(thisObject, module, testRequireIndicator)).toBe(require.main); + expect(modulePrototype.require.call(thisObject, module, testRequireIndicator)).toBe(null || undefined); // Expect that the require was just called with the module expect(mockedRequire).toHaveBeenCalledTimes(1); @@ -442,7 +442,7 @@ describe("PluginRequireProvider", () => { const submodule = `${module}/submodule/import`; expect(modulePrototype.require.call( thisObject, submodule, testRequireIndicator - )).toBe(require.main); + )).toBe(null || undefined); // Expect that the require was just called with the submodule expect(mockedRequire).toHaveBeenCalledTimes(1); @@ -475,7 +475,7 @@ describe("PluginRequireProvider", () => { try { expect(modulePrototype.require.call( thisObject, module, testRequireIndicator - )).toBe(require.main); + )).toBe(null || undefined); expect(mockedRequire).toHaveBeenCalledTimes(1); expect(mockedRequire).toHaveBeenCalledWith("./", testRequireIndicator); @@ -506,7 +506,7 @@ describe("PluginRequireProvider", () => { try { expect(modulePrototype.require.call( thisObject, module + submoduleImport, testRequireIndicator - )).toBe(require.main); + )).toBe(null || undefined); expect(mockedRequire).toHaveBeenCalledTimes(1); expect(mockedRequire).toHaveBeenCalledWith(packageRoot + submoduleImport, testRequireIndicator); diff --git a/packages/imperative/src/imperative/__tests__/plugins/utilities/runValidatePlugin.unit.test.ts b/packages/imperative/src/imperative/__tests__/plugins/utilities/runValidatePlugin.unit.test.ts index afb62119a7..d700fa9fae 100644 --- a/packages/imperative/src/imperative/__tests__/plugins/utilities/runValidatePlugin.unit.test.ts +++ b/packages/imperative/src/imperative/__tests__/plugins/utilities/runValidatePlugin.unit.test.ts @@ -31,16 +31,8 @@ const spawnSyncOutput = { }; describe("runValidatePlugin", () => { - const mainModule = require.main; - - beforeEach(() => { - (require.main as any) = { - filename: __filename - }; - }); afterEach(() => { - require.main = mainModule; mocks.spawnSync.mockReset(); }); diff --git a/packages/imperative/src/imperative/src/OverridesLoader.ts b/packages/imperative/src/imperative/src/OverridesLoader.ts index f3b2f03ff0..530dee32e4 100644 --- a/packages/imperative/src/imperative/src/OverridesLoader.ts +++ b/packages/imperative/src/imperative/src/OverridesLoader.ts @@ -82,7 +82,8 @@ export class OverridesLoader { if (overrides.CredentialManager != null || this.shouldUseKeytar(packageJson, useTeamConfig)) { let Manager = overrides.CredentialManager; if (typeof overrides.CredentialManager === "string" && !isAbsolute(overrides.CredentialManager)) { - Manager = resolve(require.main.filename, "../", overrides.CredentialManager); + const resolvePath = ImperativeConfig.instance.callerLocation ?? require.main.filename; + Manager = resolve(resolvePath, "../", overrides.CredentialManager); } await CredentialManagerFactory.initialize({ diff --git a/packages/imperative/src/imperative/src/plugins/PluginRequireProvider.ts b/packages/imperative/src/imperative/src/plugins/PluginRequireProvider.ts index b33545d4e1..b7896a3660 100644 --- a/packages/imperative/src/imperative/src/plugins/PluginRequireProvider.ts +++ b/packages/imperative/src/imperative/src/plugins/PluginRequireProvider.ts @@ -160,6 +160,7 @@ export class PluginRequireProvider { */ const regex = this.regex = new RegExp(`^(${internalModules.join("|")})(?:\\/.*)?$`, "gm"); const origRequire = this.origRequire = Module.prototype.require; + const origMain = this.origRequire.main; // Timerify the function if needed // Gave it a name so that we can more easily track it @@ -180,7 +181,7 @@ export class PluginRequireProvider { } // Inject it from the main module dependencies - return origRequire.apply(require.main, args); + return origRequire.apply(origMain, args); } else { // Otherwise use the package dependencies return origRequire.apply(this, args); diff --git a/packages/imperative/src/imperative/src/plugins/utilities/runValidatePlugin.ts b/packages/imperative/src/imperative/src/plugins/utilities/runValidatePlugin.ts index c9c408d188..16b73d2072 100644 --- a/packages/imperative/src/imperative/src/plugins/utilities/runValidatePlugin.ts +++ b/packages/imperative/src/imperative/src/plugins/utilities/runValidatePlugin.ts @@ -10,7 +10,7 @@ */ import { Logger } from "../../../../logger"; -import { ExecUtils } from "../../../../utilities"; +import { ExecUtils, ImperativeConfig } from "../../../../utilities"; import { PMFConstants } from "./PMFConstants"; import { ImperativeError } from "../../../../error"; @@ -30,7 +30,7 @@ import { ImperativeError } from "../../../../error"; export function runValidatePlugin(pluginName: string): string { const extLen = 3; const cmdToRun = process.execPath; - const cliPgmToRun = require.main.filename; + const cliPgmToRun = ImperativeConfig.instance.callerLocation ?? require.main.filename; let cmdToRunArgs: string[] = []; if (cliPgmToRun.substring(cliPgmToRun.length - extLen) === ".ts") { cmdToRunArgs = ["--require", "ts-node/register"]; diff --git a/packages/imperative/src/logger/src/Logger.ts b/packages/imperative/src/logger/src/Logger.ts index a53c545dc8..8c3de0e9db 100644 --- a/packages/imperative/src/logger/src/Logger.ts +++ b/packages/imperative/src/logger/src/Logger.ts @@ -297,7 +297,7 @@ export class Logger { public logError(err: ImperativeError): void { this.debug("Stack at time of error logging: %s", new Error().stack); - if (!err.details.additionalDetails) { + if (err.details.additionalDetails) { this.error(err.details.additionalDetails); } if (!(err.stack == null)) { diff --git a/packages/imperative/src/security/__tests__/DefaultCredentialManager.unit.test.ts b/packages/imperative/src/security/__tests__/DefaultCredentialManager.unit.test.ts index 0847f9a10d..86e2b530a7 100644 --- a/packages/imperative/src/security/__tests__/DefaultCredentialManager.unit.test.ts +++ b/packages/imperative/src/security/__tests__/DefaultCredentialManager.unit.test.ts @@ -12,6 +12,7 @@ jest.mock("@zowe/secrets-for-zowe-sdk"); import * as path from "path"; +import { Module } from "module"; import { DefaultCredentialManager } from ".."; import { keyring as keytar } from "@zowe/secrets-for-zowe-sdk"; import { ImperativeError } from "../../error"; @@ -50,6 +51,9 @@ describe("DefaultCredentialManager", () => { }); describe("initialize", () => { + afterEach(() => { + jest.restoreAllMocks(); + }) it("should properly initialize keytar", async () => { await manager.initialize(); @@ -72,54 +76,22 @@ describe("DefaultCredentialManager", () => { expect(privateManager.loadError.message).toMatch(/^Failed to load Keytar module:/); }); - it("should look for keytar in CLI node_modules folder", async () => { - // Jest doesn't let us mock require.resolve, so instead we purposely - // fail the import and look for module path in the error message - const fakeCliPath = "/root/fakeCli"; - const mainModule = require.main; - require.main = { filename: fakeCliPath } as any; - const resolveSpy = jest.spyOn(path, "resolve").mockReturnValue(fakeCliPath); - - // Force enter the try catch - Object.defineProperty(manager, "keytar", { - writable: false - }); - - try { - await manager.initialize(); - - expect(privateManager.keytar).toBeUndefined(); - expect(privateManager.loadError).toBeInstanceOf(ImperativeError); - const error: Error = privateManager.loadError.causeErrors; - expect(error).toBeDefined(); - expect(error.message).toContain("Cannot resolve module"); - expect(error.message).toContain(fakeCliPath); - } finally { - require.main = mainModule; - resolveSpy.mockRestore(); - } - }); - it("should look for keytar in local node_modules folder", async () => { const mainModule = require.main; - require.main = { filename: "/root/fakeCli" } as any; + jest.spyOn(Module.prototype, "require").mockReturnValue({...require, main: {...mainModule, filename: "/root/fakeCli"} as any} as any); // Force enter the try catch Object.defineProperty(manager, "keytar", { writable: false }); - try { - await manager.initialize(); + await manager.initialize(); - expect(privateManager.keytar).toBeUndefined(); - expect(privateManager.loadError).toBeInstanceOf(ImperativeError); - const error: Error = privateManager.loadError.causeErrors; - expect(error).toBeDefined(); - expect(error.message).toContain("Cannot assign to read only property"); - } finally { - require.main = mainModule; - } + expect(privateManager.keytar).toBeUndefined(); + expect(privateManager.loadError).toBeInstanceOf(ImperativeError); + const error: Error = privateManager.loadError.causeErrors; + expect(error).toBeDefined(); + expect(error.message).toContain("Cannot assign to read only property"); }); }); diff --git a/packages/imperative/src/security/src/DefaultCredentialManager.ts b/packages/imperative/src/security/src/DefaultCredentialManager.ts index 513fd446fb..569f29426a 100644 --- a/packages/imperative/src/security/src/DefaultCredentialManager.ts +++ b/packages/imperative/src/security/src/DefaultCredentialManager.ts @@ -14,6 +14,7 @@ import { ImperativeError } from "../../error"; import { Logger } from "../../logger"; import { keyring as keytar } from "@zowe/secrets-for-zowe-sdk"; // Used for typing purposes only +import { ImperativeConfig } from "../../utilities"; /** * Default Credential Manager is our implementation of the Imperative Credential Manager. This manager invokes methods @@ -120,8 +121,9 @@ export class DefaultCredentialManager extends AbstractCredentialManager { // our calling CLI. Since our caller must supply keytar, we search for keytar // within our caller's path. const requireOpts: any = {}; - if (require.main?.filename != null) { - requireOpts.paths = [require.main.filename, ...require.resolve.paths("@zowe/secrets-for-zowe-sdk")]; + const initPath = ImperativeConfig.instance.callerLocation ?? require.main.filename; + if (initPath != null) { + requireOpts.paths = [initPath, ...require.resolve.paths("@zowe/secrets-for-zowe-sdk")]; } // use helper function for require.resolve so it can be mocked in jest tests const keytarPath = require.resolve("@zowe/secrets-for-zowe-sdk", requireOpts); diff --git a/packages/imperative/src/utilities/__tests__/diff/WebDiffManager.unit.test.ts b/packages/imperative/src/utilities/__tests__/diff/WebDiffManager.unit.test.ts index 17f451f0b7..1efec863bf 100644 --- a/packages/imperative/src/utilities/__tests__/diff/WebDiffManager.unit.test.ts +++ b/packages/imperative/src/utilities/__tests__/diff/WebDiffManager.unit.test.ts @@ -26,7 +26,6 @@ describe("WebDiffManager", () => { const fakePatchDiff = "test"; const cliHome: string = "packages/__tests__/fakeCliHome"; const webDiffDir: string = path.join(cliHome, 'web-diff'); - const mainModule = require.main; beforeAll(async () => { const configs: IImperativeConfig = { @@ -36,10 +35,6 @@ describe("WebDiffManager", () => { }; - (require.main as any) = { - filename: "fakeCliCmd" - }; - Object.defineProperty(ImperativeConfig.instance, "cliHome", { configurable: true, get: jest.fn(() => { @@ -51,7 +46,6 @@ describe("WebDiffManager", () => { await Imperative.init(configs); }); afterAll(() => { - require.main = mainModule; // removing test dir generated by the test const rimraf = require('rimraf'); rimraf.sync('packages/__tests__'); diff --git a/packages/zosfiles/src/methods/create/Create.ts b/packages/zosfiles/src/methods/create/Create.ts index c22028ca7e..590451ee1b 100644 --- a/packages/zosfiles/src/methods/create/Create.ts +++ b/packages/zosfiles/src/methods/create/Create.ts @@ -153,7 +153,7 @@ export class Create { headers.push({[ZosmfHeaders.X_IBM_RESPONSE_TIMEOUT]: options.responseTimeout.toString()}); } - const tempOptions = JSON.parse(JSON.stringify({ like: likeDataSetName, ...options || {} })); + const tempOptions = { like: likeDataSetName, ...options || {} } as ICreateDataSetOptions; Create.dataSetValidateOptions(tempOptions); /* From a9239c90d4b0ddef5872ee1d071b2c0d5b7dae78 Mon Sep 17 00:00:00 2001 From: "Andrew W. Harn" Date: Wed, 5 Jun 2024 13:44:49 -0400 Subject: [PATCH 04/15] Handle if the instance ID provided by provisioning is not defined and abort Signed-off-by: Andrew W. Harn --- .../instanceInfo/cli.provisioning.instanceInfo.system.test.ts | 1 + .../cli.provisioning.instanceVariables.system.test.ts | 1 + .../perform/cli.provisioning.perform.action.system.test.ts | 1 + .../__tests__/__system__/ListInstanceInfo.system.test.ts | 1 + .../__tests__/__system__/ListInstanceVariables.system.test.ts | 1 + .../__tests__/__system__/ListRegistryInstances.system.test.ts | 1 + .../__tests__/__system__/PerformAction.system.test.ts | 1 + 7 files changed, 7 insertions(+) diff --git a/packages/cli/__tests__/provisioning/__system__/list/instanceInfo/cli.provisioning.instanceInfo.system.test.ts b/packages/cli/__tests__/provisioning/__system__/list/instanceInfo/cli.provisioning.instanceInfo.system.test.ts index 1366786404..2e559e0326 100644 --- a/packages/cli/__tests__/provisioning/__system__/list/instanceInfo/cli.provisioning.instanceInfo.system.test.ts +++ b/packages/cli/__tests__/provisioning/__system__/list/instanceInfo/cli.provisioning.instanceInfo.system.test.ts @@ -43,6 +43,7 @@ describe("provisioning list instance-info", () => { instanceID = instance["object-id"]; instanceName = instance["external-name"]; Imperative.console.info(`Provisioned instance: ${instanceName}`); + if (instanceID == null) { throw Error("Cannot continue test - instance ID is undefined"); } }, ProvisioningTestUtils.MAX_TIMEOUT_TIME); it( diff --git a/packages/cli/__tests__/provisioning/__system__/list/instanceVariables/cli.provisioning.instanceVariables.system.test.ts b/packages/cli/__tests__/provisioning/__system__/list/instanceVariables/cli.provisioning.instanceVariables.system.test.ts index b6119c8589..cdb6501a2c 100644 --- a/packages/cli/__tests__/provisioning/__system__/list/instanceVariables/cli.provisioning.instanceVariables.system.test.ts +++ b/packages/cli/__tests__/provisioning/__system__/list/instanceVariables/cli.provisioning.instanceVariables.system.test.ts @@ -38,6 +38,7 @@ describe("provisioning list instance-variables", () => { instance = await ProvisioningTestUtils.getProvisionedInstance(REAL_SESSION, ProvisioningConstants.ZOSMF_VERSION, templateName); instanceID = instance["object-id"]; Imperative.console.info(`Provisioned instance: ${instance["external-name"]}`); + if (instanceID == null) { throw Error("Cannot continue test - instance ID is undefined"); } }, ProvisioningTestUtils.MAX_TIMEOUT_TIME); it("should display instance info(expects first instance in registry to have variables)", async () => { diff --git a/packages/cli/__tests__/provisioning/__system__/perform/cli.provisioning.perform.action.system.test.ts b/packages/cli/__tests__/provisioning/__system__/perform/cli.provisioning.perform.action.system.test.ts index 04d98a8715..880524fa09 100644 --- a/packages/cli/__tests__/provisioning/__system__/perform/cli.provisioning.perform.action.system.test.ts +++ b/packages/cli/__tests__/provisioning/__system__/perform/cli.provisioning.perform.action.system.test.ts @@ -43,6 +43,7 @@ describe("provisioning perform action", () => { instanceID = instance["object-id"]; instanceName = instance["external-name"]; Imperative.console.info(`Provisioned instance: ${instanceName}`); + if (instanceID == null) { throw Error("Cannot continue test - instance ID is undefined"); } }, ProvisioningTestUtils.MAX_TIMEOUT_TIME); it("should successfully perform checkStatus action", async () => { diff --git a/packages/provisioning/__tests__/__system__/ListInstanceInfo.system.test.ts b/packages/provisioning/__tests__/__system__/ListInstanceInfo.system.test.ts index 2c1f99dcb1..509353b2d5 100644 --- a/packages/provisioning/__tests__/__system__/ListInstanceInfo.system.test.ts +++ b/packages/provisioning/__tests__/__system__/ListInstanceInfo.system.test.ts @@ -43,6 +43,7 @@ describe("ListInstanceInfo.listInstanceCommon", () => { templateName); instanceID = instance["object-id"]; Imperative.console.info(`Provisioned instance: ${instance["external-name"]}`); + if (instanceID == null) { throw Error("Cannot continue test - instance ID is undefined"); } }); afterAll(async () => { diff --git a/packages/provisioning/__tests__/__system__/ListInstanceVariables.system.test.ts b/packages/provisioning/__tests__/__system__/ListInstanceVariables.system.test.ts index 4ad89b4de6..5bc226c766 100644 --- a/packages/provisioning/__tests__/__system__/ListInstanceVariables.system.test.ts +++ b/packages/provisioning/__tests__/__system__/ListInstanceVariables.system.test.ts @@ -42,6 +42,7 @@ describe("ListInstanceVariables (system)", () => { templateName); instanceID = instance["object-id"]; Imperative.console.info(`Provisioned instance: ${instance["external-name"]}`); + if (instanceID == null) { throw Error("Cannot continue test - instance ID is undefined"); } }); afterAll(async () => { diff --git a/packages/provisioning/__tests__/__system__/ListRegistryInstances.system.test.ts b/packages/provisioning/__tests__/__system__/ListRegistryInstances.system.test.ts index c509f14e7e..3737f60ac9 100644 --- a/packages/provisioning/__tests__/__system__/ListRegistryInstances.system.test.ts +++ b/packages/provisioning/__tests__/__system__/ListRegistryInstances.system.test.ts @@ -43,6 +43,7 @@ describe("ListRegistryInstances (system)", () => { instanceName = instance["external-name"]; instanceID = instance["object-id"]; Imperative.console.info(`Provisioned instance: ${instanceName}`); + if (instanceID == null) { throw Error("Cannot continue test - instance ID is undefined"); } }, ProvisioningTestUtils.MAX_TIMEOUT_TIME); afterAll(async () => { diff --git a/packages/provisioning/__tests__/__system__/PerformAction.system.test.ts b/packages/provisioning/__tests__/__system__/PerformAction.system.test.ts index 7ce4b4249b..84c27ed7d1 100644 --- a/packages/provisioning/__tests__/__system__/PerformAction.system.test.ts +++ b/packages/provisioning/__tests__/__system__/PerformAction.system.test.ts @@ -44,6 +44,7 @@ describe("PerformAction.doProvisioningActionCommon (system)", () => { templateName); instanceID = instance["object-id"]; Imperative.console.info(`Provisioned instance: ${instance["external-name"]}`); + if (instanceID == null) { throw Error("Cannot continue test - instance ID is undefined"); } }); afterAll(async () => { From f89dd32257ea147b6bfb1e5e997d9de0499cfc38 Mon Sep 17 00:00:00 2001 From: "Andrew W. Harn" Date: Wed, 5 Jun 2024 14:46:56 -0400 Subject: [PATCH 05/15] Fix mistake Signed-off-by: Andrew W. Harn --- .../__tests__/__system__/DownloadJobs.system.test.ts | 12 ++++++++++-- packages/zosjobs/src/DownloadJobs.ts | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/zosjobs/__tests__/__system__/DownloadJobs.system.test.ts b/packages/zosjobs/__tests__/__system__/DownloadJobs.system.test.ts index 6e1fff50a9..ce1e1bedaa 100644 --- a/packages/zosjobs/__tests__/__system__/DownloadJobs.system.test.ts +++ b/packages/zosjobs/__tests__/__system__/DownloadJobs.system.test.ts @@ -116,7 +116,11 @@ describe("Download Jobs - System tests", () => { encoding: "IBM-037" }); - const expectedFile = DownloadJobs.getSpoolDownloadFile(alteredjesJCLJobFile, false, downloadDir); + const expectedFile = DownloadJobs.getSpoolDownloadFilePath({ + jobFile: alteredjesJCLJobFile, + omitJobidDirectory: false, + outDir: downloadDir + }); expect(IO.existsSync(expectedFile)).toEqual(true); expect(IO.readFileSync(expectedFile).toString()).toContain("¬"); expect(IO.readFileSync(expectedFile).toString()).not.toContain("^"); @@ -132,7 +136,11 @@ describe("Download Jobs - System tests", () => { }); for (const file of alteredjobFiles) { - const expectedFile = DownloadJobs.getSpoolDownloadFile(file, false, downloadDir); + const expectedFile = DownloadJobs.getSpoolDownloadFilePath({ + jobFile: file, + omitJobidDirectory: false, + outDir: downloadDir + }); expect(IO.existsSync(expectedFile)).toEqual(true); if (file.ddname === "JESJCL") { expect(IO.readFileSync(expectedFile).toString()).toContain("¬"); diff --git a/packages/zosjobs/src/DownloadJobs.ts b/packages/zosjobs/src/DownloadJobs.ts index c449bf556b..996714dc6d 100644 --- a/packages/zosjobs/src/DownloadJobs.ts +++ b/packages/zosjobs/src/DownloadJobs.ts @@ -123,7 +123,7 @@ export class DownloadJobs { parameters += "?mode=record"; } - if (!parms.binary && !parms.record && parms.encoding?.trim() != "") { + if (!parms.binary && !parms.record && parms.encoding && parms.encoding.trim() != "") { parameters += "?fileEncoding=" + parms.encoding; } From 3b1a2553e261c3c85438db3c7346febbb87a1e1f Mon Sep 17 00:00:00 2001 From: "Andrew W. Harn" Date: Thu, 6 Jun 2024 14:05:01 -0400 Subject: [PATCH 06/15] Fix mistakes that were made Signed-off-by: Andrew W. Harn --- .../CliProfileManager.integration.test.ts | 1 - .../SyntaxValidator.integration.test.ts | 2 +- .../DefaultCredentialManager.unit.test.ts | 3 +-- .../methods/create/Create.unit.test.ts | 25 +++++++++++++------ .../zosfiles/src/methods/create/Create.ts | 4 +-- 5 files changed, 21 insertions(+), 14 deletions(-) diff --git a/packages/imperative/__tests__/src/packages/cmd/__integration__/CliProfileManager.integration.test.ts b/packages/imperative/__tests__/src/packages/cmd/__integration__/CliProfileManager.integration.test.ts index 23761347e8..22ebad1b72 100644 --- a/packages/imperative/__tests__/src/packages/cmd/__integration__/CliProfileManager.integration.test.ts +++ b/packages/imperative/__tests__/src/packages/cmd/__integration__/CliProfileManager.integration.test.ts @@ -25,7 +25,6 @@ describe("Cli Profile Manager", () => { const profileTypeOne = "banana"; beforeAll(async () => { - TEST_ENVIRONMENT = await SetupTestEnvironment.createTestEnv({ cliHomeEnvVar: "CMD_CLI_CLI_HOME", testName: "basic_profile_mgr" diff --git a/packages/imperative/__tests__/src/packages/cmd/__integration__/SyntaxValidator.integration.test.ts b/packages/imperative/__tests__/src/packages/cmd/__integration__/SyntaxValidator.integration.test.ts index cecc818ed2..6f80c0c2c0 100644 --- a/packages/imperative/__tests__/src/packages/cmd/__integration__/SyntaxValidator.integration.test.ts +++ b/packages/imperative/__tests__/src/packages/cmd/__integration__/SyntaxValidator.integration.test.ts @@ -54,7 +54,7 @@ describe("Imperative should provide advanced syntax validation rules", function }], defaultHome: home, }); - ImperativeConfig.instance.callerLocation = __filename + ImperativeConfig.instance.callerLocation = __filename; }); afterAll(() => { rimraf(home); diff --git a/packages/imperative/src/security/__tests__/DefaultCredentialManager.unit.test.ts b/packages/imperative/src/security/__tests__/DefaultCredentialManager.unit.test.ts index 86e2b530a7..90ccb040ab 100644 --- a/packages/imperative/src/security/__tests__/DefaultCredentialManager.unit.test.ts +++ b/packages/imperative/src/security/__tests__/DefaultCredentialManager.unit.test.ts @@ -11,7 +11,6 @@ jest.mock("@zowe/secrets-for-zowe-sdk"); -import * as path from "path"; import { Module } from "module"; import { DefaultCredentialManager } from ".."; import { keyring as keytar } from "@zowe/secrets-for-zowe-sdk"; @@ -53,7 +52,7 @@ describe("DefaultCredentialManager", () => { describe("initialize", () => { afterEach(() => { jest.restoreAllMocks(); - }) + }); it("should properly initialize keytar", async () => { await manager.initialize(); diff --git a/packages/zosfiles/__tests__/__unit__/methods/create/Create.unit.test.ts b/packages/zosfiles/__tests__/__unit__/methods/create/Create.unit.test.ts index 107ab0c6a9..3740bf2abf 100644 --- a/packages/zosfiles/__tests__/__unit__/methods/create/Create.unit.test.ts +++ b/packages/zosfiles/__tests__/__unit__/methods/create/Create.unit.test.ts @@ -10,7 +10,8 @@ */ import { ImperativeError, TextUtils } from "@zowe/imperative"; -import { Create, CreateDataSetTypeEnum, ZosFilesConstants, CreateDefaults, Invoke, ICreateVsamOptions, List } from "../../../../src"; +import { Create, CreateDataSetTypeEnum, ZosFilesConstants, CreateDefaults, Invoke, + ICreateVsamOptions, List, IZosFilesResponse } from "../../../../src"; import { ZosmfHeaders, ZosmfRestClient } from "@zowe/core-for-zowe-sdk"; import { ZosFilesMessages } from "../../../../src/constants/ZosFiles.messages"; import { IZosFilesOptions } from "../../../../src/doc/IZosFilesOptions"; @@ -29,7 +30,8 @@ describe("Create data set", () => { dsname: likePsDataSetName, dsorg: "PS", spacu: "TRK", - blksz: "800" + blksz: "800", + dsntype: "BASIC" }; beforeEach(() => { @@ -170,9 +172,13 @@ describe("Create data set", () => { dsOptions.dsntype = "PDS"; dsOptions.responseTimeout = 5; + let response: IZosFilesResponse; - const response = await Create.dataSet(dummySession, CreateDataSetTypeEnum.DATA_SET_SEQUENTIAL, dataSetName, dsOptions); - + try { + response = await Create.dataSet(dummySession, CreateDataSetTypeEnum.DATA_SET_SEQUENTIAL, dataSetName, dsOptions); + } finally { + dsOptions.responseTimeout = undefined; // This was messing up other tests if the code was not hit + } expect(response.success).toBe(true); expect(response.commandResponse).toContain("created successfully"); expect(mySpy).toHaveBeenCalledWith( @@ -183,11 +189,11 @@ describe("Create data set", () => { ...CreateDefaults.DATA_SET.SEQUENTIAL, ...dsOptions, ...{ + responseTimeout: 5, // Therefore this is required, because it is no longer in dsOptions secondary: 1 } }) ); - dsOptions.responseTimeout = undefined; }); it("should be able to allocate like from a sequential data set", async () => { @@ -232,8 +238,12 @@ describe("Create data set", () => { }; }); - const response2 = await Create.dataSetLike(dummySession, dataSetName, likePsDataSetName, dsOptions); - + let response2: IZosFilesResponse; + try { + response2 = await Create.dataSetLike(dummySession, dataSetName, likePsDataSetName, dsOptions); + } finally { + dsOptions.responseTimeout = undefined; + } expect(response2.success).toBe(true); expect(response2.commandResponse).toContain("created successfully"); expect(mySpy).toHaveBeenCalledWith( @@ -248,7 +258,6 @@ describe("Create data set", () => { } }) ); - dsOptions.responseTimeout = undefined; }); it("should be able to create a sequential data set using the primary allocation and secondary allocation options", async () => { diff --git a/packages/zosfiles/src/methods/create/Create.ts b/packages/zosfiles/src/methods/create/Create.ts index 590451ee1b..d0f378b9e3 100644 --- a/packages/zosfiles/src/methods/create/Create.ts +++ b/packages/zosfiles/src/methods/create/Create.ts @@ -153,7 +153,7 @@ export class Create { headers.push({[ZosmfHeaders.X_IBM_RESPONSE_TIMEOUT]: options.responseTimeout.toString()}); } - const tempOptions = { like: likeDataSetName, ...options || {} } as ICreateDataSetOptions; + const tempOptions = JSON.parse(JSON.stringify({ like: likeDataSetName, ...options || {} })); Create.dataSetValidateOptions(tempOptions); /* @@ -262,7 +262,7 @@ export class Create { case "dsntype": { // Key to create a PDSE. - const type: string = tempOptions.dsntype.toUpperCase(); + const type: string = tempOptions.dsntype?.toUpperCase(); const availableTypes = ["BASIC", "EXTPREF", "EXTREQ", "HFS", "LARGE", "PDS", "LIBRARY", "PIPE"]; if (availableTypes.indexOf(type) === -1) { throw new ImperativeError({ msg: ZosFilesMessages.invalidDsntypeOption.message + tempOptions.dsntype }); From 24cff302e14138ceae65edc7c3a99fb355e43d08 Mon Sep 17 00:00:00 2001 From: "Andrew W. Harn" Date: Thu, 6 Jun 2024 15:38:49 -0400 Subject: [PATCH 07/15] Change findup import Signed-off-by: Andrew W. Harn --- packages/imperative/src/utilities/src/ImperativeConfig.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/imperative/src/utilities/src/ImperativeConfig.ts b/packages/imperative/src/utilities/src/ImperativeConfig.ts index 2b0d4cdbc4..ff6c17fb83 100644 --- a/packages/imperative/src/utilities/src/ImperativeConfig.ts +++ b/packages/imperative/src/utilities/src/ImperativeConfig.ts @@ -17,6 +17,7 @@ import { EnvironmentalVariableSettings } from "../../imperative/src/env/Environm import { IDaemonContext } from "../../imperative/src/doc/IDaemonContext"; import { ICommandProfileSchema } from "../../cmd"; import { Config } from "../../config"; +import { sync } from "find-up"; /** * This class is used to contain all configuration being set by Imperative. @@ -273,7 +274,7 @@ export class ImperativeConfig { // try to locate the file using find-up first let findupErr: Error; try { - const filePath = require("find-up").sync(file, {cwd: ImperativeConfig.instance.callerLocation}); + const filePath = sync(file, {cwd: ImperativeConfig.instance.callerLocation}); return require(filePath); } catch (e) { // couldn't locate using find-up, try to require directly From 55d70da96c9e6e23cf2700ad81cabee6d4817687 Mon Sep 17 00:00:00 2001 From: Timothy Johnson Date: Fri, 7 Jun 2024 12:17:08 -0400 Subject: [PATCH 08/15] Try to reset require method after plugin tests Signed-off-by: Timothy Johnson --- .../PluginManagementFacility.integration.subtest.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/imperative/__tests__/src/packages/imperative/__integration__/PluginManagementFacility.integration.subtest.ts b/packages/imperative/__tests__/src/packages/imperative/__integration__/PluginManagementFacility.integration.subtest.ts index 62e14fc916..f3d91af151 100644 --- a/packages/imperative/__tests__/src/packages/imperative/__integration__/PluginManagementFacility.integration.subtest.ts +++ b/packages/imperative/__tests__/src/packages/imperative/__integration__/PluginManagementFacility.integration.subtest.ts @@ -13,12 +13,14 @@ import { IO } from "../../../../../src/io"; import * as T from "../../../TestUtil"; import { join } from "path"; import { config } from "../plugins/PluginTestConstants"; +import * as Module from "module"; const testCliNodeModulePath = join(__dirname, "..", "plugins", "test_cli", "node_modules"); const impLibDir = join(__dirname, "../../../../../lib"); describe("Plugin Management Facility", () => { const home = config.defaultHome; + const origRequire = Module.prototype.require; beforeAll(() => { /** @@ -44,6 +46,8 @@ describe("Plugin Management Facility", () => { }); afterAll(() => { + // reset require mock to avoid impacting other tests + Module.prototype.require = origRequire; // remove the subdirectories and symbolic link that we created IO.deleteDirTree(testCliNodeModulePath); }); From 3c8fcce7c26b37a97d75c59b722e74c5c06d2b8a Mon Sep 17 00:00:00 2001 From: "Andrew W. Harn" Date: Fri, 7 Jun 2024 13:27:36 -0400 Subject: [PATCH 09/15] Make flagged changes Signed-off-by: Andrew W. Harn --- packages/imperative/src/utilities/src/TextUtils.ts | 2 +- .../__tests__/__unit__/methods/utilities/Utilities.unit.test.ts | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/imperative/src/utilities/src/TextUtils.ts b/packages/imperative/src/utilities/src/TextUtils.ts index b68b96e383..804cb85465 100644 --- a/packages/imperative/src/utilities/src/TextUtils.ts +++ b/packages/imperative/src/utilities/src/TextUtils.ts @@ -276,7 +276,7 @@ export class TextUtils { * @returns {string} - a formatted string with the variables inserted */ public static formatMessage(message: string, ...values: any[]): string { - if (!(values == undefined)) { + if (!(values == null)) { const isPrintfValue = (value: any) => { let isJson = false; try { diff --git a/packages/zosfiles/__tests__/__unit__/methods/utilities/Utilities.unit.test.ts b/packages/zosfiles/__tests__/__unit__/methods/utilities/Utilities.unit.test.ts index d0f65e09f7..b70e440eb6 100644 --- a/packages/zosfiles/__tests__/__unit__/methods/utilities/Utilities.unit.test.ts +++ b/packages/zosfiles/__tests__/__unit__/methods/utilities/Utilities.unit.test.ts @@ -179,8 +179,6 @@ describe("Utilities.putUSSPayload", () => { caughtError = e; } - const endpoint = posix.join(ZosFilesConstants.RESOURCE, ZosFilesConstants.RES_USS_FILES, encodeURIComponent(filename.substring(1))); - expect(response).toBeUndefined(); expect(caughtError).toBeDefined(); From 73fbe6f0d4293a31f811b295cbe4f42cf4732ab5 Mon Sep 17 00:00:00 2001 From: "Andrew W. Harn" Date: Fri, 7 Jun 2024 13:28:14 -0400 Subject: [PATCH 10/15] Do cleanup Signed-off-by: Andrew W. Harn --- .../env/EnvironmentalVariableSettings.integration.test.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/imperative/__tests__/__integration__/imperative/__tests__/__integration__/api/env/EnvironmentalVariableSettings.integration.test.ts b/packages/imperative/__tests__/__integration__/imperative/__tests__/__integration__/api/env/EnvironmentalVariableSettings.integration.test.ts index 1642572478..a5e1730b23 100644 --- a/packages/imperative/__tests__/__integration__/imperative/__tests__/__integration__/api/env/EnvironmentalVariableSettings.integration.test.ts +++ b/packages/imperative/__tests__/__integration__/imperative/__tests__/__integration__/api/env/EnvironmentalVariableSettings.integration.test.ts @@ -16,6 +16,11 @@ import { EnvironmentalVariableSettings, describe("environmental variable integration", () => { + afterAll(() => { + process.env.IMP_INTEGRATION_TESTING_IMPERATIVE_LOG_LEVEL = ""; + process.env.IMP_INTEGRATION_TESTING_APP_LOG_LEVEL = ""; + }); + it ("should be able to extract the values for the environment variables", () => { process.env.IMP_INTEGRATION_TESTING_IMPERATIVE_LOG_LEVEL = "THIS IS A TEST"; process.env.IMP_INTEGRATION_TESTING_APP_LOG_LEVEL = "THIS IS ANOTHER TEST"; @@ -50,5 +55,8 @@ describe("environmental variable integration", () => { // TODO: I think this is a defect - level is defined as type "string", but returns an object expect(Imperative.api.imperativeLogger.level as any).toBe("ERROR"); expect(Imperative.api.appLogger.level as any).toBe("WARN"); + + process.env[vars.appLogLevel.key] = ""; + process.env[vars.imperativeLogLevel.key] = ""; }); }); From 24019b2c9e34097dcea3f3997bab1985d4921548 Mon Sep 17 00:00:00 2001 From: "Andrew W. Harn" Date: Mon, 10 Jun 2024 09:05:42 -0400 Subject: [PATCH 11/15] Move ConfigLoading integration test to run in band Signed-off-by: Andrew W. Harn --- __tests__/__integration__/imperative.secure.integration.test.ts | 1 + ....integration.test.ts => ConfigLoading.integration.subtest.ts} | 0 2 files changed, 1 insertion(+) rename packages/imperative/__tests__/src/packages/imperative/__integration__/{ConfigLoading.integration.test.ts => ConfigLoading.integration.subtest.ts} (100%) diff --git a/__tests__/__integration__/imperative.secure.integration.test.ts b/__tests__/__integration__/imperative.secure.integration.test.ts index 091d5a557c..8d512750dc 100644 --- a/__tests__/__integration__/imperative.secure.integration.test.ts +++ b/__tests__/__integration__/imperative.secure.integration.test.ts @@ -14,6 +14,7 @@ /* eslint-disable max-len */ describe("Imperative Secure Tests", () => { + require("./../../packages/imperative/__tests__/src/packages/imperative/__integration__/ConfigLoading.integration.subtest"); require("./../../packages/imperative/__tests__/src/packages/imperative/__integration__/PluginManagementFacility.integration.subtest"); require("./../../packages/imperative/__tests__/__integration__/imperative/__tests__/__integration__/cli/config/init/cli.imperative-test-cli.config.init.integration.subtest"); require("./../../packages/imperative/__tests__/__integration__/imperative/__tests__/__integration__/cli/config/auto-init/imperative.test.cli.config.auto-init.fruit.integration.subtest"); diff --git a/packages/imperative/__tests__/src/packages/imperative/__integration__/ConfigLoading.integration.test.ts b/packages/imperative/__tests__/src/packages/imperative/__integration__/ConfigLoading.integration.subtest.ts similarity index 100% rename from packages/imperative/__tests__/src/packages/imperative/__integration__/ConfigLoading.integration.test.ts rename to packages/imperative/__tests__/src/packages/imperative/__integration__/ConfigLoading.integration.subtest.ts From 7706b3a3b8492617d74f93cdc38e70db63db2efc Mon Sep 17 00:00:00 2001 From: "Andrew W. Harn" Date: Mon, 10 Jun 2024 10:14:23 -0400 Subject: [PATCH 12/15] Fix broken test Signed-off-by: Andrew W. Harn --- .../ConfigLoading.integration.subtest.ts | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/packages/imperative/__tests__/src/packages/imperative/__integration__/ConfigLoading.integration.subtest.ts b/packages/imperative/__tests__/src/packages/imperative/__integration__/ConfigLoading.integration.subtest.ts index ef8ebf2d2a..99ab756533 100644 --- a/packages/imperative/__tests__/src/packages/imperative/__integration__/ConfigLoading.integration.subtest.ts +++ b/packages/imperative/__tests__/src/packages/imperative/__integration__/ConfigLoading.integration.subtest.ts @@ -12,15 +12,26 @@ import * as T from "../../../TestUtil"; import { IImperativeConfig, Imperative } from "../../../../../src/imperative"; import { ImperativeConfig } from "../../../../../src/utilities"; +import { dirname } from "path"; +import { existsSync } from "fs"; describe("Imperative should validate config provided by the consumer", function () { - const packageJsonPath = __dirname + "/package.json"; + let packageJsonPath: string; + // This is just to satisfy the type check. As long as we are CommonJS, this should be defined + if (require.main) { + packageJsonPath = dirname(require.main.filename) + "/package.json"; + if (existsSync(packageJsonPath)) { + // Throw an error if package.json exists in the main module dir, since we don't want to overwrite or delete it. + // Let the user decide if it is test data, and delete it if it is left over from a previous test. + throw Error("Package JSON exists at " + packageJsonPath + ". Verify the file is test data and delete if it is."); + } + } afterAll(() => { T.unlinkSync(packageJsonPath); }); - it("We should be able to load our configuration from our package.json", function () { + it("We should be able to load our configuration from our package.json", async function () { const config: IImperativeConfig = { definitions: [ { @@ -35,10 +46,9 @@ describe("Imperative should validate config provided by the consumer", function rootCommandDescription: "My Product CLI" }; T.writeFileSync(packageJsonPath, JSON.stringify({imperative: config, name: "sample"})); - return Imperative.init().then(() => { - // "Display name should have matched our config" - expect(ImperativeConfig.instance.loadedConfig.productDisplayName) - .toEqual(config.productDisplayName); - }); + await Imperative.init(); + + // "Display name should have matched our config" + expect(ImperativeConfig.instance.loadedConfig.productDisplayName).toEqual(config.productDisplayName); }); }); From ed6fdab9c85dfe22c18bf65bd180b5c4f185d1be Mon Sep 17 00:00:00 2001 From: "Andrew W. Harn" Date: Tue, 11 Jun 2024 16:04:57 -0400 Subject: [PATCH 13/15] Make requested changes Signed-off-by: Andrew W. Harn --- packages/.madgerc => .madgerc | 0 packages/cli/scripts/validatePlugins.js | 2 +- packages/cli/src/config/auto-init/ApimlAutoInitHandler.ts | 3 ++- .../__integration__/ConfigLoading.integration.subtest.ts | 4 ++-- .../__tests__/plugins/PluginRequireProvider.unit.test.ts | 2 +- packages/imperative/src/logger/src/Logger.ts | 2 +- .../imperative/src/security/src/DefaultCredentialManager.ts | 6 ++---- packages/imperative/src/utilities/src/TextUtils.ts | 3 ++- packages/zosfiles/src/methods/create/Create.ts | 2 +- 9 files changed, 12 insertions(+), 12 deletions(-) rename packages/.madgerc => .madgerc (100%) diff --git a/packages/.madgerc b/.madgerc similarity index 100% rename from packages/.madgerc rename to .madgerc diff --git a/packages/cli/scripts/validatePlugins.js b/packages/cli/scripts/validatePlugins.js index 61a81552f4..db43b1798b 100644 --- a/packages/cli/scripts/validatePlugins.js +++ b/packages/cli/scripts/validatePlugins.js @@ -31,7 +31,7 @@ function validatePlugins() { const zowePgm = process.cwd() + "/lib/main.js"; if (fs.existsSync(zowePgm)) { console.log("Since you re-installed Zowe CLI, we are re-validating any plugins."); - spawnSync("node " + zowePgm + " plugins validate --no-fail-on-error", {shell: true, cwd: process.cwd(), windowsHide: true}); + spawnSync("node " + zowePgm + " plugins validate --no-fail-on-error", {shell: true, stdio: "inherit", cwd: process.cwd(), windowsHide: true}); } } diff --git a/packages/cli/src/config/auto-init/ApimlAutoInitHandler.ts b/packages/cli/src/config/auto-init/ApimlAutoInitHandler.ts index 37755e3372..9e1896a817 100644 --- a/packages/cli/src/config/auto-init/ApimlAutoInitHandler.ts +++ b/packages/cli/src/config/auto-init/ApimlAutoInitHandler.ts @@ -70,7 +70,8 @@ export default class ApimlAutoInitHandler extends BaseAutoInitHandler { */ protected async doAutoInit(session: AbstractSession, params: IHandlerParameters): Promise { // Login with token authentication first, so we can support certificates - if (session.ISession.user && session.ISession.password || session.ISession.cert && session.ISession.certKey) { + // eslint-disable-next-line no-extra-parens + if ((session.ISession.user && session.ISession.password) || (session.ISession.cert && session.ISession.certKey)) { // If it is basic authentication, we need to set the auth type. if (session.ISession.tokenType == null) { session.ISession.tokenType = SessConstants.TOKEN_TYPE_APIML; diff --git a/packages/imperative/__tests__/src/packages/imperative/__integration__/ConfigLoading.integration.subtest.ts b/packages/imperative/__tests__/src/packages/imperative/__integration__/ConfigLoading.integration.subtest.ts index 99ab756533..e4bdf9ba95 100644 --- a/packages/imperative/__tests__/src/packages/imperative/__integration__/ConfigLoading.integration.subtest.ts +++ b/packages/imperative/__tests__/src/packages/imperative/__integration__/ConfigLoading.integration.subtest.ts @@ -21,8 +21,8 @@ describe("Imperative should validate config provided by the consumer", function if (require.main) { packageJsonPath = dirname(require.main.filename) + "/package.json"; if (existsSync(packageJsonPath)) { - // Throw an error if package.json exists in the main module dir, since we don't want to overwrite or delete it. - // Let the user decide if it is test data, and delete it if it is left over from a previous test. + // Throw an error if package.json exists in the main module dir, since we don't want to overwrite or delete it. + // Let the user decide if it is test data, and delete it if it is left over from a previous test. throw Error("Package JSON exists at " + packageJsonPath + ". Verify the file is test data and delete if it is."); } } diff --git a/packages/imperative/src/imperative/__tests__/plugins/PluginRequireProvider.unit.test.ts b/packages/imperative/src/imperative/__tests__/plugins/PluginRequireProvider.unit.test.ts index eb6f9845cb..c812c802d3 100644 --- a/packages/imperative/src/imperative/__tests__/plugins/PluginRequireProvider.unit.test.ts +++ b/packages/imperative/src/imperative/__tests__/plugins/PluginRequireProvider.unit.test.ts @@ -429,7 +429,7 @@ describe("PluginRequireProvider", () => { try { // The return should be the main module as that is what the module loader does. - expect(modulePrototype.require.call(thisObject, module, testRequireIndicator)).toBe(null || undefined); + expect(modulePrototype.require.call(thisObject, module, testRequireIndicator)).toBe(undefined); // Expect that the require was just called with the module expect(mockedRequire).toHaveBeenCalledTimes(1); diff --git a/packages/imperative/src/logger/src/Logger.ts b/packages/imperative/src/logger/src/Logger.ts index 8c3de0e9db..b3034d2199 100644 --- a/packages/imperative/src/logger/src/Logger.ts +++ b/packages/imperative/src/logger/src/Logger.ts @@ -297,7 +297,7 @@ export class Logger { public logError(err: ImperativeError): void { this.debug("Stack at time of error logging: %s", new Error().stack); - if (err.details.additionalDetails) { + if (!(err.details.additionalDetails == null)) { this.error(err.details.additionalDetails); } if (!(err.stack == null)) { diff --git a/packages/imperative/src/security/src/DefaultCredentialManager.ts b/packages/imperative/src/security/src/DefaultCredentialManager.ts index 569f29426a..a89669c448 100644 --- a/packages/imperative/src/security/src/DefaultCredentialManager.ts +++ b/packages/imperative/src/security/src/DefaultCredentialManager.ts @@ -14,7 +14,6 @@ import { ImperativeError } from "../../error"; import { Logger } from "../../logger"; import { keyring as keytar } from "@zowe/secrets-for-zowe-sdk"; // Used for typing purposes only -import { ImperativeConfig } from "../../utilities"; /** * Default Credential Manager is our implementation of the Imperative Credential Manager. This manager invokes methods @@ -121,9 +120,8 @@ export class DefaultCredentialManager extends AbstractCredentialManager { // our calling CLI. Since our caller must supply keytar, we search for keytar // within our caller's path. const requireOpts: any = {}; - const initPath = ImperativeConfig.instance.callerLocation ?? require.main.filename; - if (initPath != null) { - requireOpts.paths = [initPath, ...require.resolve.paths("@zowe/secrets-for-zowe-sdk")]; + if (require.main.filename != null) { + requireOpts.paths = [require.main.filename, ...require.resolve.paths("@zowe/secrets-for-zowe-sdk")]; } // use helper function for require.resolve so it can be mocked in jest tests const keytarPath = require.resolve("@zowe/secrets-for-zowe-sdk", requireOpts); diff --git a/packages/imperative/src/utilities/src/TextUtils.ts b/packages/imperative/src/utilities/src/TextUtils.ts index 804cb85465..f18a64c7fa 100644 --- a/packages/imperative/src/utilities/src/TextUtils.ts +++ b/packages/imperative/src/utilities/src/TextUtils.ts @@ -41,7 +41,8 @@ export class TextUtils { ): number { const widthSafeGuard = 8; // prevent partial words from continuing over lines const yargs = require("yargs"); - const maxWidth = !((yargs.terminalWidth() && yargs.terminalWidth() > 0) == null) ? + // eslint-disable-next-line no-extra-parens + const maxWidth = (!(yargs.terminalWidth() == null) && yargs.terminalWidth() > 0) ? yargs.terminalWidth() - widthSafeGuard : preferredWidth; return Math.min(preferredWidth, maxWidth); } diff --git a/packages/zosfiles/src/methods/create/Create.ts b/packages/zosfiles/src/methods/create/Create.ts index d0f378b9e3..c22028ca7e 100644 --- a/packages/zosfiles/src/methods/create/Create.ts +++ b/packages/zosfiles/src/methods/create/Create.ts @@ -262,7 +262,7 @@ export class Create { case "dsntype": { // Key to create a PDSE. - const type: string = tempOptions.dsntype?.toUpperCase(); + const type: string = tempOptions.dsntype.toUpperCase(); const availableTypes = ["BASIC", "EXTPREF", "EXTREQ", "HFS", "LARGE", "PDS", "LIBRARY", "PIPE"]; if (availableTypes.indexOf(type) === -1) { throw new ImperativeError({ msg: ZosFilesMessages.invalidDsntypeOption.message + tempOptions.dsntype }); From ec3e09c7abc844a59f17bafc926f157394adc5b7 Mon Sep 17 00:00:00 2001 From: "Andrew W. Harn" Date: Wed, 12 Jun 2024 10:44:27 -0400 Subject: [PATCH 14/15] Fix lint issues Signed-off-by: Andrew W. Harn --- packages/core/__tests__/utils/__unit__/CoreUtils.unit.test.ts | 1 + .../__tests__/__integration__/Operations.integration.spec.ts | 3 +-- .../src/operations/__tests__/operation/TestOperations1.ts | 1 + .../src/operations/__tests__/operation/TestOperations2.ts | 1 + .../src/operations/__tests__/operation/TestOperations3.ts | 1 + .../src/operations/__tests__/operation/TestOperations4.ts | 1 + .../src/operations/__tests__/operation/TestOperations5.ts | 1 + .../src/operations/__tests__/operation/subops/TestSubOp1.ts | 1 + .../src/operations/__tests__/operation/subops/TestSubOp2.ts | 1 + .../src/operations/__tests__/operation/subops/TestSubOp4.ts | 1 + .../src/operations/__tests__/operation/subops/TestSubOp5.ts | 1 + .../src/operations/__tests__/operation/subops/TestSubOp6.ts | 1 + .../operations/__tests__/operation/subops/TestSubOpDiverge.ts | 1 + .../src/operations/__tests__/operation/subops/TestSubOpFail.ts | 1 + .../operations/__tests__/operation/subops/TestSubOpNoUndo.ts | 1 + packages/imperative/src/operations/src/Operation.ts | 1 + packages/imperative/src/operations/src/Operations.ts | 1 + packages/imperative/src/operations/src/doc/IOperationResult.ts | 1 + 18 files changed, 18 insertions(+), 2 deletions(-) diff --git a/packages/core/__tests__/utils/__unit__/CoreUtils.unit.test.ts b/packages/core/__tests__/utils/__unit__/CoreUtils.unit.test.ts index e238ee2df1..1ee588447d 100644 --- a/packages/core/__tests__/utils/__unit__/CoreUtils.unit.test.ts +++ b/packages/core/__tests__/utils/__unit__/CoreUtils.unit.test.ts @@ -9,6 +9,7 @@ * */ +/* eslint-disable deprecation/deprecation */ import * as CoreUtils from "../../../src/utils/CoreUtils"; jest.mock("fs"); diff --git a/packages/imperative/src/operations/__tests__/__integration__/Operations.integration.spec.ts b/packages/imperative/src/operations/__tests__/__integration__/Operations.integration.spec.ts index be637f6505..36bbfc3a7c 100644 --- a/packages/imperative/src/operations/__tests__/__integration__/Operations.integration.spec.ts +++ b/packages/imperative/src/operations/__tests__/__integration__/Operations.integration.spec.ts @@ -10,14 +10,13 @@ */ /* eslint-disable jest/expect-expect */ +/* eslint-disable deprecation/deprecation */ import { TestOperations1 } from "../operation/TestOperations1"; import { TestOperations4 } from "../operation/TestOperations4"; - import { TestOperations3 } from "../operation/TestOperations3"; import { IOperationResult, Operation, Operations } from "../../index"; import { TestLogger } from "../../../../__tests__/src/TestLogger"; - const logger = TestLogger.getTestLogger(); class OperationTestConstants { diff --git a/packages/imperative/src/operations/__tests__/operation/TestOperations1.ts b/packages/imperative/src/operations/__tests__/operation/TestOperations1.ts index a56482a68f..7c182b322f 100644 --- a/packages/imperative/src/operations/__tests__/operation/TestOperations1.ts +++ b/packages/imperative/src/operations/__tests__/operation/TestOperations1.ts @@ -9,6 +9,7 @@ * */ +/* eslint-disable deprecation/deprecation */ import { TestSubOp1 } from "./subops/TestSubOp1"; import { TestSubOp2 } from "./subops/TestSubOp2"; import { TestSubOpNoUndo } from "./subops/TestSubOpNoUndo"; diff --git a/packages/imperative/src/operations/__tests__/operation/TestOperations2.ts b/packages/imperative/src/operations/__tests__/operation/TestOperations2.ts index 2734327281..b623306441 100644 --- a/packages/imperative/src/operations/__tests__/operation/TestOperations2.ts +++ b/packages/imperative/src/operations/__tests__/operation/TestOperations2.ts @@ -9,6 +9,7 @@ * */ +/* eslint-disable deprecation/deprecation */ import { TestSubOp4 } from "./subops/TestSubOp4"; import { TestSubOp5 } from "./subops/TestSubOp5"; import { Operations } from "../../../index"; diff --git a/packages/imperative/src/operations/__tests__/operation/TestOperations3.ts b/packages/imperative/src/operations/__tests__/operation/TestOperations3.ts index bf38287b1a..70dac2dde7 100644 --- a/packages/imperative/src/operations/__tests__/operation/TestOperations3.ts +++ b/packages/imperative/src/operations/__tests__/operation/TestOperations3.ts @@ -9,6 +9,7 @@ * */ +/* eslint-disable deprecation/deprecation */ import { TestSubOp6 } from "./subops/TestSubOp6"; import { TestOperations1 } from "./TestOperations1"; import { TestOperations2 } from "./TestOperations2"; diff --git a/packages/imperative/src/operations/__tests__/operation/TestOperations4.ts b/packages/imperative/src/operations/__tests__/operation/TestOperations4.ts index 0d8761e2ee..3d36d5109d 100644 --- a/packages/imperative/src/operations/__tests__/operation/TestOperations4.ts +++ b/packages/imperative/src/operations/__tests__/operation/TestOperations4.ts @@ -9,6 +9,7 @@ * */ +/* eslint-disable deprecation/deprecation */ import { TestOperations1 } from "./TestOperations1"; import { TestOperations2 } from "./TestOperations2"; import { TestSubOpFail } from "./subops/TestSubOpFail"; diff --git a/packages/imperative/src/operations/__tests__/operation/TestOperations5.ts b/packages/imperative/src/operations/__tests__/operation/TestOperations5.ts index 9568473ef6..ab64c9dc4f 100644 --- a/packages/imperative/src/operations/__tests__/operation/TestOperations5.ts +++ b/packages/imperative/src/operations/__tests__/operation/TestOperations5.ts @@ -9,6 +9,7 @@ * */ +/* eslint-disable deprecation/deprecation */ import { TestOperations1 } from "./TestOperations1"; import { TestSubOpDiverge } from "./subops/TestSubOpDiverge"; import { Operations } from "../../../index"; diff --git a/packages/imperative/src/operations/__tests__/operation/subops/TestSubOp1.ts b/packages/imperative/src/operations/__tests__/operation/subops/TestSubOp1.ts index bcd7e68d40..bd69833f90 100644 --- a/packages/imperative/src/operations/__tests__/operation/subops/TestSubOp1.ts +++ b/packages/imperative/src/operations/__tests__/operation/subops/TestSubOp1.ts @@ -9,6 +9,7 @@ * */ +/* eslint-disable deprecation/deprecation */ import { IOperationCompleted, IOperationUndoCompleted, Operation } from "../../../../index"; export class TestSubOp1 extends Operation { diff --git a/packages/imperative/src/operations/__tests__/operation/subops/TestSubOp2.ts b/packages/imperative/src/operations/__tests__/operation/subops/TestSubOp2.ts index fd91710248..e8bcf6287f 100644 --- a/packages/imperative/src/operations/__tests__/operation/subops/TestSubOp2.ts +++ b/packages/imperative/src/operations/__tests__/operation/subops/TestSubOp2.ts @@ -9,6 +9,7 @@ * */ +/* eslint-disable deprecation/deprecation */ import { IOperationCompleted, IOperationUndoCompleted, Operation } from "../../../../index"; export class TestSubOp2 extends Operation { diff --git a/packages/imperative/src/operations/__tests__/operation/subops/TestSubOp4.ts b/packages/imperative/src/operations/__tests__/operation/subops/TestSubOp4.ts index a6bba7be64..0bab8d3cff 100644 --- a/packages/imperative/src/operations/__tests__/operation/subops/TestSubOp4.ts +++ b/packages/imperative/src/operations/__tests__/operation/subops/TestSubOp4.ts @@ -9,6 +9,7 @@ * */ +/* eslint-disable deprecation/deprecation */ import { IOperationCompleted, IOperationUndoCompleted, Operation } from "../../../../index"; import { TestLogger } from "../../../../../__tests__/src/TestLogger"; diff --git a/packages/imperative/src/operations/__tests__/operation/subops/TestSubOp5.ts b/packages/imperative/src/operations/__tests__/operation/subops/TestSubOp5.ts index 07194c129c..a5de39dcf1 100644 --- a/packages/imperative/src/operations/__tests__/operation/subops/TestSubOp5.ts +++ b/packages/imperative/src/operations/__tests__/operation/subops/TestSubOp5.ts @@ -9,6 +9,7 @@ * */ +/* eslint-disable deprecation/deprecation */ import { IOperationCompleted, IOperationUndoCompleted, Operation } from "../../../../index"; import { TestLogger } from "../../../../../__tests__/src/TestLogger"; diff --git a/packages/imperative/src/operations/__tests__/operation/subops/TestSubOp6.ts b/packages/imperative/src/operations/__tests__/operation/subops/TestSubOp6.ts index 5a7e97c0ce..8ede9238a9 100644 --- a/packages/imperative/src/operations/__tests__/operation/subops/TestSubOp6.ts +++ b/packages/imperative/src/operations/__tests__/operation/subops/TestSubOp6.ts @@ -9,6 +9,7 @@ * */ +/* eslint-disable deprecation/deprecation */ import { IOperationCompleted, IOperationUndoCompleted, Operation } from "../../../../index"; import { TestLogger } from "../../../../../__tests__/src/TestLogger"; diff --git a/packages/imperative/src/operations/__tests__/operation/subops/TestSubOpDiverge.ts b/packages/imperative/src/operations/__tests__/operation/subops/TestSubOpDiverge.ts index a5163a238d..d4cd259b55 100644 --- a/packages/imperative/src/operations/__tests__/operation/subops/TestSubOpDiverge.ts +++ b/packages/imperative/src/operations/__tests__/operation/subops/TestSubOpDiverge.ts @@ -9,6 +9,7 @@ * */ +/* eslint-disable deprecation/deprecation */ import { TestOperations2 } from "../TestOperations2"; import { IOperationCompleted, IOperationUndoCompleted, Operation } from "../../../../index"; import { TestLogger } from "../../../../../__tests__/src/TestLogger"; diff --git a/packages/imperative/src/operations/__tests__/operation/subops/TestSubOpFail.ts b/packages/imperative/src/operations/__tests__/operation/subops/TestSubOpFail.ts index 2806d2e80e..631f2e5e8a 100644 --- a/packages/imperative/src/operations/__tests__/operation/subops/TestSubOpFail.ts +++ b/packages/imperative/src/operations/__tests__/operation/subops/TestSubOpFail.ts @@ -9,6 +9,7 @@ * */ +/* eslint-disable deprecation/deprecation */ import { IOperationCompleted, IOperationUndoCompleted, Operation } from "../../../../index"; export class TestSubOpFail extends Operation { diff --git a/packages/imperative/src/operations/__tests__/operation/subops/TestSubOpNoUndo.ts b/packages/imperative/src/operations/__tests__/operation/subops/TestSubOpNoUndo.ts index 6ecf15e227..a35cbb37b8 100644 --- a/packages/imperative/src/operations/__tests__/operation/subops/TestSubOpNoUndo.ts +++ b/packages/imperative/src/operations/__tests__/operation/subops/TestSubOpNoUndo.ts @@ -9,6 +9,7 @@ * */ +/* eslint-disable deprecation/deprecation */ import { IOperationCompleted, IOperationUndoCompleted, Operation } from "../../../../index"; import { TestLogger } from "../../../../../__tests__/src/TestLogger"; diff --git a/packages/imperative/src/operations/src/Operation.ts b/packages/imperative/src/operations/src/Operation.ts index cb9ceabfe6..5f66df8652 100644 --- a/packages/imperative/src/operations/src/Operation.ts +++ b/packages/imperative/src/operations/src/Operation.ts @@ -9,6 +9,7 @@ * */ +/* eslint-disable deprecation/deprecation */ import { IOperationResult } from "./doc/IOperationResult"; import { TaskStage } from "./TaskStage"; import * as fs from "fs"; diff --git a/packages/imperative/src/operations/src/Operations.ts b/packages/imperative/src/operations/src/Operations.ts index e5c372c661..937b232eda 100644 --- a/packages/imperative/src/operations/src/Operations.ts +++ b/packages/imperative/src/operations/src/Operations.ts @@ -9,6 +9,7 @@ * */ +/* eslint-disable deprecation/deprecation */ import { IOperationResultReady, Operation } from "./Operation"; import { IOperationResult } from "./doc/IOperationResult"; import { TextUtils } from "../../utilities"; diff --git a/packages/imperative/src/operations/src/doc/IOperationResult.ts b/packages/imperative/src/operations/src/doc/IOperationResult.ts index 33baee79c9..d06ade3bae 100644 --- a/packages/imperative/src/operations/src/doc/IOperationResult.ts +++ b/packages/imperative/src/operations/src/doc/IOperationResult.ts @@ -9,6 +9,7 @@ * */ +/* eslint-disable deprecation/deprecation */ import { Operation } from "../Operation"; export interface IOperationResult { From 0b71370689b4bc887ae1a2a7f188cb29fab17d18 Mon Sep 17 00:00:00 2001 From: "Andrew W. Harn" Date: Thu, 13 Jun 2024 13:20:48 -0400 Subject: [PATCH 15/15] Make requested changes Signed-off-by: Andrew W. Harn --- .../provisioning/list/registry/RegistryInstances.handler.ts | 2 +- .../__tests__/plugins/PluginRequireProvider.unit.test.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/cli/src/provisioning/list/registry/RegistryInstances.handler.ts b/packages/cli/src/provisioning/list/registry/RegistryInstances.handler.ts index 2adec99ffc..66537eb397 100644 --- a/packages/cli/src/provisioning/list/registry/RegistryInstances.handler.ts +++ b/packages/cli/src/provisioning/list/registry/RegistryInstances.handler.ts @@ -43,7 +43,7 @@ export default class RegistryInstancesHandler extends ZosmfBaseHandler { commandParameters.response.console.log(TextUtils.prettyJson(unique)); } else { commandParameters.response.console.log("z/OSMF Service Registry"); - if (!(commandParameters.arguments.filterByType == null)) { + if (commandParameters.arguments.filterByType != null) { commandParameters.response.console.log("\nShowing ONLY \"" + commandParameters.arguments.filterByType.toUpperCase() + "\" instance types."); } diff --git a/packages/imperative/src/imperative/__tests__/plugins/PluginRequireProvider.unit.test.ts b/packages/imperative/src/imperative/__tests__/plugins/PluginRequireProvider.unit.test.ts index c812c802d3..4daeb3af50 100644 --- a/packages/imperative/src/imperative/__tests__/plugins/PluginRequireProvider.unit.test.ts +++ b/packages/imperative/src/imperative/__tests__/plugins/PluginRequireProvider.unit.test.ts @@ -442,7 +442,7 @@ describe("PluginRequireProvider", () => { const submodule = `${module}/submodule/import`; expect(modulePrototype.require.call( thisObject, submodule, testRequireIndicator - )).toBe(null || undefined); + )).toBe(undefined); // Expect that the require was just called with the submodule expect(mockedRequire).toHaveBeenCalledTimes(1); @@ -475,7 +475,7 @@ describe("PluginRequireProvider", () => { try { expect(modulePrototype.require.call( thisObject, module, testRequireIndicator - )).toBe(null || undefined); + )).toBe(undefined); expect(mockedRequire).toHaveBeenCalledTimes(1); expect(mockedRequire).toHaveBeenCalledWith("./", testRequireIndicator); @@ -506,7 +506,7 @@ describe("PluginRequireProvider", () => { try { expect(modulePrototype.require.call( thisObject, module + submoduleImport, testRequireIndicator - )).toBe(null || undefined); + )).toBe(undefined); expect(mockedRequire).toHaveBeenCalledTimes(1); expect(mockedRequire).toHaveBeenCalledWith(packageRoot + submoduleImport, testRequireIndicator);