
Security News
Rust RFC Proposes a Security Tab on crates.io for RustSec Advisories
Rustâs crates.io team is advancing an RFC to add a Security tab that surfaces RustSec vulnerability and unsoundness advisories directly on crate pages.
config-dug
Advanced tools

Config loader with support for AWS Secrets Manager.
| yarn | npm |
|---|---|
yarn add config-dug | npm install config-dug |
config-dug looks in several places for your config, including config files in your project, environment variables and AWS Secrets Manager. config-dug allows you to write your config files in either TypeScript or JavaScript. You are expected to export a default object from your config file:
// config.default.ts
export default {
API_ENDPOINT: 'https://api.example.com/',
};
// config.default.js
module.exports = {
API_ENDPOINT: 'https://api.example.com/',
};
Environment specific config files are loaded based on the value of the APP_ENV or NODE_ENV environment variables. If APP_ENV is present it will take precedence over NODE_ENV.
Settings from these different sources are merged together into a single config object in the following order:
config.default.{ts|js}config.${APP_ENV|NODE_ENV}.{ts|js}config.${APP_ENV|NODE_ENV}.local.{ts|js}config.local.{ts|js}By default your config files need to be placed in the root directory of your project. If you want to keep config files in a different directory see Customizing Config Loading.
Import config-dug anywhere in your code where you want to access your config. All of your settings are available on the imported object:
// app.ts
import config from 'config-dug';
console.log(config.API_ENDPOINT);
// app.js
const config = require('config-dug').default;
console.log(config.API_ENDPOINT);
// https://api.example.com/
:warning: You must use
require('config-dug').defaultin JavaScript files. If you exclude.defaultConfig Dug will not work.
config-dug will add all your environment variables to the config object. This can have unintended consequences if one of your config keys has the same name as an existing, unrelated environment variable.
:warning:
config-dugis only intended to be used on the server. Your server already has access to your full environment inprocess.env. If you useconfig-dugin server rendered client applications you risk exposing your server's environment to the client.
In order to use AWS Secrets Manager you have to add a AWS_SECRETS_MANAGER_NAME or awsSecretsManagerName setting to your config that specifies the names of the secrets to look up:
// config.default.ts
export default {
AWS_SECRETS_MANAGER_NAME: 'production/myapp/config',
API_ENDPOINT: 'https://api.example.com/',
};
If you need to read from multiple secret buckets, AWS_SECRETS_MANAGER_NAMES takes a comma separated list to allow connection to multiple secrets in AWS Secrets Manager. Each secret from the list is evaluated in order mean that if a specific key appears in two secrets the value will be overwritten by the last secret in the list.
// config.default.ts
export default {
AWS_SECRETS_MANAGER_NAMES: 'production/myapp/config,production/myapp/another-config',
API_ENDPOINT: 'https://api.example.com/',
};
In addition to specifying the secret name you can also provide a region using the AWS_SECRETS_MANAGER_REGION or awsSecretsManagerRegion setting. The connection timeout in milliseconds can also be specified using the AWS_SECRETS_MANAGER_TIMEOUT or awsSecretsManagerTimeout setting:
// config.default.ts
export default {
AWS_SECRETS_MANAGER_NAME: 'production/myapp/config',
AWS_SECRETS_MANAGER_REGION: 'us-west-2',
AWS_SECRETS_MANAGER_TIMEOUT: 2000
API_ENDPOINT: 'https://api.example.com'
};
The default region is us-east-1 and the default connection timeout is 5000ms.
Config Dug will warn if it detects invalid config values. Invalid values include:
This package uses the aws-sdk internally. Refer to their documentation for information about authentication, configuring a default region and configuring access control for AWS Secrets Manager.
If you want to load config files from a directory other than the project root you can import the loadConfig function and use it directly.
import { loadConfig } from 'config-dug';
loadConfig('config');
This will import your config files from the config directory. The path you specify must be relative to your project root.
config-dug uses the debug library. To print debug messages for config-dug set DEBUG=config-dug.
npm install OR npm inpm run testpackage.jsonCHANGELOG entrynpm pack to see what will be published then delete the .tgz file that was creatednpm publish1.0.0 the tag and release name would be v1.0.0.FAQs
Config loader with support for AWS Secrets Manager
We found that config-dug demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 18 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Rustâs crates.io team is advancing an RFC to add a Security tab that surfaces RustSec vulnerability and unsoundness advisories directly on crate pages.

Security News
/Research
Socket found a Rust typosquat (finch-rust) that loads sha-rust to steal credentials, using impersonation and an unpinned dependency to auto-deliver updates.

Research
/Security Fundamentals
A pair of typosquatted Go packages posing as Googleâs UUID library quietly turn helper functions into encrypted exfiltration channels to a paste site, putting developer and CI data at risk.