# xcase

> Blazingly fast recursive convertion to and from camelCase or PascalCase for Objects and Arrays

Latest version **2.0.1** (published 2017-02-08) · MIT license · 0 weekly downloads

## Install

```sh
npm install xcase
pnpm add xcase
yarn add xcase
bun add xcase
```

## Health

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

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.0.1 |
| Published | 2017-02-08 |
| First published | 2016-09-14 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 21 |
| Author | Damian Kaczmarek |
| Maintainers | rush |
| Keywords | recursive, convertion, camelcase, keys, object, decamelize, camelize |

## Links

- npm: https://www.npmjs.com/package/xcase
- Repository: https://github.com/encharm/xcase
- Homepage: https://github.com/encharm/xcase#readme
- Issues: https://github.com/encharm/xcase/issues
- npm.io page: https://npm.io/package/xcase

## Alternatives

- [@mce/gif](https://npm.io/package/@mce/gif.md) — 2.6K weekly downloads
- [cleanse](https://npm.io/package/cleanse.md) — 173 weekly downloads
- [str](https://npm.io/package/str.md) — 127 weekly downloads
- [naming](https://npm.io/package/naming.md) — 95 weekly downloads
- [tap-telco-api](https://npm.io/package/tap-telco-api.md) — 19 weekly downloads

## Recent versions

- 2.0.1 (latest) — 2017-02-08
- 2.0.0 — 2017-01-13
- 1.0.8 — 2016-12-23
- 1.0.7 — 2016-12-23
- 1.0.6 — 2016-09-21
- 1.0.5 — 2016-09-16
- 1.0.4 — 2016-09-15
- 1.0.3 — 2016-09-15
- 1.0.2 — 2016-09-15
- 1.0.1 — 2016-09-14
- 1.0.0 — 2016-09-14

## README

# xcase
Blazingly fast recursive conversion to and from camelCase or PascalCase for objects and arrays and strings.

It supports both Node.js and Browser.

xcase passes most of https://github.com/domchristie/humps tests, excluding only those with custom regexps and handler functions. So if you use `humps` and need something much faster than this is the right place.

```
> node benchmark.js
xcase#camelize x 7,521,530 ops/sec ±0.18% (96 runs sampled)
humps#camelize x 870,637 ops/sec ±0.67% (95 runs sampled)
lodash#camelCase x 784,445 ops/sec ±1.18% (92 runs sampled)
Fastest is xcase#camelize
xcase#decamelize x 6,517,893 ops/sec ±0.43% (94 runs sampled)
humps#decamelize x 1,576,663 ops/sec ±0.65% (95 runs sampled)
lodash#snakeCase x 659,930 ops/sec ±1.50% (95 runs sampled)
Fastest is xcase#decamelize
xcase#camelizeKeys x 642,111 ops/sec ±1.16% (92 runs sampled)
humps#camelizeKeys x 126,551 ops/sec ±0.64% (91 runs sampled)
lodash#reduce + camelCase x 120,886 ops/sec ±1.11% (92 runs sampled)
Fastest is xcase#camelizeKeys
xcase#decamelizeKeys x 613,896 ops/sec ±1.13% (86 runs sampled)
humps#decamelizeKeys x 194,091 ops/sec ±0.61% (92 runs sampled)
lodash#reduce + snakeCase: 
Fastest is xcase#decamelizeKeys
xcase#camelizeKeys (large object) x 678 ops/sec ±0.35% (94 runs sampled)
xcase#camelizeKeys {inPlace: true} (large object) x 570 ops/sec ±1.41% (86 runs sampled)
humps#camelizeKeys (large object) x 163 ops/sec ±0.22% (82 runs sampled)
Fastest is xcase#camelizeKeys (large object)
xcase#decamelizeKeys (large object) x 665 ops/sec ±0.68% (92 runs sampled)
humps#decamelizeKeys (large object) x 238 ops/sec ±0.63% (85 runs sampled)
Fastest is xcase#decamelizeKeys (large object)
```

## Installation

Node: `npm install --save xcase`

Browser (JSPM): `jspm install npm:xcase`

Browser (Bower): `jspm install xcase`

Browser (Manual): Load https://raw.githubusercontent.com/encharm/xcase/master/dist/xcase.min.js and use global `xcase` object

## Usage:

```
let {camelizeKeys} = require('xcase');
let obj = camelizeKeys({
  foo_bar: 1
}); 
// obj is {fooBar: 1}
```

## API

* `camelize(string, [options])` 

    change `"foo_bar"`/`"foo bar"`/`"foo-bar"` to `"fooBar"`

* `camelizeKeys(objectOrArray, [options])`

    change all keys according to `camelize`

* `decamelize(string, [options])`

    change `"fooBar"` to `"foo_bar"` and takes custom `separator` in options

* `decamelizeKeys(objectOrArray, [options])`

    change all keys according to `decamelize`

* `pascalize(string, [opts])`

    change `"foo_bar"`/`"foo bar"`/`"foo-bar"` to `"FooBar"`

* `pascalizeKeys(objectOrArray, [options])`

    change all keys according to `pascalize`

* `depascalize(string, [opts])`

    change `"FooBar"` to `"foo_bar"` and takes custom `separator` in options

* `depascalizeKeys(objectOrArray, [options])`

    change all keys according to `depascalize`


Options:
* `inPlace: true` - to modify existing object (note, it's slower than default! v8 is smarter than us)
* `separator` - for example `-` for `de**` variant of functions

## License

MIT

Copyright (c) 2016, Code Charm Ltd

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