Skip to content

alperreha/promise-like-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

promise-like-go

npm version License: MIT

A lightweight TypeScript utility that brings Go-style error handling to JavaScript/TypeScript Promises. Handle async errors elegantly with tuple returns similar to Go's pattern.

Features

  • Convert Promise-based functions to Go-like [result, error] tuples
  • Object format for more readable code
  • Type-safe error handling
  • Zero dependencies
  • TypeScript support out of the box

Installation

npm install promise-like-go

Usage

import { executeAsync } from 'promise-like-go';

// βœ… e.g. usage 1: array format
// get supabase post row
const [post, error] = await executeAsync(async () =>
  supabase.from('posts').select('*').eq('id', 1)
);
// πŸ”₯ Do something with post or error


// βœ… e.g. usage 2: object format
// get supabase post row
const {data: post, error} = await executeAsyncObj(async () =>
  supabase.from('posts').select('*').eq('id', 1)
);
// πŸ”₯ Do something with post or error

Another example

// type: module
import { executeAsync, executeAsyncObj } from "promise-like-go";
// type: commonjs
// const { executeAsync, executeAsyncObj } = require("promise-like-go");

const fn = async () => {
  // array format
  const [data, error] = await executeAsync(() => {
    return new Promise((resolve) => {
      setTimeout(() => {
        resolve("Array Format is Great πŸ”₯");
      }, 1000);
    });
  });
  console.log("βœ… array format response ➑️ ", data, error);

  // object format
  const { data: res2, error: err2 } = await executeAsyncObj(() => {
    return new Promise((resolve) => {
      setTimeout(() => {
        resolve("Object Format is Awesome πŸ”₯");
      }, 1000);
    });
  });
  console.log("βœ… object format response ➑️ ", res2, err2);
};

fn().catch((err) => {
  console.log("❌ error", err);
});

API Reference

executeAsync

executeAsync<T>(fn: () => Promise<T>): Promise<[T | null, any]>
executeAsyncObj<T>(fn: () => Promise<T>): Promise<{ data: T | null; error: any; }>

Executes an async function and returns a tuple where:

  • First element is the result (or null if error occurred)
  • Second element is the error (or null if successful)

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

License

MIT

About

A simple nodejs error handling package inspired by golang error handling. πŸ“¦

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published