diff --git a/package-lock.json b/package-lock.json index cfe9417..ec7ee4e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,33 +9,35 @@ "version": "1.0.0", "license": "MPL-2.0", "dependencies": { - "@inquirer/prompts": "^3.3.0", + "@inquirer/checkbox": "^1.0.0", + "@inquirer/confirm": "^2.0.0", + "@inquirer/input": "^1.0.0", "@sngular/open-api-mocker": "^1.0.0", - "commander": "^11.1.0" + "commander": "^11.0.0" }, "bin": { "api-mock-runner": "src/index.js" }, "devDependencies": { - "@esm-bundle/chai": "^4.3.4-fix.0", + "@esm-bundle/chai": "^4.0.0", "@sngular/commitlint-config": "^1.0.0", "@sngular/eslint-config": "^1.0.0", "@sngular/lint-staged-config": "^1.0.0", "@sngular/prettier-config": "^1.0.0", "@sngular/semantic-release-config": "^1.0.0", "@sngular/tsconfig": "^1.0.0", - "@types/mocha": "^10.0.2", - "@types/sinon": "^10.0.19", - "@types/sinon-chai": "^3.2.10", - "c8": "^8.0.1", - "chai-as-promised": "^7.1.1", + "@types/mocha": "^10.0.0", + "@types/sinon": "^10.0.0", + "@types/sinon-chai": "^3.0.0", + "c8": "^8.0.0", + "chai-as-promised": "^7.0.0", "eslint-config-prettier": "^9.0.0", - "esmock": "^2.6.3", + "esmock": "^2.0.0", "husky": "^8.0.0", - "mocha": "^10.2.0", - "mock-fs": "^5.2.0", - "sinon": "^16.1.0", - "sinon-chai": "^3.7.0" + "mocha": "^10.0.0", + "mock-fs": "^5.0.0", + "sinon": "^16.0.0", + "sinon-chai": "^3.0.0" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -737,9 +739,9 @@ } }, "node_modules/@esm-bundle/chai": { - "version": "4.3.4-fix.0", - "resolved": "https://registry.npmjs.org/@esm-bundle/chai/-/chai-4.3.4-fix.0.tgz", - "integrity": "sha512-26SKdM4uvDWlY8/OOOxSB1AqQWeBosCX3wRYUZO7enTAj03CtVxIiCimYVG2WpULcyV51qapK4qTovwkUr5Mlw==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/@esm-bundle/chai/-/chai-4.3.4.tgz", + "integrity": "sha512-6Tx35wWiNw7X0nLY9RMx8v3EL8SacCFW+eEZOE9Hc+XxmU5HFE2AFEg+GehUZpiyDGwVvPH75ckGlqC7coIPnA==", "dev": true, "dependencies": { "@types/chai": "^4.2.12" @@ -873,41 +875,13 @@ } }, "node_modules/@inquirer/core/node_modules/@types/node": { - "version": "20.11.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.10.tgz", - "integrity": "sha512-rZEfe/hJSGYmdfX9tvcPMYeYPW2sNl50nsw4jZmRcaG0HIAb0WYEpsB05GOb53vjqpyE9GUhlDQ4jLSoB5q9kg==", + "version": "20.11.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.13.tgz", + "integrity": "sha512-5G4zQwdiQBSWYTDAH1ctw2eidqdhMJaNsiIDKHFr55ihz5Trl2qqR8fdrT732yPBho5gkNxXm67OxWFBqX9aPg==", "dependencies": { "undici-types": "~5.26.4" } }, - "node_modules/@inquirer/editor": { - "version": "1.2.15", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-1.2.15.tgz", - "integrity": "sha512-gQ77Ls09x5vKLVNMH9q/7xvYPT6sIs5f7URksw+a2iJZ0j48tVS6crLqm2ugG33tgXHIwiEqkytY60Zyh5GkJQ==", - "dependencies": { - "@inquirer/core": "^6.0.0", - "@inquirer/type": "^1.1.6", - "chalk": "^4.1.2", - "external-editor": "^3.1.0" - }, - "engines": { - "node": ">=14.18.0" - } - }, - "node_modules/@inquirer/expand": { - "version": "1.1.16", - "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-1.1.16.tgz", - "integrity": "sha512-TGLU9egcuo+s7PxphKUCnJnpCIVY32/EwPCLLuu+gTvYiD8hZgx8Z2niNQD36sa6xcfpdLY6xXDBiL/+g1r2XQ==", - "dependencies": { - "@inquirer/core": "^6.0.0", - "@inquirer/type": "^1.1.6", - "chalk": "^4.1.2", - "figures": "^3.2.0" - }, - "engines": { - "node": ">=14.18.0" - } - }, "node_modules/@inquirer/input": { "version": "1.2.16", "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-1.2.16.tgz", @@ -921,67 +895,6 @@ "node": ">=14.18.0" } }, - "node_modules/@inquirer/password": { - "version": "1.1.16", - "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-1.1.16.tgz", - "integrity": "sha512-aZYZVHLUXZ2gbBot+i+zOJrks1WaiI95lvZCn1sKfcw6MtSSlYC8uDX8sTzQvAsQ8epHoP84UNvAIT0KVGOGqw==", - "dependencies": { - "@inquirer/core": "^6.0.0", - "@inquirer/type": "^1.1.6", - "ansi-escapes": "^4.3.2", - "chalk": "^4.1.2" - }, - "engines": { - "node": ">=14.18.0" - } - }, - "node_modules/@inquirer/prompts": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-3.3.2.tgz", - "integrity": "sha512-k52mOMRvTUejrqyF1h8Z07chC+sbaoaUYzzr1KrJXyj7yaX7Nrh0a9vktv8TuocRwIJOQMaj5oZEmkspEcJFYQ==", - "dependencies": { - "@inquirer/checkbox": "^1.5.2", - "@inquirer/confirm": "^2.0.17", - "@inquirer/core": "^6.0.0", - "@inquirer/editor": "^1.2.15", - "@inquirer/expand": "^1.1.16", - "@inquirer/input": "^1.2.16", - "@inquirer/password": "^1.1.16", - "@inquirer/rawlist": "^1.2.16", - "@inquirer/select": "^1.3.3" - }, - "engines": { - "node": ">=14.18.0" - } - }, - "node_modules/@inquirer/rawlist": { - "version": "1.2.16", - "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-1.2.16.tgz", - "integrity": "sha512-pZ6TRg2qMwZAOZAV6TvghCtkr53dGnK29GMNQ3vMZXSNguvGqtOVc4j/h1T8kqGJFagjyfBZhUPGwNS55O5qPQ==", - "dependencies": { - "@inquirer/core": "^6.0.0", - "@inquirer/type": "^1.1.6", - "chalk": "^4.1.2" - }, - "engines": { - "node": ">=14.18.0" - } - }, - "node_modules/@inquirer/select": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-1.3.3.tgz", - "integrity": "sha512-RzlRISXWqIKEf83FDC9ZtJ3JvuK1l7aGpretf41BCWYrvla2wU8W8MTRNMiPrPJ+1SIqrRC1nZdZ60hD9hRXLg==", - "dependencies": { - "@inquirer/core": "^6.0.0", - "@inquirer/type": "^1.1.6", - "ansi-escapes": "^4.3.2", - "chalk": "^4.1.2", - "figures": "^3.2.0" - }, - "engines": { - "node": ">=14.18.0" - } - }, "node_modules/@inquirer/type": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.1.6.tgz", @@ -3159,7 +3072,9 @@ "node_modules/chardet": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true, + "peer": true }, "node_modules/check-error": { "version": "1.0.3", @@ -5037,6 +4952,8 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "peer": true, "dependencies": { "chardet": "^0.7.0", "iconv-lite": "^0.4.24", @@ -8404,9 +8321,9 @@ "dev": true }, "node_modules/nise": { - "version": "5.1.7", - "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.7.tgz", - "integrity": "sha512-wWtNUhkT7k58uvWTB/Gy26eA/EJKtPZFVAhEilN5UYVmmGRYOURbejRUyKm0Uu9XVEW7K5nBOZfR8VMB4QR2RQ==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.9.tgz", + "integrity": "sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww==", "dev": true, "dependencies": { "@sinonjs/commons": "^3.0.0", @@ -11793,6 +11710,8 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -12438,9 +12357,9 @@ } }, "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.10.1.tgz", - "integrity": "sha512-7ZnJYTp6uc04uYRISWtiX3DSKB/fxNQT0B5o1OUeCqiQiwF+JC9+rJiZIDrPrNCLLuTqyQmh4VdQqh/ZOkv9MQ==", + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.10.2.tgz", + "integrity": "sha512-anpAG63wSpdEbLwOqH8L84urkL6PiVIov3EMmgIhhThevh9aiMQov+6Btx0wldNcvm4wV+e2/Rt1QdDwKHFbHw==", "dev": true, "engines": { "node": ">=16" @@ -12547,9 +12466,9 @@ } }, "node_modules/read-pkg/node_modules/type-fest": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.10.1.tgz", - "integrity": "sha512-7ZnJYTp6uc04uYRISWtiX3DSKB/fxNQT0B5o1OUeCqiQiwF+JC9+rJiZIDrPrNCLLuTqyQmh4VdQqh/ZOkv9MQ==", + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.10.2.tgz", + "integrity": "sha512-anpAG63wSpdEbLwOqH8L84urkL6PiVIov3EMmgIhhThevh9aiMQov+6Btx0wldNcvm4wV+e2/Rt1QdDwKHFbHw==", "dev": true, "engines": { "node": ">=16" @@ -14129,6 +14048,8 @@ "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "peer": true, "dependencies": { "os-tmpdir": "~1.0.2" }, diff --git a/package.json b/package.json index 6088e41..1ff7329 100644 --- a/package.json +++ b/package.json @@ -41,30 +41,32 @@ "author": "SNGULAR", "license": "MPL-2.0", "dependencies": { - "@inquirer/prompts": "^3.3.0", + "@inquirer/checkbox": "^1.0.0", + "@inquirer/confirm": "^2.0.0", + "@inquirer/input": "^1.0.0", "@sngular/open-api-mocker": "^1.0.0", - "commander": "^11.1.0" + "commander": "^11.0.0" }, "devDependencies": { - "@esm-bundle/chai": "^4.3.4-fix.0", + "@esm-bundle/chai": "^4.0.0", "@sngular/commitlint-config": "^1.0.0", "@sngular/eslint-config": "^1.0.0", "@sngular/lint-staged-config": "^1.0.0", "@sngular/prettier-config": "^1.0.0", "@sngular/semantic-release-config": "^1.0.0", "@sngular/tsconfig": "^1.0.0", - "@types/mocha": "^10.0.2", - "@types/sinon": "^10.0.19", - "@types/sinon-chai": "^3.2.10", - "c8": "^8.0.1", - "chai-as-promised": "^7.1.1", + "@types/mocha": "^10.0.0", + "@types/sinon": "^10.0.0", + "@types/sinon-chai": "^3.0.0", + "c8": "^8.0.0", + "chai-as-promised": "^7.0.0", "eslint-config-prettier": "^9.0.0", - "esmock": "^2.6.3", + "esmock": "^2.0.0", "husky": "^8.0.0", - "mocha": "^10.2.0", - "mock-fs": "^5.2.0", - "sinon": "^16.1.0", - "sinon-chai": "^3.7.0" + "mocha": "^10.0.0", + "mock-fs": "^5.0.0", + "sinon": "^16.0.0", + "sinon-chai": "^3.0.0" }, "publishConfig": { "access": "public" diff --git a/src/main.js b/src/main.js index 9a30168..1673482 100644 --- a/src/main.js +++ b/src/main.js @@ -1,6 +1,6 @@ import { program } from 'commander'; -import fs from 'node:fs'; -import path from 'node:path'; +import { existsSync, readFileSync } from 'node:fs'; +import { join } from 'node:path'; import { RC_FILE_NAME } from './helpers/constants.js'; import { Logger } from './helpers/logger.js'; @@ -29,8 +29,9 @@ export const main = async () => { .option('-p, --port [ports...]', 'port to serve each schema') .option('-r, --run-config', 'use saved config'); program.parse(); - const options = /** @type {ProgramOptions} */ (program.opts()); - const configFileExists = fs.existsSync(path.join(process.cwd(), RC_FILE_NAME)); + /** @type {ProgramOptions} */ + const options = program.opts(); + const configFileExists = existsSync(join(process.cwd(), RC_FILE_NAME)); let config; if (options.runConfig) { if (configFileExists) { @@ -64,5 +65,5 @@ export const main = async () => { * @returns {Config} Content of the config file. */ function getConfigFromFile() { - return /** @type {Config} */ (JSON.parse(fs.readFileSync(path.join(process.cwd(), RC_FILE_NAME), 'utf-8'))) || {}; + return /** @type {Config} */ (JSON.parse(readFileSync(join(process.cwd(), RC_FILE_NAME), 'utf-8'))) || {}; } diff --git a/src/services/check-string-in-file.js b/src/services/check-string-in-file.js index 4b7c8d7..5ce7b70 100644 --- a/src/services/check-string-in-file.js +++ b/src/services/check-string-in-file.js @@ -1,5 +1,5 @@ -import fs from 'node:fs'; -import readline from 'node:readline'; +import { createReadStream } from 'node:fs'; +import { createInterface } from 'node:readline'; /** * Check if a string is in a file. @@ -10,8 +10,8 @@ import readline from 'node:readline'; * @returns {Promise} True if the string is in the file, false otherwise. */ export async function check(stringToCheck, filePath) { - const input = fs.createReadStream(filePath); - const reader = readline.createInterface({ input }); + const input = createReadStream(filePath); + const reader = createInterface({ input }); for await (const line of reader) { if (line === stringToCheck) { return true; diff --git a/src/services/clone-git-repository.js b/src/services/clone-git-repository.js index b0e9bf4..917e2f4 100644 --- a/src/services/clone-git-repository.js +++ b/src/services/clone-git-repository.js @@ -1,7 +1,7 @@ -import child_process from 'node:child_process'; -import fs from 'node:fs'; -import path from 'node:path'; -import process from 'node:process'; +import { execSync } from 'node:child_process'; +import { mkdirSync, existsSync, rmSync } from 'node:fs'; +import { resolve } from 'node:path'; +import { cwd } from 'node:process'; /** * Clone a git repository. @@ -21,7 +21,7 @@ export function cloneRepository(repositoryURL, dirName) { */ function resetDirectory(dirName) { removeDirectory(dirName); - fs.mkdirSync(dirName); + mkdirSync(dirName); } /** @@ -30,8 +30,8 @@ function resetDirectory(dirName) { * @param {string} dirName - The name of the directory to remove. */ function removeDirectory(dirName) { - if (fs.existsSync(dirName)) { - fs.rmSync(dirName, { recursive: true }); + if (existsSync(dirName)) { + rmSync(dirName, { recursive: true }); } } @@ -42,7 +42,7 @@ function removeDirectory(dirName) { * @param {string} dirName - The name of the directory where the repository will be cloned. */ function clone(repositoryURL, dirName) { - child_process.execSync(`git clone ${repositoryURL} .`, { - cwd: path.resolve(process.cwd(), dirName), // path to where you want to save the file + execSync(`git clone ${repositoryURL} .`, { + cwd: resolve(cwd(), dirName), // path to where you want to save the file }); } diff --git a/src/services/find-oas-from-dir.js b/src/services/find-oas-from-dir.js index 5282216..e2a68ec 100644 --- a/src/services/find-oas-from-dir.js +++ b/src/services/find-oas-from-dir.js @@ -1,6 +1,6 @@ -import fs from 'node:fs'; -import path from 'node:path'; -import readline from 'node:readline'; +import { createReadStream, existsSync, lstatSync, readdirSync } from 'node:fs'; +import { join } from 'node:path'; +import { createInterface } from 'node:readline'; import { Logger } from '../helpers/logger.js'; import { messages } from '../helpers/messages.js'; @@ -15,8 +15,8 @@ import { messages } from '../helpers/messages.js'; * @returns {Promise} The first line of the file. */ export async function getFirstLine(filePath) { - const input = fs.createReadStream(filePath); - const reader = readline.createInterface({ input }); + const input = createReadStream(filePath); + const reader = createInterface({ input }); const iterator = reader[Symbol.asyncIterator](); /** @type {IteratorResult} */ const line = await iterator.next(); @@ -42,17 +42,17 @@ export async function isOas(filePath) { * @returns {Promise} An array of OpenAPI specifications. */ export const findOasFromDir = async (startPath) => { - if (!fs.existsSync(startPath)) { + if (!existsSync(startPath)) { Logger.warn(messages.DIRECTORY_NOT_FOUND, startPath); return []; } - const files = fs.readdirSync(startPath); + const files = readdirSync(startPath); /** @type {OasFile[]} */ const oasFiles = []; for (const file of files) { - const filePath = path.join(startPath, file); + const filePath = join(startPath, file); if ((file.endsWith('.yaml') || file.endsWith('.yml')) && (await isOas(filePath))) { oasFiles.push({ fileName: file, @@ -73,17 +73,17 @@ export const findOasFromDir = async (startPath) => { * @returns {Promise} An array of OpenAPI specifications. */ export const findOasFromDirRecursive = async (startPath, oasFiles = []) => { - if (!fs.existsSync(startPath)) { + if (!existsSync(startPath)) { Logger.warn(messages.DIRECTORY_NOT_FOUND, startPath); return []; } - const files = fs.readdirSync(startPath); + const files = readdirSync(startPath); for (const file of files) { if (file.startsWith('.')) continue; - const filePath = path.join(startPath, file); - const stat = fs.lstatSync(filePath); + const filePath = join(startPath, file); + const stat = lstatSync(filePath); if (stat.isDirectory()) { await findOasFromDirRecursive(filePath, oasFiles); } else if ((file.endsWith('.yaml') || file.endsWith('.yml')) && (await isOas(filePath))) { diff --git a/src/services/gitignore.js b/src/services/gitignore.js index 1a195bc..abf03f7 100644 --- a/src/services/gitignore.js +++ b/src/services/gitignore.js @@ -1,11 +1,12 @@ -import { confirm } from '@inquirer/prompts'; -import fs from 'node:fs'; -import path from 'node:path'; +import confirm from '@inquirer/confirm'; +import { appendFileSync, existsSync, readFileSync } from 'node:fs'; +import { join } from 'node:path'; +import { cwd } from 'node:process'; import { check } from './check-string-in-file.js'; import { messages } from '../helpers/messages.js'; -export const GITIGNORE_PATH = path.join(process.cwd(), '.gitignore'); +export const GITIGNORE_PATH = join(cwd(), '.gitignore'); /** * Append a newline with file or folder name to .gitignore. @@ -18,13 +19,13 @@ export const GITIGNORE_PATH = path.join(process.cwd(), '.gitignore'); * @returns {Promise} */ export async function addToGitignore(fileName) { - const existsGitignoreFile = fs.existsSync(GITIGNORE_PATH); + const existsGitignoreFile = existsSync(GITIGNORE_PATH); const isInGitignoreFile = existsGitignoreFile && (await isInGitignore(fileName)); const shouldAddToGitignore = !existsGitignoreFile || !isInGitignoreFile; if (shouldAddToGitignore && (await confirm({ message: messages.CONFIRM_ADD_TO_GITIGNORE(fileName) }))) { const leadingCharacter = existsGitignoreFile ? getLeadingCharacter() : ''; - fs.appendFileSync(GITIGNORE_PATH, `${leadingCharacter}${fileName}\n`); + appendFileSync(GITIGNORE_PATH, `${leadingCharacter}${fileName}\n`); } } @@ -46,6 +47,6 @@ async function isInGitignore(textToCheck) { * @returns {string} The leading character for .gitignore. */ function getLeadingCharacter() { - const lastFileCharacter = fs.readFileSync(GITIGNORE_PATH, 'utf8').slice(-1); + const lastFileCharacter = readFileSync(GITIGNORE_PATH, 'utf8').slice(-1); return lastFileCharacter === '\n' ? '' : '\n'; } diff --git a/src/services/inquirer-validators.js b/src/services/inquirer-validators.js index f2f1cf1..f43a2cd 100644 --- a/src/services/inquirer-validators.js +++ b/src/services/inquirer-validators.js @@ -1,4 +1,4 @@ -import fs from 'node:fs'; +import { existsSync } from 'node:fs'; import { validationErrorMessages } from '../helpers/messages.js'; import { verifyRemoteOrigin } from '../helpers/verify-remote-origin.js'; @@ -14,7 +14,7 @@ import { verifyRemoteOrigin } from '../helpers/verify-remote-origin.js'; * @returns {boolean|string} True if the value is valid, otherwise a string with the error message. */ export function originValidator(value) { - const isLocalPath = fs.existsSync(value); + const isLocalPath = existsSync(value); const isRemoteOrigin = verifyRemoteOrigin(value); const result = isLocalPath || isRemoteOrigin || validationErrorMessages.origin.INVALID; return result; diff --git a/src/services/start-mock-server.js b/src/services/start-mock-server.js index c135c02..6fff6dd 100644 --- a/src/services/start-mock-server.js +++ b/src/services/start-mock-server.js @@ -1,5 +1,5 @@ import OpenApiMocker from '@sngular/open-api-mocker'; -import fs from 'node:fs'; +import { existsSync } from 'node:fs'; import { init } from './user-flow-steps/init.js'; import { Logger } from '../helpers/logger.js'; @@ -44,7 +44,7 @@ export async function startMockServer(schemas) { * @returns {Promise} - An array of valid schemas. */ async function validateSchemas(schemas) { - const allSchemasExists = schemas.every((schema) => fs.existsSync(schema.path)); + const allSchemasExists = schemas.every((schema) => existsSync(schema.path)); if (!allSchemasExists) { Logger.warn(messages.SOME_SCHEMA_DOES_NOT_EXIST); diff --git a/src/services/user-flow-steps/helpers.js b/src/services/user-flow-steps/helpers.js index 806299c..3982bf3 100644 --- a/src/services/user-flow-steps/helpers.js +++ b/src/services/user-flow-steps/helpers.js @@ -1,6 +1,6 @@ -import { input } from '@inquirer/prompts'; -import fs from 'node:fs'; -import path from 'node:path'; +import input from '@inquirer/input'; +import { writeFileSync } from 'node:fs'; +import { resolve, join } from 'node:path'; import { RC_FILE_NAME, TEMP_FOLDER_NAME } from '../../helpers/constants.js'; import { Logger } from '../../helpers/logger.js'; @@ -51,7 +51,7 @@ export async function getOrigin() { validate: originValidator, }); - return verifyRemoteOrigin(schemasOrigin) ? schemasOrigin : path.resolve(schemasOrigin); + return verifyRemoteOrigin(schemasOrigin) ? schemasOrigin : resolve(schemasOrigin); } /** @@ -102,7 +102,7 @@ export function assignPorts(schemaPaths, ports) { * @param {boolean} [addToGitignoreFlag = false] Flag to add rc file to gitignore. */ export async function saveRuntimeConfig(config, addToGitignoreFlag = false) { - fs.writeFileSync(path.join(process.cwd(), RC_FILE_NAME), JSON.stringify(config, null, '\t')); + writeFileSync(join(process.cwd(), RC_FILE_NAME), JSON.stringify(config, null, '\t')); Logger.info(messages.SAVED_CONFIG(RC_FILE_NAME), config); if (addToGitignoreFlag) { await addToGitignore(RC_FILE_NAME); diff --git a/src/services/user-flow-steps/init-with-config-file.js b/src/services/user-flow-steps/init-with-config-file.js index b46fbfc..019511e 100644 --- a/src/services/user-flow-steps/init-with-config-file.js +++ b/src/services/user-flow-steps/init-with-config-file.js @@ -1,4 +1,4 @@ -import { confirm } from '@inquirer/prompts'; +import confirm from '@inquirer/confirm'; import fs from 'node:fs'; import path from 'node:path'; diff --git a/src/services/user-flow-steps/init.js b/src/services/user-flow-steps/init.js index 0b43c24..fb3581c 100644 --- a/src/services/user-flow-steps/init.js +++ b/src/services/user-flow-steps/init.js @@ -1,4 +1,4 @@ -import { checkbox } from '@inquirer/prompts'; +import checkbox from '@inquirer/checkbox'; import { askForPorts, assignPorts, getOrigin, getSchemas, saveRuntimeConfig } from './helpers.js'; import { OpenApiSchemaNotFoundError } from '../../errors/openapi-schema-not-found-error.js'; diff --git a/test/unit/services/gitignore.test.js b/test/unit/services/gitignore.test.js index 64df9d5..303d82b 100644 --- a/test/unit/services/gitignore.test.js +++ b/test/unit/services/gitignore.test.js @@ -12,7 +12,7 @@ const confirm = sandbox.stub(); const check = sandbox.stub(); const mocks = { - '@inquirer/prompts': { confirm }, + '@inquirer/confirm': confirm, '../services/check-string-in-file.js': { check }, }; const globalMocks = globalMocksFactory(sandbox); diff --git a/test/unit/services/user-flow-steps/helpers.test.js b/test/unit/services/user-flow-steps/helpers.test.js index 3d1eb4b..a0a061c 100644 --- a/test/unit/services/user-flow-steps/helpers.test.js +++ b/test/unit/services/user-flow-steps/helpers.test.js @@ -24,7 +24,7 @@ const portValidator = sandbox.stub(); const originValidator = sandbox.stub(); const mocks = { - '@inquirer/prompts': { input }, + '@inquirer/input': input, '../../helpers/logger.js': { Logger }, '../../helpers/verify-remote-origin.js': { verifyRemoteOrigin }, '../clone-git-repository.js': { cloneRepository }, diff --git a/test/unit/services/user-flow-steps/init-with-config-file.test.js b/test/unit/services/user-flow-steps/init-with-config-file.test.js index dcf4393..8562521 100644 --- a/test/unit/services/user-flow-steps/init-with-config-file.test.js +++ b/test/unit/services/user-flow-steps/init-with-config-file.test.js @@ -15,7 +15,7 @@ class Logger { } const mocks = { - '@inquirer/prompts': { confirm }, + '@inquirer/confirm': confirm, '../../helpers/logger.js': { Logger }, '../../services/user-flow-steps/init.js': { init }, }; diff --git a/test/unit/services/user-flow-steps/init.test.js b/test/unit/services/user-flow-steps/init.test.js index 89dd148..fad728e 100644 --- a/test/unit/services/user-flow-steps/init.test.js +++ b/test/unit/services/user-flow-steps/init.test.js @@ -23,7 +23,7 @@ class OpenApiSchemaNotFoundError extends Error {} const addToGitignore = sandbox.stub(); const mocks = { - '@inquirer/prompts': { checkbox }, + '@inquirer/checkbox': checkbox, '../../helpers/logger.js': { Logger }, '../../errors/openapi-schema-not-found-error.js': { OpenApiSchemaNotFoundError }, '../../services/user-flow-steps/helpers.js': { getOrigin, getSchemas, askForPorts, saveRuntimeConfig },