Files
Loki/frontend/node_modules/zwitch/readme.md
T
MichaelandClaude Opus 5 b405adea6c Jauge de contexte, espace disque sur partage agrégé, panneau Fichiers
Trois défauts sans rapport entre eux, tous visibles à l'écran.

Jauge de contexte bloquée à « 0 / N (0 %) » : le comptage exact vient de
usage.prompt_tokens (include_usage), qu'un llama-server récent a cessé de
renvoyer. On note désormais si l'usage est arrivé ; sinon la fin de tour
publie l'estimation qui pilote déjà la compaction — approximative, mais
jamais absente. Et la souscription envoie la valeur courante juste après
le rattrapage : une page rechargée affichait zéro sur une discussion
pourtant pleine, faute d'événement ctx_used dans la fenêtre rejouée.

Espace disque : « il ne reste que 11,9 Go » sur un partage Unraid qui en
a des centaines. /mnt/user est servi par shfs, un FUSE qui agrège
plusieurs disques — statfs y renvoie l'espace d'un seul, et ce chiffre
REFUSAIT l'installation du modèle. Les systèmes de fichiers qui
approximent (FUSE, overlay, NFS, CIFS, Ceph, Gluster) sont reconnus par
leur magie : leur chiffre reste affiché, précédé d'un « ~ », mais ne
bloque plus rien.

Panneau Fichiers : le panneau entier défilait, emportant vers le haut
l'en-tête, le fil d'Ariane et le pied (occupation disque, bouton .zip)
dès qu'il y avait quelques fichiers. Seule la liste défile maintenant ;
le pied reste en bas et l'état vide se centre.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 08:28:53 +02:00

227 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# zwitch
[![Build][build-badge]][build]
[![Coverage][coverage-badge]][coverage]
[![Downloads][downloads-badge]][downloads]
[![Size][size-badge]][size]
Handle values based on a field.
## Contents
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`zwitch(key[, options])`](#zwitchkey-options)
* [`one(value[, rest…])`](#onevalue-rest)
* [`function handler(value[, rest…])`](#function-handlervalue-rest)
* [Types](#types)
* [Compatibility](#compatibility)
* [Related](#related)
* [Contribute](#contribute)
* [Security](#security)
* [License](#license)
## What is this?
This is a tiny package that lets you `switch` between some field on objects.
## When should I use this?
This package is very useful when mapping one AST to another.
It’s a lot like a `switch` statement on one field, but it’s extensible.
## Install
This package is [ESM only][esm].
In Node.js (version 14.14+, 16.0+), install with [npm][]:
```sh
npm install zwitch
```
In Deno with [`esm.sh`][esmsh]:
```js
import {zwitch} from 'https://esm.sh/zwitch@2'
```
In browsers with [`esm.sh`][esmsh]:
```html
<script type="module">
import {zwitch} from 'https://esm.sh/zwitch@2?bundle'
</script>
```
## Use
```js
import {zwitch} from 'zwitch'
const handle = zwitch('type', {invalid, unknown, handlers: {alpha: handleAlpha}})
handle({type: 'alpha'})
function handleAlpha() { /* … */ }
```
Or, with a `switch` statement:
```js
const field = 'type'
function handle(value) {
let fn = invalid
if (value && typeof value === 'object' && field in value) {
switch (value[field]) {
case 'alpha':
fn = handleAlpha
break
default:
fn = unknown
break
}
}
return fn.apply(this, arguments)
}
handle({type: 'alpha'})
function handleAlpha() { /* … */ }
function unknown() { /* … */ }
function invalid() { /* … */ }
```
## API
This package exports the identifier `zwitch`.
There is no default export.
### `zwitch(key[, options])`
Create a switch, based on a `key` (`string`).
##### `options`
Options can be omitted and added later to `one`.
###### `options.handlers`
Handlers to use, stored on `one.handlers` (`Record<string, Function>`,
optional).
###### `options.unknown`
Handler to use for unknown values, stored on `one.unknown` (`Function`,
optional).
###### `options.invalid`
Handler to use for invalid values, stored on `one.invalid` (`Function`,
optional).
###### Returns
See [`one`][one] (`Function`).
### `one(value[, rest…])`
Handle one value.
Based on the bound `key`, a respective handler will be called.
If `value` is not an object, or doesn’t have a `key` property, the special
“invalid” handler will be called.
If `value` has an unknown `key`, the special “unknown” handler will be called.
All arguments, and the context object (`this`), are passed through to the
[handler][], and it’s result is returned.
###### `one.handlers`
Map of [handler][]s (`Record<string, Function>`).
###### `one.invalid`
Special [`handler`][handler] called if a value doesn’t have a `key` property.
If not set, `undefined` is returned for invalid values.
###### `one.unknown`
Special [`handler`][handler] called if a value does not have a matching
handler.
If not set, `undefined` is returned for unknown values.
### `function handler(value[, rest…])`
Handle one value.
## Types
This package is fully typed with [TypeScript][].
It exports the types `Handler`, `UnknownHandler`, `InvalidHandler`, and
`Options`.
## Compatibility
This package is at least compatible with all maintained versions of Node.js.
As of now, that is Node.js 14.14+ and 16.0+.
It also works in Deno and modern browsers.
## Related
* [`mapz`](https://github.com/wooorm/mapz)
— functional map
## Contribute
Yes please!
See [How to Contribute to Open Source][contribute].
## Security
This package is safe.
## License
[MIT][license] © [Titus Wormer][author]
<!-- Definitions -->
[build-badge]: https://github.com/wooorm/zwitch/workflows/main/badge.svg
[build]: https://github.com/wooorm/zwitch/actions
[coverage-badge]: https://img.shields.io/codecov/c/github/wooorm/zwitch.svg
[coverage]: https://codecov.io/github/wooorm/zwitch
[downloads-badge]: https://img.shields.io/npm/dm/zwitch.svg
[downloads]: https://www.npmjs.com/package/zwitch
[size-badge]: https://img.shields.io/bundlephobia/minzip/zwitch.svg
[size]: https://bundlephobia.com/result?p=zwitch
[npm]: https://docs.npmjs.com/cli/install
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[esmsh]: https://esm.sh
[typescript]: https://www.typescriptlang.org
[contribute]: https://opensource.guide/how-to-contribute/
[license]: license
[author]: https://wooorm.com
[one]: #onevalue-rest
[handler]: #function-handlervalue-rest