js-convert-case

⛹️♂️ JavaScript Convert Cases Package 🏌️♀️ Use for both Node.JS and Browser 🎯🎯
Convert String and Keys of Object between cases (camelCase, snake_case, PascalCase, dot.case, path/case, text case, Sentence case, Header Case, UPPERCASE, lowercase, kebab-case).
View Demo on GitHub here.
Installation
Node.JS
npm install --save js-convert-case
yarn add js-convert-case
Browser
Download file js-convert-case.min.js
at here or we can use CDN for NPM such as unpkg or jsDelivr.
<script src="https://cdn.jsdelivr.net/js-convert-case/dist/js-convert-case.min.js"></script>
<script src="https://unpkg.com/js-convert-case/dist/js-convert-case.min.js"></script>
<script src="[path/to/dist]/js-convert-case.min.js"></script>
Usage
Node.JS
Syntax require
const jsConvert = require('js-convert-case');
const { toCamelCase, toDotCase, upperKeys, snakeKeys } = require('js-convert-case');
Syntax import
import js-convert-case from 'js-convert-case';
import { toPascalCase, toPathCase, lowerKeys, camelKeys } from 'js-convert-case';
Example
console.log(jsConvert.toCamelCase('param-case'));
console.log(jsConvert.toSnakeCase('param-case'));
console.log(jsConvert.toPascalCase('param-case'));
console.log(jsConvert.toDotCase('param-case'));
console.log(jsConvert.toPathCase('param-case'));
console.log(jsConvert.toTextCase('param-case'));
console.log(jsConvert.toSentenceCase('param-case'));
console.log(jsConvert.toHeaderCase('param-case'));
console.log(jsConvert.toLowerCase('param-case'));
console.log(jsConvert.toUpperCase('param-case'));
console.log(jsConvert.toKebabCase('param-case'));
const obj = {
camelCase: 1,
UPPERCASE: 2,
lowercase: 3,
snake_case: 4,
PascalCase: 5,
'Title Case': 6,
'dot.case': 7,
'param-case': 8,
'Sentence case': 9,
'path/case': 10,
'Header-Case': 11
};
console.log(jsConvert.lowerKeys(obj));
console.log(jsConvert.upperKeys(obj));
console.log(jsConvert.camelKeys(obj));
console.log(jsConvert.snakeKeys(obj));
console.log(jsConvert.pascalKeys(obj));
console.log(jsConvert.kebabKeys(obj));
Browser
After file js-convert-case.min.js
is loaded, object jsConvert
will be exported globally into window
object.
<script>
console.log(window.jsConvert);
console.log(jsConvert);
console.log(jsConvert.toCamelCase('param-case'));
console.log(jsConvert.toSnakeCase('param-case'));
console.log(jsConvert.toPascalCase('param-case'));
console.log(jsConvert.toDotCase('param-case'));
console.log(jsConvert.toPathCase('param-case'));
console.log(jsConvert.toTextCase('param-case'));
console.log(jsConvert.toSentenceCase('param-case'));
console.log(jsConvert.toHeaderCase('param-case'));
console.log(jsConvert.toLowerCase('param-case'));
console.log(jsConvert.toUpperCase('param-case'));
console.log(jsConvert.toKebabCase('param-case'));
const obj = {
camelCase: 1,
UPPERCASE: 2,
lowercase: 3,
snake_case: 4,
PascalCase: 5,
'Title Case': 6,
'dot.case': 7,
'param-case': 8,
'Sentence case': 9,
'path/case': 10,
'Header-Case': 11
};
console.log(jsConvert.lowerKeys(obj));
console.log(jsConvert.upperKeys(obj));
console.log(jsConvert.camelKeys(obj));
console.log(jsConvert.snakeKeys(obj));
console.log(jsConvert.pascalKeys(obj));
console.log(jsConvert.kebabKeys(obj));
</script>
More examples
You can see more examples in directory ./test/browser
API
jsConvert
jsConvert is an object containing function which converts cases. On browser, jsConvert
is exported globally to window
object, you can access by jsConvert
or window.jsConvert
.
Available Methods
Convert String
Convert Keys of Object
toCamelCase
Return as a string with the separators denoted by having the next letter capitalized.
console.log(jsConvert.toCamelCase('param-case'));
toSnakeCase
Return as a lower case, underscore separated string.
console.log(jsConvert.toSnakeCase('camelCase'));
toPascalCase
Return as a string denoted in the same fashion as camelCase
, but with the first letter also capitalized.
console.log(jsConvert.toPascalCase('param-case'));
toDotCase
Return as a lower case, period separated string.
console.log(jsConvert.toDotCase('Title Case'));
toPathCase
Return as a lower case, slash separated string.
console.log(jsConvert.toPathCase('camelCase'));
toTextCase
Return the string without any casing (lower case, space separated).
console.log(jsConvert.toTextCase('camelCase'));
toSentenceCase
Return as a lower case, space separated string with the first letter upper case.
console.log(jsConvert.toSentenceCase('camelCase'));
Return as a space separated string with the first character of every word upper cased.
console.log(jsConvert.toHeaderCase('param-case'));
toKebabCase
Return as a lower case, hyphen separated string.
console.log(jsConvert.toKebabCase('Title Case'));
toLowerCase
Similar to String.prototype.toLowerCase()
console.log(jsConvert.toLowerCase('Title Case'));
toUpperCase
Similar to String.prototype.toUpperCase()
console.log(jsConvert.toUpperCase('param-case'));
lowerKeys
const lowerKeys(obj: any, {
recursive: boolean = false,
recursiveInArray: boolean = false,
keepTypesOnRecursion: any[] = []
}): object | null
Return a new object which keys is lowercase format. Support lowerKeys recursively. Default is false
.
console.log(jsConvert.lowerKeys(obj));
console.log(jsConvert.lowerKeys(obj, { recursive: true }));
console.log(jsConvert.lowerKeys(obj, { recursive: true, recursiveInArray: true }));
console.log(jsConvert.lowerKeys(undefined));
console.log(jsConvert.lowerKeys(null));
console.log(jsConvert.lowerKeys(1));
console.log(jsConvert.lowerKeys('abc'));
console.log(jsConvert.lowerKeys([1, 2, 3]));
upperKeys
const upperKeys(obj: any, {
recursive: boolean = false,
recursiveInArray: boolean = false,
keepTypesOnRecursion: any[] = []
}): object | null
Return a new object which keys is UPPERCASE format. Support upperKeys recursively. Default is false
console.log(jsConvert.upperKeys(obj));
console.log(jsConvert.upperKeys(obj, { recursive: true }));
console.log(jsConvert.upperKeys(obj, { recursive: true, recursiveInArray: true }));
console.log(jsConvert.upperKeys(undefined));
console.log(jsConvert.upperKeys(null));
console.log(jsConvert.upperKeys(1));
console.log(jsConvert.upperKeys('abc'));
console.log(jsConvert.upperKeys([1, 2, 3]));
camelKeys
const camelKeys(obj: any, {
recursive: boolean = false,
recursiveInArray: boolean = false,
keepTypesOnRecursion: any[] = []
}): object | null
Return a new object which keys is camelCase format. Support camelKeys recursively. Default is false
.
console.log(jsConvert.camelKeys(obj));
console.log(jsConvert.camelKeys(obj, { recursive: true }));
console.log(jsConvert.camelKeys(obj, { recursive: true, recursiveInArray: true }));
console.log(jsConvert.camelKeys(undefined));
console.log(jsConvert.camelKeys(null));
console.log(jsConvert.camelKeys(1));
console.log(jsConvert.camelKeys('abc'));
console.log(jsConvert.camelKeys([1, 2, 3]));
snakeKeys
const snakeKeys(obj: any, {
recursive: boolean = false,
recursiveInArray: boolean = false,
keepTypesOnRecursion: any[] = []
}): object | null
Return a new object which keys is snake_case format. Support snakeKeys recursively. Default is false
.
console.log(jsConvert.snakeKeys(obj));
console.log(jsConvert.snakeKeys(obj, { recursive: true }));
console.log(jsConvert.snakeKeys(obj, { recursive: true, recursiveInArray: true }));
console.log(jsConvert.snakeKeys(undefined));
console.log(jsConvert.snakeKeys(null));
console.log(jsConvert.snakeKeys(1));
console.log(jsConvert.snakeKeys('abc'));
console.log(jsConvert.snakeKeys([1, 2, 3]));
pascalKeys
const pascalKeys(obj: any, {
recursive: boolean = false,
recursiveInArray: boolean = false,
keepTypesOnRecursion: any[] = []
}): object | null
Return a new object which keys is PascalCase format. Support pascalKeys recursively. Default is false
.
console.log(jsConvert.pascalKeys(obj));
console.log(jsConvert.pascalKeys(obj, { recursive: true }));
console.log(jsConvert.pascalKeys(obj, { recursive: true, recursiveInArray: true }));
console.log(jsConvert.pascalKeys(undefined));
console.log(jsConvert.pascalKeys(null));
console.log(jsConvert.pascalKeys(1));
console.log(jsConvert.pascalKeys('abc'));
console.log(jsConvert.pascalKeys([1, 2, 3]));
kebabKeys
const kebabKeys(obj: any, {
recursive: boolean = false,
recursiveInArray: boolean = false,
keepTypesOnRecursion: any[] = []
}): object | null
Return a new object which keys is kebab-case format. Support kebabKeys recursively. Default is false
.
console.log(jsConvert.kebabKeys(obj));
console.log(jsConvert.kebabKeys(obj, { recursive: true }));
console.log(jsConvert.kebabKeys(obj, { recursive: true, recursiveInArray: true }));
console.log(jsConvert.kebabKeys(undefined));
console.log(jsConvert.kebabKeys(null));
console.log(jsConvert.kebabKeys(1));
console.log(jsConvert.kebabKeys('abc'));
console.log(jsConvert.kebabKeys([1, 2, 3]));
Examples
Convert string between cases
console.log(jsConvert.toCamelCase('param-case'));
console.log(jsConvert.toCamelCase('camelCase'));
console.log(jsConvert.toCamelCase('Title Case'));
console.log(jsConvert.toSnakeCase('param-case'));
console.log(jsConvert.toSnakeCase('camelCase'));
console.log(jsConvert.toSnakeCase('Title Case'));
console.log(jsConvert.toPascalCase('param-case'));
console.log(jsConvert.toPascalCase('camelCase'));
console.log(jsConvert.toPascalCase('Title Case'));
console.log(jsConvert.toDotCase('param-case'));
console.log(jsConvert.toDotCase('camelCase'));
console.log(jsConvert.toDotCase('Title Case'));
console.log(jsConvert.toPathCase('param-case'));
console.log(jsConvert.toPathCase('camelCase'));
console.log(jsConvert.toPathCase('Title Case'));
console.log(jsConvert.toTextCase('param-case'));
console.log(jsConvert.toTextCase('camelCase'));
console.log(jsConvert.toTextCase('Title Case'));
console.log(jsConvert.toSentenceCase('param-case'));
console.log(jsConvert.toSentenceCase('camelCase'));
console.log(jsConvert.toSentenceCase('Title Case'));
console.log(jsConvert.toHeaderCase('param-case'));
console.log(jsConvert.toHeaderCase('camelCase'));
console.log(jsConvert.toHeaderCase('Title Case'));
console.log(jsConvert.toLowerCase('param-case'));
console.log(jsConvert.toLowerCase('Title Case'));
console.log(jsConvert.toUpperCase('param-case'));
console.log(jsConvert.toUpperCase('Title Case'));
console.log(jsConvert.toKebabCase('param-case'));
console.log(jsConvert.toKebabCase('Title Case'));
console.log(jsConvert.toKebabCase('param-case'));
console.log(jsConvert.toKebabCase('Title Case'));
Speical values
console.log(jsConvert.toCamelCase(''));
console.log(jsConvert.toSnakeCase(null));
console.log(jsConvert.toPascalCase(undefined));
Complicated values
const str =
'!@#$ -- Hello___world ..<>| \\ 123_ _456 &l sn_ca - cmCa - PcCa - dot.ca - txt ca - Sen ca - Hd Ca %^$^%&';
console.log(jsConvert.toCamelCase(str));
console.log(jsConvert.toPascalCase(str));
console.log(jsConvert.toSnakeCase(str));
console.log(jsConvert.toDotCase(str));
console.log(jsConvert.toPathCase(str));
console.log(jsConvert.toTextCase(str));
console.log(jsConvert.toSentenceCase(str));
console.log(jsConvert.toHeaderCase(str));
console.log(jsConvert.toKebabCase(str));
Recursive convert in object
Multi-leveled object
const core = {
camelCase: 1,
UPPERCASE: 2,
lowercase: 3,
snake_case: 4,
PascalCase: 5,
'Title Case': 6,
'dot.case': 7,
'param-case': 8,
'Sentence case': 9,
'path/case': 10,
'Header-Case': 11
};
const obj = {
...core,
lv1: {
...core,
lv2: {
...core
}
}
};
Example with upperKeys
const res = jsConvert.upperKeys(obj, { recursive: true });
console.log(JSON.stringify(res));
Output
{
"CAMELCASE": 1,
"UPPERCASE": 2,
"LOWERCASE": 3,
"SNAKE_CASE": 4,
"PASCALCASE": 5,
"TITLE CASE": 6,
"DOT.CASE": 7,
"PARAM-CASE": 8,
"SENTENCE CASE": 9,
"PATH/CASE": 10,
"HEADER-CASE": 11,
"LV1": {
"CAMELCASE": 1,
"UPPERCASE": 2,
"LOWERCASE": 3,
"SNAKE_CASE": 4,
"PASCALCASE": 5,
"TITLE CASE": 6,
"DOT.CASE": 7,
"PARAM-CASE": 8,
"SENTENCE CASE": 9,
"PATH/CASE": 10,
"HEADER-CASE": 11,
"LV2": {
"CAMELCASE": 1,
"UPPERCASE": 2,
"LOWERCASE": 3,
"SNAKE_CASE": 4,
"PASCALCASE": 5,
"TITLE CASE": 6,
"DOT.CASE": 7,
"PARAM-CASE": 8,
"SENTENCE CASE": 9,
"PATH/CASE": 10,
"HEADER-CASE": 11
}
}
}
Example with pascalKeys
const res = jsConvert.pascalKeys(obj, { recursive: true });
console.log(JSON.stringify(res));
Output
{
"CamelCase": 1,
"Uppercase": 2,
"Lowercase": 3,
"SnakeCase": 4,
"PascalCase": 5,
"TitleCase": 6,
"DotCase": 7,
"ParamCase": 8,
"SentenceCase": 9,
"PathCase": 10,
"HeaderCase": 11,
"Lv1": {
"CamelCase": 1,
"Uppercase": 2,
"Lowercase": 3,
"SnakeCase": 4,
"PascalCase": 5,
"TitleCase": 6,
"DotCase": 7,
"ParamCase": 8,
"SentenceCase": 9,
"PathCase": 10,
"HeaderCase": 11,
"Lv2": {
"CamelCase": 1,
"Uppercase": 2,
"Lowercase": 3,
"SnakeCase": 4,
"PascalCase": 5,
"TitleCase": 6,
"DotCase": 7,
"ParamCase": 8,
"SentenceCase": 9,
"PathCase": 10,
"HeaderCase": 11
}
}
}
Example with snakeKeys
use recursive in array-sub-keys
const obj = {
camelCase: 1,
PascalCase: {
camelCase: [1, 'a', null, { PascalCase: 1 }, undefined],
PascalCase: [{ PascalCase: [1] }, [1, { PascalCase: 2 }]],
snake_case: { camelCase: [{ PascalCase: 1 }] }
}
};
const res = jsConvert.snakeKeys(obj, { recursive: true, recursiveInArray: true });
console.log(JSON.stringify(res));
Output
{
"camel_case": 1,
"pascal_case": {
"camel_case": [1, "a", null, { "pascal_case": 1 }, null],
"pascal_case": [{ "pascal_case": [1] }, [1, { "pascal_case": 2 }]],
"snake_case": { "camel_case": [{ "pascal_case": 1 }] }
}
}
Note: You can browse more examples at folder ./test/example
.
Dependencies
No dependencies
Development
Quickstart
- Clone the repository and enter the project
git clone https://github.com/huynhsamha/js-convert-case.git
cd js-convert-case
yarn
- Lint and format source (directory
src
)
yarn format
yarn lint
yarn dist:node
Output directory is dist
(defined in file tsconfig.json
)
- Build package for Browser
yarn dist:browser
- Build dist (both Node and Browser)
yarn dist
yarn build:release:binary
Testing
In directory test
, we can test the package in environments NodeJS, Browser, pre-published NPM package and the released package.
Buy me a coffee
