promise-like-go
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

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
  • 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

Readme

Keywords

none

Package Sidebar

Install

npm i promise-like-go

Weekly Downloads

12

Version

1.0.0

License

MIT

Unpacked Size

18.7 kB

Total Files

6

Last publish

Collaborators

  • alperreha