Research
Security News
Malicious PyPI Package ‘pycord-self’ Targets Discord Developers with Token Theft and Backdoor Exploit
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
resolve-options
Advanced tools
The resolve-options npm package is designed to help developers manage and resolve configuration options for their applications or libraries. It provides a structured way to define defaults, validate types, and handle option resolution logic in a centralized manner.
Defining and resolving options
This feature allows developers to define a schema for options including types and default values, and then resolve them against user-provided values. The example shows how to define a simple configuration and resolve it.
const resolveOptions = require('resolve-options');
const config = {
option: {
type: 'string',
default: 'default value'
}
};
const resolved = resolveOptions(config, { option: 'custom value' });
console.log(resolved.option); // Outputs: 'custom value'
Type validation
This feature ensures that the options provided by the user match the expected type defined in the configuration schema. The example demonstrates type validation where a type mismatch throws an error.
const resolveOptions = require('resolve-options');
const config = {
option: {
type: 'number',
default: 10
}
};
try {
const resolved = resolveOptions(config, { option: 'not a number' });
} catch (error) {
console.error(error); // Outputs: Error indicating the type mismatch
}
Yargs helps in building interactive command line tools, by parsing arguments and generating an elegant user interface. It's more focused on CLI arguments parsing compared to resolve-options which is more generic in handling any kind of options.
The config package is used for managing configuration settings across different deployment environments. Unlike resolve-options, which is about resolving options dynamically, config is more about static configuration management.
Resolve an options object based on configuration.
// This example assumes a Vinyl file
var createResolver = require('resolve-options');
var config = {
cwd: {
type: 'string',
default: process.cwd,
},
sourcemaps: {
type: 'boolean',
default: false,
},
since: {
type: ['date', 'number'],
},
read: {
type: 'boolean',
},
};
var options = {
sourcemaps: true,
since: Date.now(),
read: function (file) {
return file.extname !== '.mp4';
},
};
var resolver = createResolver(config, options);
var cwd = resolver.resolve('cwd', file);
// cwd === process.cwd()
var sourcemaps = resolver.resolve('sourcemaps', file);
// sourcemaps === true
var read = resolver.resolve('read', file);
// Given .mp4, read === false
// Given .txt, read === true
createResolver([config,] [options])
Takes a config
object that describes the options to accept/resolve and an options
object (usually passed by a user) to resolve against the config
. Returns a resolver
that contains a resolve
method for realtime resolution of options.
The config
object takes the following structure:
config {
[optionKey] {
type // string, array or function
default // any value or function
}
}
Each option is represented by its optionKey
in the config
object. It must be an object with a type
property.
The type
property must be a string, array or function which will be passed to the value-or-function
module (functions will be bound to the resolver to allow for dependent options).
A default
property may also be specified as a fallback if the option isn't available or is invalid. The default
value can be any value or a function (functions will be bound to the resolver to allow for dependent defaults). Note: default
values are not type-validated by the value-or-function
module.
resolver.resolve(optionKey, [...arguments])
Takes an optionKey
string and any number of arguments
to apply if an option is a function. Returns the resolved value for the optionKey
.
resolver.resolveConstant(optionKey)
Like resolve
, but only returns a value if the option is constant (not a function).
MIT
FAQs
Resolve an options object based on configuration.
The npm package resolve-options receives a total of 1,382,497 weekly downloads. As such, resolve-options popularity was classified as popular.
We found that resolve-options demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 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.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.
Security News
Snyk's use of malicious npm packages for research raises ethical concerns, highlighting risks in public deployment, data exfiltration, and unauthorized testing.