Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add NPM plugin #422

Open
wants to merge 8 commits into
base: main
Choose a base branch
from
Open

Add NPM plugin #422

wants to merge 8 commits into from

Commits on Jan 26, 2024

  1. Initial npm plugin setup

    This is the initial commit to handle integration with NPM, with the
    official registry. After running the boiler plate I updated the relevant
    fields, just enough to do manual testing of the basic use case (npm
    install).
    
    Still left to do:
    - Parse existing .npmrc file
    - Define when auth is needed
    - testing
    
    <!-- ps-id: d44814af-d6d4-4fd8-8dc4-62ed0ac06602 -->
    alondahari committed Jan 26, 2024
    Configuration menu
    Copy the full SHA
    97667cb View commit details
    Browse the repository at this point in the history
  2. Add needsauth specification

    Add a list of commands that don't require authentication. When running
    those commands with the cli, the plugin will not try to fetch the token
    from the vault.
    
    I opted for a negative list of commands over a positive one since the
    latter would end up being much longer, would need to be more complete,
    and would probably need more updates with time, with newer npm versions.
    
    <!-- ps-id: ec70313e-76dd-4aab-811d-196348b499ac -->
    alondahari committed Jan 26, 2024
    Configuration menu
    Copy the full SHA
    bd53b79 View commit details
    Browse the repository at this point in the history
  3. Parse token from existing .npmrc

    Update the access_token specfication to find the relevant .npmrc config
    file and create the 1password secret from it when initializing the
    plugin.
    
    <!-- ps-id: e7ddf1fc-f911-475f-9b2c-5b43edd41471 -->
    alondahari committed Jan 26, 2024
    Configuration menu
    Copy the full SHA
    3970931 View commit details
    Browse the repository at this point in the history
  4. Parse project level cofig file

    The .npmrc can live in the project root, as well as the home directory.
    
    Decided to only support the per-project and per-user config files, since
    the global and the builtin configs should not contain the auth config
    probably.
    
    Reference: https://docs.npmjs.com/cli/v10/configuring-npm/npmrc#global-config-file
    
    <!-- ps-id: 362d7c8f-e1ad-4533-882f-e103b3d75caf -->
    alondahari committed Jan 26, 2024
    Configuration menu
    Copy the full SHA
    df153a5 View commit details
    Browse the repository at this point in the history
  5. Support different registries

    NPM packages can live in different registries, not just the official
    one. This commit adds support for them by setting the env var according
    to the right backend.
    
    To support that, I had to use a temp file and not the env var
    provisioner, since the key name would be different per registry.
    
    I also added support for different scopes along the way.
    
    I decided to separate the credentials instead of having a single line
    ithe 1password vault, to allow users to configure their secrets more
    easily.
    
    <!-- ps-id: 7ec3e696-9c29-4354-bba5-ae4206bc871f -->
    alondahari committed Jan 26, 2024
    Configuration menu
    Copy the full SHA
    994299a View commit details
    Browse the repository at this point in the history
  6. Default registry to npmjs.org

    Let's support best practice by defaulting to the official npm registry
    if the secret doesn't contain a host.
    alondahari committed Jan 26, 2024
    Configuration menu
    Copy the full SHA
    940bcfa View commit details
    Browse the repository at this point in the history
  7. Add test fixtures

    This will be useful when testing the access token
    alondahari committed Jan 26, 2024
    Configuration menu
    Copy the full SHA
    5e037aa View commit details
    Browse the repository at this point in the history
  8. Test access token

    Add some tests around importing and provisioning the credentials.
    alondahari committed Jan 26, 2024
    Configuration menu
    Copy the full SHA
    ff754bb View commit details
    Browse the repository at this point in the history