mcpField
B
better-all

better-all

github.com/casper-studiosDevelopment15245 installsUpdated 8w ago
Repository

About better-all

better-all is a TypeScript library for declaring task dependencies and scheduling work around them. It suits developers who want parallel execution without manually arranging each dependency stage.

Key features

  1. 01Inline task dependency declarations
  2. 02Automatic parallel execution optimization
  3. 03Inferred result types

Use cases

  1. 01Running independent data fetches concurrently
  2. 02Scheduling dependent tasks in a multi-step operation

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/casper-studios/casper-marketplace --skill better-all

After installing, type/better-allin Claude Code to confirm it loaded.

Bundled filesreferences/dag-patterns.md

Details

From the project README

Documentation

Note: This library is not yet indexed in DeepWiki or Context7.

better-all Library

better-all provides Promise.all with automatic dependency optimization. Instead of manually analyzing which tasks can run in parallel, tasks declare dependencies inline and execution is automatically optimized.

Installation

pnpm add better-all

Basic Usage

import { all } from "better-all";

const results = await all({
  // Independent tasks run in parallel
  fetchUser: () => fetchUser(userId),
  fetchPosts: () => fetchPosts(userId),

  // Dependent task waits automatically
  combined: async (ctx) => {
    const user = await ctx.$.fetchUser;
    const posts = await ctx.$.fetchPosts;
    return { user, posts };
  },
});

// results.fetchUser, results.fetchPosts, results.combined all typed

Key Advantage: Automatic Optimization

// Manual approach - error-prone
const [user, posts] = await Promise.all([fetchUser(), fetchPosts()]);
const profile = await buildProfile(user, posts);
const [feed, stats] = await Promise.all([
  buildFeed(profile, posts),
  buildStats(profile),
]);

// better-all - dependencies declared, execution optimized
const results = await all({
  user: () => fetchUser(),
  posts: () => fetchPosts(),
  profile: async (ctx) => buildProfile(await ctx.$.user, await ctx.$.posts),
  feed: async (ctx) => buildFeed(await ctx.$.profile, await ctx.$.posts),
  stats: async (ctx) => buildStats(await ctx.$.profile),
});

Type Inference

Results are fully typed based on task return types:

const results = await all({
  count: () => Promise.resolve(42),
  name: () => Promise.resolve("test"),
  combined: async (ctx) => ({
    count: await ctx.$.count,
    name: await ctx.$.name,
  }),
});

// TypeScript knows:
// results.count: number
// results.name: string
// results.combined: { count: number; name: string }

References

Comments

Markdown supported