Skip to content

igorskyflyer/npm-zitto

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

20 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

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

  • ⚑ 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:

pnpm add @igorskyflyer/zitto
yarn add @igorskyflyer/zitto
npm i @igorskyflyer/zitto

🀹🏼 API

defineOptions

function defineOptions<T extends object>(
  defaults: T,
  options?: Partial<T>
): 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

function defineStrictOptions<T extends object, U extends Partial<T>>(
  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

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.


πŸͺͺ License

Licensed under the MIT 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

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


@igorskyflyer/is-rootdir

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


@igorskyflyer/unc-path

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


@igorskyflyer/regkeys

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


@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).

About

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

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Sponsor this project

Contributors