<commit_before># ...

## start

```
yarn start
```<commit_msg>readme updated<commit_after># bitbox

```js
// create observable app box
const app = bitbox(observable)
// some helpers
const inc = count => count + 1 // increment operator
const set = (box, value) => obj => bitbox.set(obj, box, value) // setter factory
// target object
const obj = {
	name: 'bitbox',
	count: 0
}
// mapping
const map = bitbox({
	count: app.count,
	name: app.name(name => name.toUpperCase())
})
// connect with target
const props = map(obj)
// observe changes to mapped props
observe(() => console.log(`${props.name} - count(${props.count})`))

// set / classic
app(obj).count++
// use operator
app.count(inc, obj)
// action factory, if no target argument
app.count(inc) // -> (obj)

// using handler / set(target, box/path, value)
bitbox.set(obj, app.count, 10)
bitbox.set(obj, app.count, app.count(inc))
// raw path
bitbox.set(obj, ['app', 'count'], ['app', 'count', inc])

// factory
set(app.name, `Demo App`) // -> (obj)
// conditional
set(app.name, app.count(n => n > 10 ? `Foo` : `Bar`))

// select...
app(JSON.stringify, console.log, obj)

```

```
yarn start
```
{'fraction_non_alphanumeric': 0.2010443864229765, 'fraction_numerical': 0.005221932114882507, 'mean_word_length': 3.6558704453441297, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 12, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1475452', 'n_tokens_mistral': 420, 'n_tokens_neox': 403, 'n_words': 117}