# @eta357/config-reader

> An NPM package to read a configuration file in a robust and user-friendly manner.

Latest version **2.2.2** (published 2022-02-10) · GPL-3.0-or-later license · 0 weekly downloads

## Install

```sh
npm install @eta357/config-reader
pnpm add @eta357/config-reader
yarn add @eta357/config-reader
bun add @eta357/config-reader
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.2.2 |
| Published | 2022-02-10 |
| First published | 2021-08-06 |
| Weekly downloads | 0 |
| License | GPL-3.0-or-later |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 43.3 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 1 |
| Author | MRegirouard |
| Maintainers | eta357 |
| Keywords | configuration, file, read, reader, json, config, options |

## Links

- npm: https://www.npmjs.com/package/@eta357/config-reader
- Repository: https://github.com/MRegirouard/Config-Reader
- Homepage: https://github.com/MRegirouard/Config-Reader#readme
- Issues: https://github.com/MRegirouard/Config-Reader/issues
- npm.io page: https://npm.io/package/@eta357/config-reader

## Alternatives

- [@mapbox/jsonlint-lines-primitives](https://npm.io/package/@mapbox/jsonlint-lines-primitives.md) — 5.3M weekly downloads
- [reftools](https://npm.io/package/reftools.md) — 3.5M weekly downloads
- [@hey-api/openapi-ts](https://npm.io/package/@hey-api/openapi-ts.md) — 3.5M weekly downloads
- [@mapbox/geojson-rewind](https://npm.io/package/@mapbox/geojson-rewind.md) — 2.4M weekly downloads
- [turbo-stream](https://npm.io/package/turbo-stream.md) — 1.7M weekly downloads

## Recent versions

- 2.2.2 (latest) — 2022-02-10
- 2.2.1 — 2022-01-28
- 2.2.0 — 2021-12-23
- 2.1.1 — 2021-09-17
- 2.1.0 — 2021-09-17
- 2.0.0 — 2021-09-16
- 1.0.1 — 2021-08-06
- 1.0.0 — 2021-08-06

## README

# Config-Reader
An NPM package to read a configuration file in a robust and user-friendly manner.
<br>
This package allows your to easily store config information in JSON format for your programs. It is intended for use with projects that have "secrets" (e.g. API keys) or options you want the user to configure before running your project.

# Features
 - Can read a JSON file and pull specific data from the file
 - Will ensure that it has read/write access where applicable before attempting to access the file
 - Ability to create a file with default settings if one is not found
 - Ability to add options to a file if the option is not found
 - Checking if certain options are not found or empty
 - Type checking
 - Writing options back to a file
 - Error handling and robustness
 - Asynchronous operation

# Installation
```
npm i @eta357/config-reader
```
# Usage
This package was designed with ease of use in mind as a universal JSON file reader.
First, require the module:
```js
const confReader = require('@eta357/config-reader')
```
## Reading
Then, specify a file path and an object with options to read. In the object, set the option values to what the default should be if you would like to create a new file:
```js
const configFile = './Options.json'
const configOptions = {
  'Environment':'Production',
  'API_Key':'',
  'API_Secret':'',
  'Users':[],
  'Settings':{ 'Theme':'Dark' }
}

const acceptEmpty = false
const createNew = true
const addNotExist = true
var config
```
Read the specified options from the file:
```js
confReader.readOptions(configFile, configOptions, acceptEmpty, createNew, addNotExist).then((options) =>
{
  console.info('Successfully read config information.')
  console.debug('Read options:', options)
  client.login(options['API_Key'])
  config = options
}).catch((error) =>
{
  console.error(error)
  proccess.exit(1)
})
```
This will read the listed options from `Options.json`, failing if a field is empty, and creating a new file with the filled defaults if one does not exist. If one of the specified options is not found in the file, it will be added to the JSON.
## Writing
After modifying your config options, you can write them back to the file just as easily:
```js
confReader.writeOptions(configFile, config, createNew).then((result) =>
{
  console.info('Successfully saved configuration info.')
}).catch((error) =>
{
  console.error(error)
  process.exit(1)
})
```

---
_Source: https://npm.io/package/@eta357/config-reader · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
