oh-my-error
v2.0.0-prerelease.2
Published
A simple error handler for nodejs
Downloads
253
Readme
About package:
- 📖 TSDocs (Internal documentation)
- ♻️ Minified & Compressed
- ⚠️ Error Handler (
oh-my-error
) - ✅ Support JS/TS & CJS/ESM
What you get:
- 🛡️ Type safety
- 🚀 One-line error handling
- 🎯 Centralized error management
- 🧑💻👥 Error messages for Developers and users!
- 📝 Pre-defined error templates
- 🏗️ Consistent error structure across your application
- 🔌 Easy integration with existing codebases
Showcase
// Make your life better
// Instead
let data;
try {
data = readFile("...path");
} catch {
throw Error("Cant Load File!");
}
// Do
const data = myErrorWrapper(readFile, Error("Cant Load File!"))("...path");
📜 List of Contest
Install
NPM
npm install oh-my-error
PNPM
pnpm add oh-my-error
Yarn
yarn add oh-my-error
TLDR (Only Most Important!)
Functions
| Name | Description |
| ---------------------------------------------- | ------------------------------- |
| myError | Handle with Error Object |
| myErrorWrapper | trycatch
wrapper one liner |
| myErrorCatcher | promise
wrapper |
| myErrorHandler | handle scenarios for each error |
Types
Error Templates
| Name | Description |
| ------------------------------------------------- | --------------------------------------------------------------- |
| TMyErrorList !important
| For creating list with errors in one place! |
| IMyError | Basic Error |
| IMyErrorAPI | Basic Error API |
| IMyErrorRateLimit | IMyErrorApi with RateLimit error |
| IMyErrorValidation | IMyError with Validation error |
Rest Types for creating own Errors
Functions
myError ♻️ Refactored
Processes an error object, invoking functions with provided arguments
const MyErrorList = {
BLACKLISTED: {
name: "Black Listed Name",
hint: "Try use other one!",
message: (name: string) => `${name} is on black list!`
}
} as const satisfies TMyErrorList;
throw new myError(MyErrorList.BLACKLISTED, { message: ["nameInputed"] });
Output
{
name:"Black Listed Name",
hint:"Try use other one!",
message:"nameInputed is on black list!"
}
myErrorWrapper 🎉 New feature!
TryCatch
one line wrapper with instant error thrower.
// Before
let data;
try {
data = readFile("path...");
} catch(){
throw new Error("Can't read file!");
}
// After
const [data,isError] = myErrorWrapper(readFile)("path...");
if(isError) throw new Error("Can't read file!")
// Or instant Error Throw
const data = myErrorWrapper(readFile,new Error("Can't read file!"))("path...");
[!TIP] Async Functions
At async function it returns Promise, just useawait
to solve that
const data = await myErrorWrapper(asyncFun, new Error("Oh, Error!"))("MyString");
myErrorCatcher
new Promise
wrapper.
const data = await myErrorCatcher(readFile)("path...").catch(() => {
// Code before crash...
throw new Error("Can't read file!");
});
myErrorHandler
Execute Scenarios for an error!
const [data, isError] = myErrorWrapper(readFile)("./ReadThisFile");
const MyErrorHandlerList = {
FS001: () => {
// Do this code if throw this error
console.error("ERROR");
}
};
if (isError) myErrorHandler(data.code, MyErrorHandlerList)();
Types
TMyErrorList
[!IMPORTANT]
Useas const satisfies TMyErrorList
to work it properly. Don't forget aboutconst
because without this you not gonna get tips.
[!TIP]
You can addsatisfies ERRORTYPE
per error to have strict typing per error or just addas const satisfies TMyErrorList<ERRORTYPE>
to have strict typing too!
const ErrorList = {
notFound: {
name: "Not Found",
code: "FS001",
message: { user: "File not found", dev: "The file you are trying to read does not exist" },
hint: (path: string) => `Check if the file exists at ${path}`
} satisfies IMyError,
cantRead: {
code: "FS002",
name: "Cant Read",
message: { user: "Can't read file", dev: "readFileSync throw error" },
hint: {
user: "Check if the file is not corrupted or permissions",
dev: "File is corrupted or has no permissions to be read"
}
}
} as const satisfies TMyErrorList;
Error Templates (Interfaces) new!
There you can find ready error structures.
| Name | Description | Extends |
| --------------------------------------------------------------------------------------------------------- | --------------------------------- | ----------------------------------------------------------------------------------------------------- |
| IMyError new!
| Basic Error | - |
| IMyErrorAPI new!
| Basic Error for an API error | IMyError, TApiError |
| IMyErrorRateLimit new!
| API error for RateLimit | IMyError, TApiRateLimit |
| IMyErrorValidation new!
| API error for Validation problems | IMyError, TValidationError |
Predefined elements for Functions (Atoms) new!
Short predefined types to easy creating own Error types!
| Name (Col1) | Name (Col2) | Name (Col3) |
| -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
| TSeverity new!
| TSeverity2 new!
| TErrorMessages new!
|
| TErrorMessagesExt new!
| TMyErrorList new!
| TErrorList new!
|
| TCauseError new!
| TDetails new!
| TBaseError new!
|
| TBaseErrorExt new!
| TValidationError new!
| TApiError new!
|
| TApiRateLimit new!
| StatusCodesnew!
| |