diff --git a/package-lock.json b/package-lock.json index aece578c..5ddb0b30 100644 --- a/package-lock.json +++ b/package-lock.json @@ -41,6 +41,7 @@ "map-obj": "^5.0.2", "modern-errors": "^4.0.0-beta.4", "modern-errors-bugs": "^1.1.0", + "modern-errors-cli": "^1.2.0", "modern-errors-stack": "^1.1.0", "normalize-exception": "^2.9.0", "nvexeca": "^8.3.0", @@ -4260,6 +4261,18 @@ "node": ">=4" } }, + "node_modules/chalk-string": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/chalk-string/-/chalk-string-1.1.0.tgz", + "integrity": "sha512-aIFrNe7qasELntauY3JVSh6AI2KZqo1ySxA8zkIX/VmTM6HqeFBDOiqf6qCwtlm3jMRfL0biyhmRGpp4BM1EBQ==", + "dependencies": { + "colors-option": "^4.4.0", + "is-plain-obj": "^4.1.0" + }, + "engines": { + "node": ">=14.18.0" + } + }, "node_modules/chalk/node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -10422,6 +10435,49 @@ "node": ">= 0.10" } }, + "node_modules/handle-cli-error": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/handle-cli-error/-/handle-cli-error-3.0.0.tgz", + "integrity": "sha512-o/7vxUYU8PN28prJvY2fUitEtLfBXXzjvhXJhyIHV5ESoWYtFuO5QIRuVtwIszb8siMJWE2/qcYuCCukxkcgIQ==", + "dependencies": { + "chalk-string": "^1.1.0", + "figures": "^5.0.0", + "filter-obj": "^5.1.0", + "is-error-instance": "^1.1.0", + "is-plain-obj": "^4.1.0", + "normalize-exception": "^2.8.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/handle-cli-error/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/handle-cli-error/node_modules/figures": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", + "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", + "dependencies": { + "escape-string-regexp": "^5.0.0", + "is-unicode-supported": "^1.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/hard-rejection": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", @@ -13111,6 +13167,20 @@ "modern-errors": "^4.0.0-beta.3" } }, + "node_modules/modern-errors-cli": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/modern-errors-cli/-/modern-errors-cli-1.2.0.tgz", + "integrity": "sha512-idCMnSoRAHeVA7Ck3UKxHFEQaM8EerRSBX22KuFSZF43FPYF3dFz09y4VCyoreF49iTlgLPLlwUZ+q8pldZe5w==", + "dependencies": { + "handle-cli-error": "^3.0.0" + }, + "engines": { + "node": ">=14.18.0" + }, + "peerDependencies": { + "modern-errors": "^4.0.0-beta.3" + } + }, "node_modules/modern-errors-stack": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/modern-errors-stack/-/modern-errors-stack-1.1.0.tgz", @@ -21249,6 +21319,15 @@ } } }, + "chalk-string": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/chalk-string/-/chalk-string-1.1.0.tgz", + "integrity": "sha512-aIFrNe7qasELntauY3JVSh6AI2KZqo1ySxA8zkIX/VmTM6HqeFBDOiqf6qCwtlm3jMRfL0biyhmRGpp4BM1EBQ==", + "requires": { + "colors-option": "^4.4.0", + "is-plain-obj": "^4.1.0" + } + }, "character-entities": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", @@ -25997,6 +26076,36 @@ "glogg": "^1.0.0" } }, + "handle-cli-error": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/handle-cli-error/-/handle-cli-error-3.0.0.tgz", + "integrity": "sha512-o/7vxUYU8PN28prJvY2fUitEtLfBXXzjvhXJhyIHV5ESoWYtFuO5QIRuVtwIszb8siMJWE2/qcYuCCukxkcgIQ==", + "requires": { + "chalk-string": "^1.1.0", + "figures": "^5.0.0", + "filter-obj": "^5.1.0", + "is-error-instance": "^1.1.0", + "is-plain-obj": "^4.1.0", + "normalize-exception": "^2.8.1", + "strip-ansi": "^7.0.1" + }, + "dependencies": { + "escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==" + }, + "figures": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", + "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", + "requires": { + "escape-string-regexp": "^5.0.0", + "is-unicode-supported": "^1.2.0" + } + } + } + }, "hard-rejection": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", @@ -27964,6 +28073,14 @@ "integrity": "sha512-SKojFk3tifjxd7vNRSc7BwS+8ITYe1Eb5oR4EEMUvW9UX0syLfrFl/UrDgXSE6ujnm+NzivgDXxNsSxYCSNXFA==", "requires": {} }, + "modern-errors-cli": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/modern-errors-cli/-/modern-errors-cli-1.2.0.tgz", + "integrity": "sha512-idCMnSoRAHeVA7Ck3UKxHFEQaM8EerRSBX22KuFSZF43FPYF3dFz09y4VCyoreF49iTlgLPLlwUZ+q8pldZe5w==", + "requires": { + "handle-cli-error": "^3.0.0" + } + }, "modern-errors-stack": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/modern-errors-stack/-/modern-errors-stack-1.1.0.tgz", diff --git a/package.json b/package.json index 95ecb62c..56ac49c4 100644 --- a/package.json +++ b/package.json @@ -60,6 +60,7 @@ "map-obj": "^5.0.2", "modern-errors": "^4.0.0-beta.4", "modern-errors-bugs": "^1.1.0", + "modern-errors-cli": "^1.2.0", "modern-errors-stack": "^1.1.0", "normalize-exception": "^2.9.0", "nvexeca": "^8.3.0", diff --git a/src/error/main.js b/src/error/main.js index fcc56fdc..3a7e611e 100644 --- a/src/error/main.js +++ b/src/error/main.js @@ -1,12 +1,14 @@ import modernErrors from 'modern-errors' import modernErrorsBugs from 'modern-errors-bugs' +import modernErrorsCli from 'modern-errors-cli' import modernErrorsStack from 'modern-errors-stack' import { packageJson } from '../utils/package.js' -export const AnyError = modernErrors([modernErrorsBugs, modernErrorsStack], { - bugs: packageJson.bugs.url, -}) +export const AnyError = modernErrors( + [modernErrorsBugs, modernErrorsCli, modernErrorsStack], + { bugs: packageJson.bugs.url }, +) export const UnknownError = AnyError.subclass('UnknownError', { cli: { exitCode: 1, header: 'red bold', icon: 'cross' },