All Projects β†’ DrJume β†’ try-inline

DrJume / try-inline

Licence: MIT License
An easy inline error handling wrapper for async promises and syncronous functions

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to try-inline

try-to-catch
functional try-catch wrapper for promises
Stars: ✭ 30 (+25%)
Mutual labels:  try, await, try-catch
of
🍬 Promise wrapper with sugar 🍬
Stars: ✭ 13 (-45.83%)
Mutual labels:  await, try-catch
go-try
A package that allows you to use try/catch block in Go.
Stars: ✭ 37 (+54.17%)
Mutual labels:  try, try-catch
sleepover
πŸ’€ Sleep, snooze & step methods
Stars: ✭ 13 (-45.83%)
Mutual labels:  await
helo
A simple and small low-level asynchronous ORM using Python asyncio.
Stars: ✭ 18 (-25%)
Mutual labels:  await
unity-async-tweens
Tween Extension to Unity-AsyncRoutines
Stars: ✭ 16 (-33.33%)
Mutual labels:  await
Promise
Asynchronous Programming with Promises
Stars: ✭ 15 (-37.5%)
Mutual labels:  await
TYPOTry
A small Vagrant box to try out the most recent TYPO3 release
Stars: ✭ 21 (-12.5%)
Mutual labels:  try
EasyNetworking
πŸ›°Easy networking with async/await
Stars: ✭ 27 (+12.5%)
Mutual labels:  await
Redux
Manage iOS App state with Redux and Async/Await :)
Stars: ✭ 18 (-25%)
Mutual labels:  await
hxasync
This library allows you to add "async" and "await" keywords in Python and JavaScript code almost the same way you would do it in the native code.
Stars: ✭ 21 (-12.5%)
Mutual labels:  await
flush-promises
Flush all queued resolved promise handlers
Stars: ✭ 172 (+616.67%)
Mutual labels:  await
organiser
An organic web framework for organized web servers.
Stars: ✭ 58 (+141.67%)
Mutual labels:  await
is-async-function
Is this a native `async function`?
Stars: ✭ 17 (-29.17%)
Mutual labels:  await
ProtoPromise
Robust and efficient library for management of asynchronous operations in C#/.Net.
Stars: ✭ 20 (-16.67%)
Mutual labels:  await
combine-promises
Like Promise.all(array) but with an object instead of an array.
Stars: ✭ 181 (+654.17%)
Mutual labels:  await
Promise.allSettled
ES Proposal spec-compliant shim for Promise.allSettled
Stars: ✭ 93 (+287.5%)
Mutual labels:  await
AsyncLock
An async/await-friendly lock for .NET, complete with asynchronous waits, safe reëntrance, and more.
Stars: ✭ 106 (+341.67%)
Mutual labels:  await
ws-promise
A tiny, Promise-based WebSocket protocol allowing request-response usage in ECMAScript
Stars: ✭ 20 (-16.67%)
Mutual labels:  await
node-await-event-emitter
await events library like EventEmitter
Stars: ✭ 19 (-20.83%)
Mutual labels:  await

πŸš₯ TryInline

An easy inline error handling wrapper for async promises and syncronous functions

NPM Version

πŸ’‘ Inspired by await-to-js

🎁 Example

const { try_ } = require('try-inline');

let err, data;

// async
[err, data] = await try_(somePromise());
if (err) process.exit(1);
console.log(data);

// normal function
[err, data] = try_(() => someFunction());
if (err) process.exit(1);
console.log(data);

πŸ“¦ Installation

$ npm install try-inline

πŸ’ˆ Features

  • Inline error catching
  • Configurable error logging
  • Error object patching
    • on a execution fail, the returned error object includes its ErrorString
  • Labeling executions for better debugging
  • Filtering error results for specified key-paths (documentation coming soon)
    • only show specific keys from the error object

πŸ”© API

try_(executionObj, logOptionsString, [options]) => [err, data]

Wraps an execution safely. The default TryInline instance.

  • executionObj - the object to execute. Can be a promise or a callback with a syncronous function.
  • logOptionsString - optional (you can leave it empty) option string for the logger.
    • Format: "(logLevel:)labelString"
      • logLevel - method used from logger. The default logger is the JavaScript global "console". So the available values are: info, log, warn, error. Defaults to error. When you want to use your own logger, take a look at creating your own TryInline custom instance.
      • labelString - optional label attached to the error log message.
    • Example: "warn:HTTP_TIMEOUT" -> Logger gets the 'warn' log-level and the label string 'HTTP_TIMEOUT'
  • options - optional object with:
    • errData - additional error information (assinged to error.ErrorData).

Returns an array with two values:

  • err - the error obejct. When executionObj throws an error, it is assigned to err. Otherwise err is null.
  • data - returned value from executionObj. On error it gets undefined.
const { try_ } = require('try-inline');

let [err, data] = await try_(readFilePromise('lorem.txt'), 'warn:READ_FILE_ERR',
    { errData: "Safely ignore the error. The lorem file is optional." } 
});

// array destructuring is awesome!
let [err]    = ... // just get the error obj
let [, data] = ... // only get the data obj

new TryInline(options) => try_ (customized)

Creates a custom TryInline instance with specified options.

  • options - required object where:
    • Logger - custom error handling function. It gets error, level, label passed as arguments.
    • DefaultLogLevel - set the default level for your Logger.

Returns a custom try_ instance with attached Logger.

const TryInline = require('try-inline');

const try_ = new TryInline({
  Logger: function(error, level, label) {
    const logMessage = label ? `(${label}) ${error}` : error;
    console[level](logMessage);
  },
  DefaultLogLevel: 'debug'
});

☝️ Notes

Do not always trust automatic semi-colon insertion (ASI) in JavaScript, when not using semi-colons! Be careful when assigning the output variables by destructuring the returned array!

When you want to be 100% safe, then put a semi-colon in front of the destructuring statement:

;[err, data] = await try_(somePromise())

πŸ“ƒ License

MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].