# fluent-flags

> Decorates a function with arbitrary fluent boolean flags and passes them as the first parameter.

Latest version **3.1.1** (published 2022-04-30) · MIT license · 0 weekly downloads

## Install

```sh
npm install fluent-flags
pnpm add fluent-flags
yarn add fluent-flags
bun add fluent-flags
```

## Health

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

Positive: has types; esm support; no vulnerabilities; high quality score.

Warnings: low downloads.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 3.1.1 |
| Published | 2022-04-30 |
| First published | 2022-03-14 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 0 |
| Unpacked size | 19.4 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 1 |
| Author | stagas |
| Maintainers | stagas |

## Links

- npm: https://www.npmjs.com/package/fluent-flags
- Repository: https://git@github.com/stagas/fluent-flags
- Homepage: https://github.com/stagas/fluent-flags#readme
- Issues: https://github.com/stagas/fluent-flags/issues
- npm.io page: https://npm.io/package/fluent-flags

## Recent versions

- 3.1.1 (latest) — 2022-04-30
- 3.1.0 — 2022-04-30
- 3.0.1 — 2022-04-30
- 3.0.0 — 2022-04-30
- 2.0.1 — 2022-04-16
- 2.0.0 — 2022-04-09
- 1.0.0 — 2022-03-14

## README

<h1>
fluent-flags <a href="https://npmjs.org/package/fluent-flags"><img src="https://img.shields.io/badge/npm-v3.1.1-F00.svg?colorA=000"/></a> <a href="src"><img src="https://img.shields.io/badge/loc-30-FFF.svg?colorA=000"/></a> <a href="https://cdn.jsdelivr.net/npm/fluent-flags@3.1.1/dist/fluent-flags.min.js"><img src="https://img.shields.io/badge/brotli-151b-333.svg?colorA=000"/></a> <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-F0B.svg?colorA=000"/></a>
</h1>

<p></p>

Decorates a function with arbitrary fluent boolean flags and passes them as the first parameter.

<h4>
<table><tr><td title="Triple click to select and copy paste">
<code>npm i fluent-flags </code>
</td><td title="Triple click to select and copy paste">
<code>pnpm add fluent-flags </code>
</td><td title="Triple click to select and copy paste">
<code>yarn add fluent-flags</code>
</td></tr></table>
</h4>

## API

<p>  <details id="Flags$11" title="TypeAlias" ><summary><span><a href="#Flags$11">#</a></span>  <code><strong>Flags</strong></code>    </summary>  <a href="src/index.ts#L6">src/index.ts#L6</a>  <ul><p>[K   in   <a href="#T$12">T</a> extends <span>ReadonlyArray</span>&lt;inferred&gt; ? <span>U</span> : never  ]:  boolean</p>        </ul></details><details id="Fluent$8" title="TypeAlias" ><summary><span><a href="#Fluent$8">#</a></span>  <code><strong>Fluent</strong></code>    </summary>  <a href="src/index.ts#L3">src/index.ts#L3</a>  <ul><p><a href="#C$9">C</a> &amp; [K   in   keyof     <a href="#T$10">T</a>  ]:  <a href="#Fluent$8">Fluent</a>&lt;<a href="#C$9">C</a>, <a href="#T$10">T</a>&gt;</p>        </ul></details><details id="Fn$2" title="TypeAlias" ><summary><span><a href="#Fn$2">#</a></span>  <code><strong>Fn</strong></code>    </summary>  <a href="src/index.ts#L2">src/index.ts#L2</a>  <ul><p><details id="__type$3" title="Function" ><summary><span><a href="#__type$3">#</a></span>  <em>(args)</em>    </summary>    <ul>    <p>    <details id="args$5" title="Parameter" ><summary><span><a href="#args$5">#</a></span>  <code><strong>args</strong></code>    </summary>    <ul><p><a href="#T$6">T</a></p>        </ul></details>  <p><strong></strong><em>(args)</em>  &nbsp;=&gt;  <ul><a href="#R$7">R</a></ul></p></p>    </ul></details></p>        </ul></details><details id="Key$1" title="TypeAlias" ><summary><span><a href="#Key$1">#</a></span>  <code><strong>Key</strong></code>    </summary>  <a href="src/index.ts#L1">src/index.ts#L1</a>  <ul><p>string</p>        </ul></details><details id="NarrowHelper$13" title="TypeAlias" ><summary><span><a href="#NarrowHelper$13">#</a></span>  <code><strong>NarrowHelper</strong></code>    </summary>  <a href="src/index.ts#L11">src/index.ts#L11</a>  <ul><p><a href="#T$17">T</a> extends readonly     tuple ? readonly     tuple : never | <a href="#T$17">T</a> extends string | number | bigint | boolean ? <a href="#T$17">T</a> : never | [K   in   keyof     <a href="#T$17">T</a>  ]:  <a href="#T$17">T</a>  [<span>K</span>] extends <details id="__type$14" title="Function" ><summary><span><a href="#__type$14">#</a></span>  <em>(args)</em>    </summary>    <ul>    <p>    <details id="args$16" title="Parameter" ><summary><span><a href="#args$16">#</a></span>  <code><strong>args</strong></code>    </summary>    <ul><p>any  []</p>        </ul></details>  <p><strong></strong><em>(args)</em>  &nbsp;=&gt;  <ul>unknown</ul></p></p>    </ul></details> ? <a href="#T$17">T</a>  [<span>K</span>] : <a href="#NarrowHelper$13">NarrowHelper</a>&lt;<a href="#T$17">T</a>  [<span>K</span>]&gt;</p>        </ul></details><details id="FluentFlags$18" title="Function" ><summary><span><a href="#FluentFlags$18">#</a></span>  <code><strong>FluentFlags</strong></code><em>(_flagKeys, cb, flags)</em>     &ndash; Decorates a function with fluent flags that are then passed as an object.</summary>  <a href="src/index.ts#L27">src/index.ts#L27</a>  <ul>    <p>  <p>

```ts
const cb = FluentFlags(
  ['foo', 'bar'],
  flags => (arg: string) => [flags.foo, flags.bar, arg]
)
expect(cb()).toMatchObject([void 0, void 0, void 0])
expect(cb('hello')).toMatchObject([void 0, void 0, 'hello'])
expect(cb.bar('hello')).toMatchObject([void 0, true, 'hello'])
expect(cb.foo.bar('hello')).toMatchObject([true, true, 'hello'])
```

</p>
  <details id="_flagKeys$23" title="Parameter" ><summary><span><a href="#_flagKeys$23">#</a></span>  <code><strong>_flagKeys</strong></code>    </summary>    <ul><p><a href="#NarrowHelper$13">NarrowHelper</a>&lt;<a href="#K$20">K</a>&gt;</p>        </ul></details><details id="cb$24" title="Function" ><summary><span><a href="#cb$24">#</a></span>  <code><strong>cb</strong></code><em>(flags)</em>    </summary>    <ul>    <p>    <details id="flags$27" title="Parameter" ><summary><span><a href="#flags$27">#</a></span>  <code><strong>flags</strong></code>    </summary>    <ul><p><a href="#T$22">T</a></p>        </ul></details>  <p><strong>cb</strong><em>(flags)</em>  &nbsp;=&gt;  <ul><a href="#C$21">C</a></ul></p></p>    </ul></details><details id="flags$28" title="Parameter" ><summary><span><a href="#flags$28">#</a></span>  <code><strong>flags</strong></code>  <span><span>&nbsp;=&nbsp;</span>  <code>{}</code></span>  </summary>    <ul><p>any</p>        </ul></details>  <p><strong>FluentFlags</strong>&lt;<span>K</span>, <span>C</span><span>&nbsp;extends&nbsp;</span>     <a href="#Fn$2">Fn</a>&lt;any, any&gt;, <span>T</span>&gt;<em>(_flagKeys, cb, flags)</em>  &nbsp;=&gt;  <ul><a href="#Fluent$8">Fluent</a>&lt;<a href="#C$21">C</a>, <span>Required</span>&lt;<a href="#T$22">T</a>&gt;&gt;</ul></p></p>    </ul></details></p>

## Contributing

[Fork](https://github.com/stagas/fluent-flags/fork) or [edit](https://github.dev/stagas/fluent-flags) and submit a PR.

All contributions are welcome!

## License

<a href="LICENSE">MIT</a> &copy; 2022 [stagas](https://github.com/stagas)

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