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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@microsoft/openpai-js-sdk

v0.1.5

Published

The `Javascript` SDK for `OpenPAI`

Readme

OpenPAI JS SDK

Build Status Coverage Status

The JavaScript SDK is designed to facilitate the developers of OpenPAI to offer user friendly experience.

The SDK mainly provides client side sharable functions such as RESTful API wrapping, error handling, storage accessing and processing of job protocol. Now the OpenPAI RESTful API is updating, please waiting for our stable release.

It could be used to support existing or future front-ends (e.g. Web Portal, VS Code extension, Command Line Interface, Jupyter Notebook extension, and 3rd party clients), and also could be used to simplify the design of kube runtime plugins, which are executed in init containers.

Now we are porting some of the functions from existing Python SDK and command line tool. The whole functionality of this SDK will be ready soon.

Installation

npm install --save @microsoft/openpai-js-sdk

Initialize the openPAIClient

import { PAIV2 } from '@microsoft/openpai-js-sdk';

const cluster: PAIV2.IPAICluster = {
    username: '<username>',
    token: '<token>',
    rest_server_uri: '<The host>/rest-server'
};
const openPAIClient = new PAIV2.OpenPAIClient(cluster);

Installation of CLI tool

The SDK offers a command line interface (CLI) prefixed by pai. For end users that use CLI only, we provide an easy way to install it via pip and the Python package nodeenv.

pip install nodeenv
nodeenv myenv
source myenv/bin/activate # use `myenv/Scripts/activate` instead on Windows
npm i -g @microsoft/openpai-js-sdk

This installation commands will generate a virtual environment with latest node in the directory ./myenv, and install the CLI in it. Then user could use pai command by any of below methods

  • activate the virtual environment first

    source myenv/bin/activate # use `myenv/Scripts/activate` instead on Windows
    pai -h
  • use a absolute path to pai

    myenv/bin/pai -h # use `myenv/Scripts/pai` instead on Windows
  • add myenv/bin to environment variable path

RESTful API

The SDK provides ease-of-use JavaScript and TypeScript wrapping of OpenPAI RESTful APIs.

Details are in rest-api.md.

Storage Operations

Multiple types of storages are supported by OpenPAI, however, the end user and developers should not be bothered by too much details of it. The SDK provides an abstract storage accessing methods to let users access the storages.

User could get the IStorageNode object for each cluster provisioned storage by

// get a storage object with its name
let storageDetail: IStorageDetail = await opanPAIClient.storage.getStorageByName(name)
let storageNode: IStorageNode = new StorageNode(storageDetail)

It would provide storage accessing methods (getinfo, listdir, makedir, upload, download, delete) and CLI storage operations.

Details are in storage.md.

Local Cluster Management

In some scenarios (e.g. cli or notebook extension), it is required to store the cluster information locally.

Unified error handling

The SDK will center the error handling, thus all front ends depending on it could share the same way to warn users.

Common job config processing

The interoperation of OpenPAI components depends on the job protocol, and there have been some common operations of it, such as validation, preprocessing before submission (e.g. embedding essential user information). The SDK will provide essential common operations for all the front ends.

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.