Socket
Socket
Sign inDemoInstall

rc9

Package Overview
Dependencies
2
Maintainers
1
Versions
20
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    rc9

Read/Write config couldn't be easier!


Version published
Weekly downloads
831K
increased by1.07%
Maintainers
1
Install size
53.8 kB
Created
Weekly downloads
 

Changelog

Source

v2.1.2

compare changes

🩹 Fixes

  • Stringify strings to avoid being cast to numbers (#123)
  • parse: Handle empty values (#86)

🏡 Chore

  • Update repo (86d3590)
  • Update readme (#113)
  • Try tea.yaml (701f71a)
  • Upgrade flat to v6 and inline (38cebbb)
  • Update badges (14618f0)
  • Update readme (4766224)
  • Update lockfile (fcb4059)
  • Lint (07df4c9)

❤️ Contributors

Readme

Source

RC9

npm version npm downloads bundle size codecov

Read/Write RC configs couldn't be easier!

Install

Install dependencies:

# ✨ Auto-detect
npx nypm install rc9

# npm
npm install rc9

# yarn
yarn add rc9

# pnpm
pnpm install rc9

# bun
bun install rc9

Import utils:

ESM (Node.js, Bun)

import {
  defaults,
  parse,
  parseFile,
  read,
  readUser,
  serialize,
  write,
  writeUser,
  update,
  updateUser,
} from "rc9";

CommonJS (Legacy Node.js)

const {
  defaults,
  parse,
  parseFile,
  read,
  readUser,
  serialize,
  write,
  writeUser,
  update,
  updateUser,
} = require("rc9");

Usage

.conf:

db.username=username
db.password=multi word password
db.enabled=true

Update config:

update({ 'db.enabled': false }) // or update(..., { name: '.conf' })

Push to an array:

update({ 'modules[]': 'test' })

Read/Write config:

const config = read() // or read('.conf')

// config = {
//   db: {
//     username: 'username',
//     password: 'multi word password',
//     enabled: true
//   }
// }

config.enabled = false
write(config) // or write(config, '.conf')

User Config:

It is common to keep config in user home directory (MacOS: /Users/{name}, Linux: /home/{name}, Windows: C:\users\{name})

you can use readUser/writeuser/updateUser shortcuts to quickly do this:

writeUser({ token: 123 }, '.zoorc') // Will be saved in {home}/.zoorc

const conf = readUser('.zoorc') // { token: 123 }

Unflatten

RC uses flat to automatically flat/unflat when writing and reading rcfile.

It means that you can use . for keys to define objects. Some examples:

  • hello.world = true <=> { hello: { world: true }
  • test.0 = A <=> tags: [ 'A' ]

Note: If you use keys that can override like x= and x.y=, you can disable this feature by passing flat: true option.

Tip: You can use keys ending with [] to push to an array like test[]=A

Native Values

RC uses destr to convert values into native javascript values.

So reading count=123 results { count: 123 } (instead of { count: "123" }) if you want to preserve strings as is, can use count="123".

Exports

const defaults: RCOptions;
function parse(contents: string, options?: RCOptions): RC
function parseFile(path: string, options?: RCOptions): RC
function read(options?: RCOptions | string): RC;
function readUser(options?: RCOptions | string): RC;
function serialize(config: RC): string;
function write(config: RC, options?: RCOptions | string): void;
function writeUser(config: RC, options?: RCOptions | string): void;
function update(config: RC, options?: RCOptions | string): RC;
function updateUser(config: RC, options?: RCOptions | string): RC;

Types:

type RC = Record<string, any>;
interface RCOptions {
    name?: string;
    dir?: string;
    flat?: boolean;
}

Defaults:

{
  name: '.conf',
  dir: process.cwd(),
  flat: false
}

Why RC9?

Be the first one to guess 🐇

License

Published under the MIT license. Made by community 💛

FAQs

Last updated on 09 Apr 2024

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc