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

electrocli

v1.0.0

Published

Electro is a CLI utility toolbox for extending the functionality of the node library ElectroDB to the terminal.

Downloads

25

Readme

ElectroCLI

ElectroDB Electro is a CLI utility toolbox for extending the functionality of the node library ElectroDB to the terminal.

This app is a work in progress, please submit issues/feedback or reach out on twitter @tinkertamper.

Features

  • Import your models into the cli to run queries and operations directly from your terminal
  • Stand up a web service that dynamically creates endpoints based on your models.

Install

Install globally

npm install electrocli -g

Usage

Usage:  [options] [command]

Electro is a CLI utility toolbox for extending the functionality of the node library ElectroDB to the terminal.

Options:
  -V, --version                 output the version number
  -h, --help                    display help for command

Commands:
  typedef [options] <filepath>  [Deprecated]: Specify a file that exports an ElectroDB Service or Entity and Electro CLI will automatically generate a typescript type definition file.
  add [options] <filepath>      Specify a file that exports an ElectroDB Service, Entity, or JSON Model. Electro will add that Instance to the CLI allowing it to be queried.
  remove|rm <service>           Remove existing ElectroDB Instance from the Electro CLI.
  list|ls                       List all ElectroDB Instances that have been imported into the Electro CLI.
  serve|rest <port> <port>      Stand up a local http endpoint based on your imported Instances.
  scan                          Execute scans against your imported Instances.
  query                         Execute queries against your imported Instances.
  help [command]                display help for command

Commands

typedef

Usage:  typedef [options] <filepath>

[Deprecated]: Specify a file that exports an ElectroDB Service or Entity and Electro CLI will automatically generate a typescript type definition file.

Options:
  -o, --output <filepath>  Specify an output filepath for the generated type definition file.
  -h, --help               display help for command

add

Usage:  add [options] <filepath>

Specify a file that exports an ElectroDB Service, Entity, or JSON Model. Electro will add that Instance to the CLI allowing it to be queried.

Options:
  -l, --label <label>    Specify a custom label for this service to appear in the CLI. (default: Service/Entity name)
  -t, --table <table>    Specify a default table to use with this instance - Required for Models.
  -p, --params <params>  Specify JSON for custom DocumentClient configuration. If filepath exports a Service or Entity this configuration will overwrite any client specified on that instance.
  -o, --overwrite        Overwrite existing tag if already exists
  -h, --help             display help for command

remove

Usage:  remove|rm [options] <service>

Remove existing ElectroDB Instance from the Electro CLI.

Options:
  -h, --help  display help for command

list

Usage:  list|ls [options]

List all ElectroDB Instances that have been imported into the Electro CLI.

Options:
  -h, --help  display help for command

serve

Usage:  serve|rest <port> [options] <port>

Stand up a local http endpoint based on your imported Instances.

Options:
  -h, --help  display help for command

scan

Usage:  scan [options] [command]

Execute scans against your imported Instances.

Options:
  -h, --help      display help for command

Commands:
  taskapp
  help [command]  display help for command

query

Usage:  query [options] [command]

Execute queries against your imported Instances.

Options:
  -h, --help      display help for command

Commands:
  taskapp
  help [command]  display help for command

Examples

TaskApp

TaskApp is a simple three Entity service that tracks Organizations, Employees, and Tasks.

Setup

The following examples use models and code within the ElectroDB repository for examples: electrodb. Follow the steps below to get setup or follow along.

Install ElectroCLI Globally

Install electrocli via npm globally. Note: This may require sudo or administrator privileges.

$> npm install electrocli --global

Clone/Download Examples

Clone the electrodb repository and then navigate to the the TaskApp example.

$> git clone https://github.com/tywalch/electrodb.git
$> cd electrodb/examples/taskapp

Configure your DynamoDB Target

It is recommended that you use the dynamodb-local docker image.

$> docker pull amazon/dynamodb-local
$> docker run -p 8000:8000 amazon/dynamodb-local

More information on how to setup and configure that here.

If you want to use your own DynamoDB instance in AWS (be careful with incurring fees) you can modify the client.js file located in the electrodb directory from above: electrodb/examples/taskapp/lib/client.js.


Load the database

Records can be loaded into the example table by executing the file electrodb/examples/taskapp/bin/load.js. You will be prompted to confirm loading by typing y.

$> node electrodb/examples/taskapp/bin/load.js
   Your configuration is pointed to a local instance of dynamodb. This operation will create a table named 'electro' and then load 500 Employees and 600 Tasks records. Are you sure you want to proceed? y/N
$> y

Add the "Taskr" Service to electro cli

Use the add command to add the taskr.js within the electrodb/examples/src directory.

$> electro add electrodb/examples/src/taskr.js

Query TaskApp

Run queries against your models directly from the command line.

$> electro query taskapp
Options:
  -r, --raw                  Return raw field response.
  -p, --params               Return DocumentClient params as results instead of querying the table.
  -t, --table <table>        Override table defined on Instance.
  -l, --limit <number>       Limit the number of results returned.
  -f, --filter <expression>  Supply a filter expression "<attribute>, <operation>, [value1] [value2]". Use double commas to escape a comma. Available attributes include employee, firstName, lastName, office, title, team, salary, manager, dateHired, birthday. (default: [])
  -d, --delete               Delete items returned from query.
  -h, --help                 display help for command

| Access Pattern | Command | | -------------: | ------- | | employee | [options] <employee> | | coworkers | [options] <office> [team] [title] [employee] | | teams | [options] <team> [dateHired] [title] | | employeelookup | [options] <employee> | | roles | [options] <title> [salary] | | directreports | [options] <manager> [team] [office] | | task | [options] <task> [project] [employee] | | project | [options] <project> [employee] [status] | | assigned | [options] <employee> [project] [status] | | statuses | [options] <status> [project] [employee] | | locations | [options] <country> <state> [city] [zip] [office] | | office | [options] <office> | | workplaces | [options] <office> [team] [title] [employee] | | assignments | [options] <employee> |

Serve CRUD HTTP Server for TaskApp

Stand up an HTTP Server based all of your models.

$> electro serve 8080
Options:
  -v, --view-only  Serve with only get/query operations as endpoints. (default: false)
  -h, --help       display help for command

Use the --view-only flag to stand up an http server without exposing any put/create/update/patch/delete operations.

| Method | Endpoint | | -------: | -------- | | GET | http://localhost:8080/taskapp/employee/:employee | | GET | http://localhost:8080/taskapp/coworkers/:office | | GET | http://localhost:8080/taskapp/coworkers/:office/:team | | GET | http://localhost:8080/taskapp/coworkers/:office/:team/:title | | GET | http://localhost:8080/taskapp/coworkers/:office/:team/:title/:employee | | GET | http://localhost:8080/taskapp/teams/:team | | GET | http://localhost:8080/taskapp/teams/:team/:dateHired | | GET | http://localhost:8080/taskapp/teams/:team/:dateHired/:title | | GET | http://localhost:8080/taskapp/employeelookup/:employee | | GET | http://localhost:8080/taskapp/roles/:title | | GET | http://localhost:8080/taskapp/roles/:title/:salary | | GET | http://localhost:8080/taskapp/directreports/:manager | | GET | http://localhost:8080/taskapp/directreports/:manager/:team | | GET | http://localhost:8080/taskapp/directreports/:manager/:team/:office | | GET | http://localhost:8080/taskapp/task/:task | | GET | http://localhost:8080/taskapp/task/:task/:project | | GET | http://localhost:8080/taskapp/task/:task/:project/:employee | | GET | http://localhost:8080/taskapp/project/:project | | GET | http://localhost:8080/taskapp/project/:project/:employee | | GET | http://localhost:8080/taskapp/project/:project/:employee/:status | | GET | http://localhost:8080/taskapp/assigned/:employee | | GET | http://localhost:8080/taskapp/assigned/:employee/:project | | GET | http://localhost:8080/taskapp/assigned/:employee/:project/:status | | GET | http://localhost:8080/taskapp/statuses/:status | | GET | http://localhost:8080/taskapp/statuses/:status/:project | | GET | http://localhost:8080/taskapp/statuses/:status/:project/:employee | | GET | http://localhost:8080/taskapp/locations/:country/:state | | GET | http://localhost:8080/taskapp/locations/:country/:state/:city | | GET | http://localhost:8080/taskapp/locations/:country/:state/:city/:zip | | GET | http://localhost:8080/taskapp/locations/:country/:state/:city/:zip/:office | | GET | http://localhost:8080/taskapp/office/:office | | GET | http://localhost:8080/taskapp/workplaces/:office | | GET | http://localhost:8080/taskapp/workplaces/:office/:team | | GET | http://localhost:8080/taskapp/workplaces/:office/:team/:title | | GET | http://localhost:8080/taskapp/workplaces/:office/:team/:title/:employee | | GET | http://localhost:8080/taskapp/assignments/:employee | | POST | http://localhost:8080/taskapp/employee | | POST | http://localhost:8080/taskapp/task | | POST | http://localhost:8080/taskapp/locations | | PUT | http://localhost:8080/taskapp/employee/:employee | | PUT | http://localhost:8080/taskapp/task/:task/:project/:employee | | PUT | http://localhost:8080/taskapp/locations/:country/:state/:city/:zip/:office | | DELETE | http://localhost:8080/taskapp/employee/:employee | | DELETE | http://localhost:8080/taskapp/task/:task/:project/:employee | | DELETE | http://localhost:8080/taskapp/locations/:country/:state/:city/:zip/:office |