Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

exec-step

Package Overview
Dependencies
Maintainers
0
Versions
18
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

exec-step

executes a step in a series with console feedback

  • 0.17.0
  • latest
  • npm
  • Socket score

Version published
Weekly downloads
1.8K
increased by351.23%
Maintainers
0
Weekly downloads
 
Created
Source

exec-step

executes a step in a series with console feedback

demo

usage

import { ExecStepContext } from "exec-step";

function takesAWhile() {
    return new Promise(resolve => setTimeout(resolve, 5000));
}

function isQuick() {
  // does nothing!
}

(async () => {
    const ctx = new ExecStepContext();
    ctx.exec("please wait", takesAWhile);
    ctx.exec("done quickly!", isQuick);
})();

options

construct with optional options of the shape:

export interface ExecStepConfiguration {
    asciiPrefixes?: boolean;
    prefixes?: PartialStepConfig<string>;
    colors?: PartialStepConfig<string>;
    throwErrors?: boolean;
    dumpErrorStacks?: boolean;
}

defaults are:

const defaultConfig: ExecStepConfiguration = {
    colors: {
        wait: "yellowBright",
        ok: "greenBright",
        fail: "redBright"
    },
    throwErrors: true,
    dumpErrorStacks: false
};

by default, exec-step reports wait/ok/fail status with utf-8 characters:

const utf8Prefixes: PartialStepConfig<string> = {
    wait: "⌛",
    ok: "✔",
    fail: "✖"
};

but can use ascii -- either via the prefixes part of the config, or by observing the environment variable ASCII_STEP_MARKERS for a truthy value like 1 or true -- useful at CI. If that's set, you get the following prefixes:

const asciiPrefixes: PartialStepConfig<string> = {
    wait: "[ WAIT ]",
    ok: "[  OK  ]",
    fail: "[ FAIL ]"
}

error handling

by default, exec-step will print out the task label with the failure marker of your choosing and re-throw the error, however, you can take complete control by handling errors within your task and throwing an ExecStepOverrideMessage error, eg:

await ctx.exec("do the thing", async () => {
    try {
        await attemptToDoTheThing();
    } catch (e) {
        throw new ExecStepOverrideMessage(
            // overrides the error label
            `Error whilst attempting to do the thing: ${e.message}`,
            // original error, rethrown if allowed
            e,
            // suppress the error being thrown with false, or 
            // set this true to rethrow the original error
            // if the context's default behavior is to throw
            false
        );
    }
});

FAQs

Package last updated on 09 Oct 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc