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

clei

v1.3.1

Published

# Important

Downloads

3

Readme

Environments CLI

Important

  • Just tested in MacOS
  • Using crypto
    • Just tested with the aes-256-ctr algorithm for file encryption. Must use AES algorithms
      • Cipher key must be 32 chars for the 256 algorithms
  • A users-projects.json is used as our database.
    • It's encrypted in S3, so we can't edit it directly
    • It should contain all users, admins, projects and user permissions in projects.
  • Install the project locally with npm install -g

Requirements

  • Single Folder for all Projects
    • Ex: /Users/user1/Developer/
  • AWS Private Bucket
  • Tested with Node Versions >= 12.x.x

User Usage

command clei stands for Command Line Environment Interface

Config

clei config

  • Configures the environment for a non-admin user

    | Asks for | Description | | ---------------------- | -------------------------------------------------- | | Your email | Your email | | Your Key | Key provided by admin | | Data | Data provided by admin | | Your Projects Path | Path containing all your projects in your computer |

Re-configure

clei path

  • Sets you local path for your projects in your computer

    | Asks for | Description | | ---------------------- | ----------------------------- | | Your Projects Path | A valid path in your computer |

clei email

  • Sets you email to authorization your projects environments

    | Asks for | Description | | -------------- | ------------- | | Your Email | A valid email |

clei key

  • Sets you key to authorization your projects environments

    | Asks for | Description | | ------------ | ----------- | | Your Key | A valid key |

Download environment

clei download

  • Downloads the environment file for a project, decrypts it and overwrites it on the disk if exists.

  • The project needs to exist in your computer.

    | Asks for | Description | | ---------------- | ------------------------------------------------ | | Project Name | A valid Project Name | | Stage | The stage(s) of the environment to be downloaded |

  • This command could be inlined with clei download PROJECT STAGE

    • Multiple stages should be separated by commas
    • For multiple json files the first stage will be applied to the file

Output environment

clei output

  • Downloads the environment file for a project, decrypts it and outputs it in process.stdout.write

  • The project needs to exist in your computer.

    | Asks for | Description | | ---------------- | ------------------------------------------------ | | Project Name | A valid Project Name | | Stage | The stage(s) of the environment to be downloaded |

  • This command could be inlined with clei download PROJECT STAGE

    • Multiple stages should be separated by commas
    • For multiple json files the first stage will be applied to the file

Admin Usage

command clei stands for Command Line Environment Interface

Initialize

clei init

  • Setups the environment for the admin and Creates the users-projects.json Encrypted JSON file in S3.

    | Asks for | Description | | ------------------------- | ----------------------------------------------------------------------------------------------------------------------- | | Encryption Algorithm | Algorithm to encrypt files. Defaults to aes-256-ctr | | File Key | Key to encrypt and decrypt files. Must be 32 characters in length | | AWS Access Key ID | Your AWS Access Key ID | | AWS Secret Access Key | Your AWS Secret Access Key | | AWS Bucket Name | The name of the bucket where the credentials will be stored. It's recommended to make it private and use AWS encryption | | Admin Email | First email to be configured as admin | | Admin Name | Name of the admin | | Projects Path | Path containing all projects in your computer |

Share environment variables

clei share

  • Generates an encrypted string with the target user key

    | Asks for | Description | | -------------- | -------------------------- | | User Email | email from the target user |

CRUD Credentials

clei get credential

  • Gets the credential value for a project

    | Asks for | Description | | ---------------- | -------------------------------------------------- | | Project name | The name of the folder where the project is stored | | Stage | The stage from the credential | | Key | The key for the credential. Case Sensitive |

  • This command could be inlined with clei get credential PROJECT STAGE KEY

clei create credential

  • creates a credential value for a project

    | Asks for | Description | | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Project Name | The name of the folder where the project is stored. It should match with the same name in the users-projects.json file | | Stages | The stages for the environments files to add the credential to. It takes the stages configured in the users-projects.json file as inputs. | | Credential type | Only if project type is not .env. Value Type of the credential that will be added (string, boolean, int, float) | | Credential Key | The Key for your credential. For nested credentials you can separate it using a dot. (ex: the keys for { DB_HOST: { MYSQL: 'local' } should be specified as DB_HOST.MYSQL}) | | Credential Value | The Value for your credential. |

  • This command could be inlined with clei create credential PROJECT STAGE KEY TYPE VALUE

    • STAGE could be multiple stages separated by commas
    • TYPE is only necessary on .json files
    • VALUE should match type (only on .json files)

clei update credential

  • updates a credential value for a project stage or stages

    | Asks for | Description | | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Project Name | The name of the folder where the project is stored. It should match with the same name in the users-projects.json file | | Stages | The stages for the environments files to add the credential to. It takes the stages configured in the users-projects.json file as inputs. | | Credential type | Only if project type is not .env. Value Type of the credential that will be added (string, boolean, int, float) | | Credential Key | The Key for your credential. For nested credentials you can separate it using a dot. (ex: the keys for { DB_HOST: { MYSQL: 'local' } should be specified as DB_HOST.MYSQL}) | | Credential Value | The Value for your credential. |

  • This command could be inlined with clei update credential PROJECT STAGE KEY TYPE VALUE

    • STAGE could be multiple stages separated by commas
    • TYPE is only necessary on .json files
    • VALUE should match type (only on .json files)

CRUD Users

clei get user

  • Gets the user details in users-projects.json

    | Asks for | Description | | -------------- | ---------------------------------------------- | | User Email | email from the user. Leave blank for all users |

clei create user

  • Creates a user in the users-projects.json file. Generates a random string with 16 characters as key

    | Asks for | Description | | ------------------------ | --------------------------------------------------------- | | User Email to search | User Email corresponding to the user that we want to edit | | New Name | New User Name | | New Email | New User Email | | Generate new key? | If yes it generates a new key for the user |

clei update user

  • Updates an existing user in the users-projects.json file.

    | Asks for | Description | | --------- | ----------- | | Name | User Name | | Email | User Email |

clei delete user

  • Deletes the user from users-projects.json

    | Asks for | Description | | -------------- | --------------------------------- | | User Email | email from the user to be deleted |

CRUD Projects

clei get project

  • Gets the project details in users-projects.json

    | Asks for | Description | | ---------------- | ------------------------------------------ | | Project Name | Project Name. Leave blank for all projects |

clei create project

  • Creates a project in the users-projects.json file.

    | Asks for | Description | | --------------------------- | ------------------------------------------------------------------------------- | | Project Name | The name of the folder where the project will be stored | | Environment File path | The internal path for the environment files in the project | | Environment File Format | The name format for the environment files. STAGE will be replaced accordingly | | Stages | The stages for the project separated by commas |

clei update project

  • Updates an existing project in the users-projects.json file.

    | Asks for | Description | | ------------------------------- | ----------------------------------------------------------------------------------- | | Project Name | The name of the folder to search to update the project | | New Project Name to search | The new name of the folder where the project will be stored | | New Environment File path | The new internal path for the environment files in the project | | New Environment File Format | The new name format for the environment files. STAGE will be replaced accordingly | | New Stages | The new stages for the project separated by commas |

clei delete project

  • delete the project from users-projects.json

    | Asks for | Description | | ---------------- | ----------------------------------------- | | Project Name | Project Name of the project to be deleted |

Credentials File

clei add file

  • Uploads a local environment file to the S3 bucket.

  • The Project needs to exist in the users-projects.json file and in your computer.

  • This action overwrites the file in the bucket so use it carefully

    | Asks for | Description | | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Project Name | The name of the folder where the project is stored. It should match with the same name in the users-projects.json file | | Stage | The stage for the environment file that will be uploaded. It takes the stages configured in the users-projects.json file as inputs. (If the file is multiple-json then we should check all the stages that we want to make available) | | Environment File Format | The name format for the environment files. STAGE will be replaced accordingly | | Stages | The stages for the project separated by commas |

clei delete file

  • Deletes a file from a project on the S3 bucket.

  • The Project needs to exist in the users-projects.json

    | Asks for | Description | | ---------------- | ------------------------------------------------------------------------------------------------------------------------ | | Project Name | The name of the folder where the project is stored. It should match with the same name in the users-projects.json file | | Files | Select the files that you wish to delete from s3 |

Manage User Access to Projects

clei access

  • Manage a user stages authorization to a project

    | Asks for | Description | | ------------------ | --------------------------------------------------- | | User Email | The user email that will be authorized | | Project Name | The name of the folder where the project is stored. | | Stages granted | The stages to give permissions to the user |

Manage admins

clei auth

  • Manage a user admin permissions

    | Asks for | Description | | -------------- | --------------------------------------- | | User Email | The user email that will be authorized | | Actions | The actions that this admin can perform |