An open API service indexing awesome lists of open source software.

https://github.com/igorskyflyer/npm-zitto

🀫 Zitto - quiet config, loud clarity. A zero-dependency TypeScript/JavaScript helper for merging defaults and options across Node, Deno, Bun, and browsers. 🍯
https://github.com/igorskyflyer/npm-zitto

back-end config default igor-dimitrijevic igorskyflyer interface javascript js options quiet silent ts typescript zitto

Last synced: 24 days ago
JSON representation

🀫 Zitto - quiet config, loud clarity. A zero-dependency TypeScript/JavaScript helper for merging defaults and options across Node, Deno, Bun, and browsers. 🍯

Awesome Lists containing this project

README

          


Icon of Zitto

Zitto



Zero-Dependency Utility β€’ Runtime-Safe Options β€’ Predictable Defaults β€’ Strict Config Control


🀫 Zitto - quiet config, loud clarity. A zero-dependency TypeScript/JavaScript helper for merging defaults and options across Node, Deno, Bun, and browsers. 🍯


## πŸ“ƒ Table of Contents

- [**Features**](#-features)
- [**Usage**](#-usage)
- [**API**](#-api)
- [**Examples**](#️-examples)
- [**Changelog**](#-changelog)
- [**Support**](#-support)
- [**License**](#-license)
- [**Related**](#-related)
- [**Author**](#-author)


## πŸ€– Features

- ⚑ Always returns defaults when no opts passed
- πŸ›  Merges known keys with defaults
- 🚫 Throws on unknown keys at runtime
- 🧩 Enforces object shape with TS and runtime
- πŸ”’ Strict variant drops extras automatically
- πŸͺΆ Tiny zero-dep footprint
- πŸ“¦ Predictable results across runtimes


## πŸ•΅πŸΌ Usage

Install it by executing any of the following, depending on your preferred package manager:

```bash
pnpm add @igorskyflyer/zitto
```

```bash
yarn add @igorskyflyer/zitto
```

```bash
npm i @igorskyflyer/zitto
```


## 🀹🏼 API

### defineOptions

```ts
function defineOptions(
defaults: T,
options?: Partial
): T
```

Merge defaults with optional user options.

`T` - Shape of the `defaults` object

`defaults` - Base configuration with required keys

`options` - Optional overrides, must be a subset of defaults


Returns a new object with defaults and overrides merged.


### defineStrictOptions

```ts
function defineStrictOptions>(
defaults: T,
options?: U
): T
```

Merge defaults with optional user options, dropping unknown keys.

`T` - Shape of the defaults object

`U` - Subset of `T` allowed as overrides

`defaults` - Base configuration with required keys

`options` - Optional overrides, must be a subset of defaults


Throws a `TypeError` if `options` is not an object

Throws an `Error` if `options` contains unknown keys

Returns a new object with defaults and known overrides merged.


## πŸ—’οΈ Examples

```ts
import { defineOptions, defineStrictOptions } from '@igorskyflyer/zitto'

const opts = defineOptions({ retries: 3, verbose: false }, { verbose: true })
// => { retries: 3, verbose: true }

const opts = defineStrictOptions({ retries: 3, verbose: false }, { retries: 5, extra: 'x' })
// => { retries: 5, verbose: false } // 'extra' is dropped
```


## πŸ“ Changelog

πŸ“‘ Read about the latest changes in the [**CHANGELOG**](https://github.com/igorskyflyer/npm-zitto/blob/main/CHANGELOG.md).


## πŸͺͺ License

Licensed under the [**MIT license**](https://github.com/igorskyflyer/npm-zitto/blob/main/LICENSE).


## πŸ’– Support


I work hard for every project, including this one and your support means a lot to me!


Consider buying me a coffee. β˜•




Donate to igorskyflyer




Thank you for supporting my efforts! πŸ™πŸ˜Š


## 🧬 Related

[**@igorskyflyer/strip-html**](https://www.npmjs.com/package/@igorskyflyer/strip-html)

> _πŸ₯ž Removes HTML code from the given string. Can even extract text-only from the given an HTML string. ✨_


[**@igorskyflyer/is-rootdir**](https://www.npmjs.com/package/@igorskyflyer/is-rootdir)

> _πŸ”Ό Checks whether the given path is the root of a drive or filesystem. β›”_


[**@igorskyflyer/unc-path**](https://www.npmjs.com/package/@igorskyflyer/unc-path)

> _πŸ₯½ Provides ways of parsing UNC paths and checking whether they are valid. 🎱_


[**@igorskyflyer/regkeys**](https://www.npmjs.com/package/@igorskyflyer/regkeys)

> _πŸ“š A package for fetching Windows registry keys. πŸ—_


[**@igorskyflyer/rawelement**](https://www.npmjs.com/package/@igorskyflyer/rawelement)

> _🐯 A utility that lets you manipulate HTML elements, their attributes and innerHTML as strings, on the go and then render the modified HTML. Very useful in SSG projects. πŸ’€_


## πŸ‘¨πŸ»β€πŸ’» Author
Created by **Igor Dimitrijević ([*@igorskyflyer*](https://github.com/igorskyflyer/))**.