@optify/config
v1.1.7
Published
Simplifies **configuration driven development**: getting the right configuration options for a process or request using pre-loaded configurations from files (JSON, YAML, etc.) to manage options for feature flags, experiments, or flights.
Readme
Optify Bindings for Node.js
See the homepage for details about how feature files are combined to build the options to process at runtime.
Usage
import { OptionsProvider } from '@optify/config'
const provider = OptionsProvider.build('<configs folder path>')
const options = JSON.parse(provider.getOptionsJson('myConfig', ['feature_A', 'feature_B']))
console.log(JSON.stringify(options, null, 2))Outputs:
{
"myArray": [
"item 1",
"item 2"
],
"myObject": {
"deeper": {
"new": "new value",
"num": 3333
},
"key": "val",
},
"rootString": "root string same"
}Multiple directories can be used as well:
import { OptionsProvider } from '@optify/config'
const provider = OptionsProvider.buildFromDirectories(['<configs folder path>', '<another folder path>'])
const options = JSON.parse(provider.getOptionsJson('myConfig', ['feature_A', 'feature_B']))
console.log(JSON.stringify(options, null, 2))Development
Use Node >= 22.
corepack enable
yarn install
yarn build:debug
yarn build:ts
yarn testTesting
Run:
yarn build:debug
yarn build:ts
yarn testBenchmarking
Run:
rm -rf target config.*.node
yarn build
yarn build:ts
node benchmarks/get_all_options.mjsFormatting
To automatically change the Rust code, run:
cargo fmtPublishing
Use CI.
Some notes:
See https://napi.rs/docs/introduction/getting-started#deep-dive
See https://napi.rs/docs/introduction/simple-package
