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

@quarry-systems/drift-secrets-ssm

v0.1.0-alpha.1

Published

AWS SSM Parameter Store secrets adapter for Drift

Readme

@quarry-systems/mcg-secrets-ssm

Backend Only Node >= 18

AWS Systems Manager Parameter Store secrets adapter for MCG.

Features

  • AWS SSM integration: Read secrets from Parameter Store
  • Automatic decryption: SecureString parameters are decrypted automatically
  • Caching: Optional in-memory cache with TTL
  • Type-safe: Full TypeScript support
  • Peer dependency: AWS SDK is a peer dependency (you control the version)

Installation

npm install @quarry-systems/mcg-secrets-ssm @aws-sdk/client-ssm

Usage

import { SSMClient } from '@aws-sdk/client-ssm';
import { createSSMSecretsAdapter } from '@quarry-systems/mcg-secrets-ssm';

// Create SSM client
const ssmClient = new SSMClient({ region: 'us-east-1' });

// Create adapter
const secrets = createSSMSecretsAdapter({
  client: ssmClient,
  prefix: '/myapp/',           // Optional: prepend to all keys
  cache: true,                 // Optional: enable caching
  cacheTtlMs: 300000          // Optional: cache TTL (5 min)
});

// Read parameter
// Fetches from /myapp/database/password
const dbPassword = await secrets.get({ key: 'database/password' });

Integration with MCG

import { ManagedCyclicGraph } from '@quarry-systems/managed-cyclic-graph';
import { SSMClient } from '@aws-sdk/client-ssm';
import { createSSMSecretsAdapter } from '@quarry-systems/mcg-secrets-ssm';

// Create secrets adapter
const ssmClient = new SSMClient({ region: 'us-east-1' });
const secrets = createSSMSecretsAdapter({
  client: ssmClient,
  prefix: '/myapp/'
});

// Build graph with secrets plugin
const graph = new ManagedCyclicGraph()
  .use({ services: { secrets } })
  .node('fetchData', {
    type: 'action',
    action: async (ctx, services) => {
      // Access secrets via services
      const apiKey = await services.secrets.get({ key: 'api/key' });
      
      const response = await fetch('https://api.example.com/data', {
        headers: { 'Authorization': `Bearer ${apiKey}` }
      });
      
      return { data: await response.json() };
    }
  })
  .build();

// Execute
await graph.run({ input: 'test' });

Configuration

interface SSMSecretsConfig {
  /** AWS SSM client instance */
  client: SSMClient;
  
  /** Optional prefix to prepend to all parameter names */
  prefix?: string;
  
  /** Enable in-memory caching (default: false) */
  cache?: boolean;
  
  /** Cache TTL in milliseconds (default: 300000 = 5 min) */
  cacheTtlMs?: number;
}

AWS Permissions

The IAM role/user needs:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ssm:GetParameter",
        "ssm:GetParameters",
        "ssm:DescribeParameters"
      ],
      "Resource": "arn:aws:ssm:*:*:parameter/myapp/*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt"
      ],
      "Resource": "arn:aws:kms:*:*:key/*"
    }
  ]
}

Testing

Tests use mocked SSM client:

npm test

License

MIT