npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

circuitscan-pipeline-runner

v0.0.9

Published

Pipeline packages must have this package as a production dependency:

Downloads

25

Readme

circuitscan-pipeline-runner

Pipeline packages must have this package as a production dependency:

yarn add circuitscan-pipeline-runner

Pipeline default export

The default export async function from the main file specified in package.json on your pipeline package will be invoked.

export default async function(event, { status })

Arguments

event

Includes a payload object key which is the input from the user's CLI.

status

Includes a synchronous log(msg, data) method for sending status updates to the user's CLI and website frontend build output.

status.log('Reticulating Splines...', { splineLen: 123 });

Return value

It should return the pkgName string on success or throw an error on failure. This package name should have a suffix appended by the uniqueName() function.

During its operation, the pipeline package should upload a file at build/<pkgName>/info.json (using uploadLargeFileToS3()) containing the necessary data to display the information about the circuit. Other build artifacts should also go in this directory.

Standard library

Also includes a standard library for interacting with build artifacts and relaying compiler status.

Function Name | Arguments | Note --------------|-----------|---------- uniqueName | prefix (string) | Add a suffix that contains an adjective, color, and animal to make the prefix unique async execPromise | cmd (string)options (object, optional) | Node.js fs.exec promisified monitorProcessMemory | processName (string)timeout (number)callback (function) | Callback invoked at interval, returns function that can be invoked to stop monitoring async downloadBinaryFile | url (string)outputPath (string) | Download file from HTTPS using streams async uploadLargeFileToS3 | keyName (string)filePath (string)logger (object, optional) | Upload filePath to the artifact S3 bucket using streams. If specified, logger must have a log(msg) method. async zipDirectory | sourceDir (string)outPath (string)logger (object, optional) | Create a zip file of a directory. If specified, logger must have a log(msg) method. mkdirpSync | targetDir (string) | Recreation of shell command mkdir -p async deleteS3Keys | keys (Array[string]) | Delete some files in the BLOB_BUCKET from S3 class MockStatusReporter | none | For testing, logs are available as array on logs property

Barebones Example

import {writeFileSync} from 'node:fs';
import {join} from 'node:path';
import {tmpdir} from 'node:os';
import {
    execPromise,
    monitorProcessMemory,
    uniqueName,
    uploadLargeFileToS3,
} from 'circuitscan-pipeline-runner';

export default async function(event, { status }) {
    // TODO ... input validation ...

    const pkgName = uniqueName(circuitName);
    const dirPkg = join(tmpdir(), pkgName);

    const compilePromise = execPromise(`gcc foo.c`);
    const cancelMemoryMonitor = monitorProcessMemory(
      'gcc',
      10000,
      memoryUsage => {
        status.log(`Compiler memory usage`, { memoryUsage });
      }
    );
    await compilePromise;
    cancelMemoryMonitor();

    writeFileSync(join(dirPkg, 'info.json'), JSON.stringify({
      requestId: event.payload.requestId,
      type: 'mypipeline',
      importantProperty: 123,
      foo: 'bar',
    }, null, 2));
    await uploadLargeFileToS3(`build/${pkgName}/info.json`, join(dirPkg, 'info.json'));

    return pkgName;
}

See Also

License

MIT