UNPKG

mauss

Version:

lightweight, modular, type-safe utilities

58 lines (36 loc) 2.83 kB
# mauss > a lightweight and modular utility library for writing declarative, type-safe code A focused set of modular, type-safe functions for writing compact declarative code. ## Installation ```bash pnpm install mauss ``` ### Why? The best of both worlds 1. The conciseness of the functional paradigm[less is more](https://spectrum.ieee.org/functional-programming) 2. The predictability of pure function and consistent behavior 3. The readability of declarative immutability and clear data flow 4. The performance of imperative JavaScript when it counts > Write concise, declarative code with no side effects — without sacrificing performance or maintainability Natively, JavaScript includes functional patterns through built-in array methods like `.map`, `.filter`, and `.reduce`, which makes it easy to compose logic through chaining. However, JavaScript is considered as a [multi-paradigm](https://en.wikipedia.org/wiki/JavaScript) [scripting language](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/What_is_JavaScript) — not a purely functional one like [Haskell](https://www.haskell.org/). It is _not_ optimized for the functional paradigm, especially heavy functional chaining. As the codebase grows in size and complexity, performance and maintainability often suffer. With `mauss`, you can write shorter, simpler, more declarative code without the overhead of deep chaining or over-abstractions. It encourages clarity and composition while staying close to JavaScript's performance model. Of course, no utility library replaces good design. `mauss` doesn't prevent bad practices — but it nudges you toward better ones. ## Usage `mauss` is modular, tree-shakeable, and comes with no dependencies — its footprint is minimal, basically free. It also includes some convenience exports to streamline your workflow, such as: <!-- use `size-limit` to show the minimal footprint --> ### `/prettier.config.js` An opinionated Prettier config for consistent code style with zero setup. Just point to it in your `package.json`: ```json { "prettier": "mauss/prettier.config.js", } ``` This config includes: - Ignore rules for `pnpm-lock.yaml` and generated directories like `.svelte-kit/` - Support for `*.svelte` files via [`prettier-plugin-svelte`](https://github.com/sveltejs/prettier-plugin-svelte) (install separately) - Optional sorting for `package.json` via [`prettier-plugin-sort-package-json`](https://github.com/ignatiusmb/prettier-plugin-sort-package-json) (install separately) ### `/tsconfig.json` A minimal base `tsconfig` with strict type-checking and sensible defaults for consistent project environments. Designed to reduce boilerplate and encourage best practices. Just extend it in your `tsconfig.json`: ```json { "extends": "mauss/tsconfig.json" }