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

depi-node-client

v1.0.3

Published

GRPC Client for communicating with depi from node in typescript or javascript

Downloads

15

Readme

DEPI NodeJS Client

This is published as depi-node-client at npmjs and contains the classes, plus utility functions at a higher level of abstraction, for the gRPC protocol buffers for depi.

The most stright forward way to communicate with depi is by using the depiUtils as shown below. If you are writing a vscode extension then look at the next section of how to obtain a session.

import { depiUtils } from 'depi-node-client';
const url = '127.0.0.1:5051';
const userName = 'demo';
const password = '123456';
// Start out by logging in.
const depiSession = await depiUtils.logInDepiClient(url, userName, password);
// Each call takes a session as first argument
const resourceGroups = await depiUtils.getResourceGroups(depiSession);
resourceGroups.forEach(rg => console.log(JSON.stringify(rg)));
// Finally logOut.. 
await logOut(depiSession);

Methods for VS-code Extension

This node-module also provides a set of calls into the Depi Browser vscode extension. These provide a way to reuse the server url, login credentials, etc. from the one depi extension, call out and reuse generic depi GUI functionality and a way to communicate (revealing resources) across extensions for differnet depi tools.

import { DepiExtensionApi, depiUtils } from 'depi-node-client';
const depiExtApi = new DepiExtensionApi(console.log);

// Each call will force the depi-extension to login in case it hasn't already.
await depiExtApi.showBlackboard();
// This will also force the depi-extension to login and additionally create a session tied to this instance of depiExtApi.
const depiSession =  await depiExtApi.getDepiSession(); 

// Once the session is obtained the functions from depiUtils can be used right away.
const resourceGroups = await depiUtils.getResourceGroups(depiSession);
resourceGroups.forEach(rg => console.log(JSON.stringify(rg)));

// Finally logout and destroy the session
await depiExtApi.destroy();

Developer

Generating Classes and Resources from .proto

Install dependencies:

npm install

# Apple M1 users should install for x64 due to grpc-tools not supporting arm64
npm install --target_arch=x64

Use proto compiler and ts-protoc-gen to generate the TypeScript files:

Important! This needs to be executed from the directory where this file is.

npm run build

To use the async API for the client. Including the following snippet when creating the depi-client instance. These *Async methods are generate in the d.ts by generateAsyncTypes.js which is run as part of the build.

const { DepiClient } = require('./pbs/depi_grpc_pb');
const addAsyncMethods = require('./pbs/addAsyncMethods');

const client = new DepiClient('127.0.0.1:5150', grpc.credentials.createInsecure());
addAsyncMethods(client);

// Example using the async/promise methods,
const req = new depi.LoginRequest();
const loginResponse = await client.loginAsync(req);

Note that the recommended way to communicate with depi is thru the higher level methods from src/depiUtils.ts.

Publish a Release

(Make sure to npm run build and check it's up-to-date). Also if adding a function in depi-utils - don't forget to add it to the default export!

  1. npm run compile
  2. Update to a new version (x.x.x) in package.json
  3. git commit -am "Node-client release x.x.x"
  4. git push origin main
  5. npm publish ./