js-convert-case v4.2.0
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
# or
yarn add js-convert-caseBrowser
Download file js-convert-case.min.js at here or we can use CDN for NPM such as unpkg or jsDelivr.
<!-- Use CDN -->
<!-- use jsDelivr -->
<script src="https://cdn.jsdelivr.net/js-convert-case/dist/js-convert-case.min.js"></script>
<!-- or use unpkg -->
<script src="https://unpkg.com/js-convert-case/dist/js-convert-case.min.js"></script>
<!-- or download file directly -->
<script src="[path/to/dist]/js-convert-case.min.js"></script>Usage
Node.JS
Syntax require
const jsConvert = require('js-convert-case');
// or
const { toCamelCase, toDotCase, upperKeys, snakeKeys } = require('js-convert-case');Syntax import
import js-convert-case from 'js-convert-case';
// or
import { toPascalCase, toPathCase, lowerKeys, camelKeys } from 'js-convert-case';Example
// Convert String
console.log(jsConvert.toCamelCase('param-case')); // paramCase
console.log(jsConvert.toSnakeCase('param-case')); // param_case
console.log(jsConvert.toPascalCase('param-case')); // ParamCase
console.log(jsConvert.toDotCase('param-case')); // param.case
console.log(jsConvert.toPathCase('param-case')); // param/case
console.log(jsConvert.toTextCase('param-case')); // param case
console.log(jsConvert.toSentenceCase('param-case')); // Param case
console.log(jsConvert.toHeaderCase('param-case')); // Param Case
console.log(jsConvert.toLowerCase('param-case')); // param-case
console.log(jsConvert.toUpperCase('param-case')); // PARAM-CASE
console.log(jsConvert.toKebabCase('param-case')); // param-case
// Convert Keys of Object
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);
// Convert String cases
console.log(jsConvert.toCamelCase('param-case')); // paramCase
console.log(jsConvert.toSnakeCase('param-case')); // param_case
console.log(jsConvert.toPascalCase('param-case')); // ParamCase
console.log(jsConvert.toDotCase('param-case')); // param.case
console.log(jsConvert.toPathCase('param-case')); // param/case
console.log(jsConvert.toTextCase('param-case')); // param case
console.log(jsConvert.toSentenceCase('param-case')); // Param case
console.log(jsConvert.toHeaderCase('param-case')); // Param Case
console.log(jsConvert.toLowerCase('param-case')); // param-case
console.log(jsConvert.toUpperCase('param-case')); // PARAM-CASE
console.log(jsConvert.toKebabCase('param-case')); // param-case
// Convert Keys of Object 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
toCamelCasetoSnakeCasetoPascalCasetoDotCasetoPathCasetoTextCasetoSentenceCasetoHeaderCasetoKebabCasetoLowerCasetoUpperCase
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')); // paramCasetoSnakeCase
Return as a lower case, underscore separated string.
console.log(jsConvert.toSnakeCase('camelCase')); // camel_casetoPascalCase
Return as a string denoted in the same fashion as camelCase, but with the first letter also capitalized.
console.log(jsConvert.toPascalCase('param-case')); // ParamCasetoDotCase
Return as a lower case, period separated string.
console.log(jsConvert.toDotCase('Title Case')); // title.casetoPathCase
Return as a lower case, slash separated string.
console.log(jsConvert.toPathCase('camelCase')); // camel/casetoTextCase
Return the string without any casing (lower case, space separated).
console.log(jsConvert.toTextCase('camelCase')); // camel casetoSentenceCase
Return as a lower case, space separated string with the first letter upper case.
console.log(jsConvert.toSentenceCase('camelCase')); // Camel casetoHeaderCase
Return as a space separated string with the first character of every word upper cased.
console.log(jsConvert.toHeaderCase('param-case')); // Param CasetoKebabCase
Return as a lower case, hyphen separated string.
console.log(jsConvert.toKebabCase('Title Case')); // title-casetoLowerCase
Similar to String.prototype.toLowerCase()
console.log(jsConvert.toLowerCase('Title Case')); // title casetoUpperCase
Similar to String.prototype.toUpperCase()
console.log(jsConvert.toUpperCase('param-case')); // PARAM-CASElowerKeys
const lowerKeys(obj: any, {
recursive: boolean = false,
recursiveInArray: boolean = false,
keepTypesOnRecursion: any[] = [] // example: Date
}): object | nullReturn a new object which keys is lowercase format. Support lowerKeys recursively. Default is false.
console.log(jsConvert.lowerKeys(obj));
// or recursive
console.log(jsConvert.lowerKeys(obj, { recursive: true }));
// or recursive in sub-keys with value is an array
console.log(jsConvert.lowerKeys(obj, { recursive: true, recursiveInArray: true }));
/**
{ 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 }
**/
// All output are `null`
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[] = [] // example: Date
}): object | nullReturn a new object which keys is UPPERCASE format. Support upperKeys recursively. Default is false
console.log(jsConvert.upperKeys(obj));
// or recursive
console.log(jsConvert.upperKeys(obj, { recursive: true }));
// or recursive in sub-keys with value is an array
console.log(jsConvert.upperKeys(obj, { recursive: true, recursiveInArray: true }));
/**
{ 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 }
**/
// All output are `null`
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[] = [] // example: Date
}): object | nullReturn a new object which keys is camelCase format. Support camelKeys recursively. Default is false.
console.log(jsConvert.camelKeys(obj));
// or recursive
console.log(jsConvert.camelKeys(obj, { recursive: true }));
// or recursive in sub-keys with value is an array
console.log(jsConvert.camelKeys(obj, { recursive: true, recursiveInArray: true }));
/**
{ camelCase: 1,
uppercase: 2,
lowercase: 3,
snakeCase: 4,
pascalCase: 5,
titleCase: 6,
dotCase: 7,
paramCase: 8,
sentenceCase: 9,
pathCase: 10,
headerCase: 11 }
**/
// All output are `null`
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[] = [] // example: Date
}): object | nullReturn a new object which keys is snake_case format. Support snakeKeys recursively. Default is false.
console.log(jsConvert.snakeKeys(obj));
// or recursive
console.log(jsConvert.snakeKeys(obj, { recursive: true }));
// or recursive in sub-keys with value is an array
console.log(jsConvert.snakeKeys(obj, { recursive: true, recursiveInArray: true }));
/**
{ camel_case: 1,
uppercase: 2,
lowercase: 3,
snake_case: 4,
pascal_case: 5,
title_case: 6,
dot_case: 7,
param_case: 8,
sentence_case: 9,
path_case: 10,
header_case: 11 }
**/
// All output are `null`
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[] = [] // example: Date
}): object | nullReturn a new object which keys is PascalCase format. Support pascalKeys recursively. Default is false.
console.log(jsConvert.pascalKeys(obj));
// or recursive
console.log(jsConvert.pascalKeys(obj, { recursive: true }));
// or recursive in sub-keys with value is an array
console.log(jsConvert.pascalKeys(obj, { recursive: true, recursiveInArray: true }));
/**
{ CamelCase: 1,
Uppercase: 2,
Lowercase: 3,
SnakeCase: 4,
PascalCase: 5,
TitleCase: 6,
DotCase: 7,
ParamCase: 8,
SentenceCase: 9,
PathCase: 10,
HeaderCase: 11 }
**/
// All output are `null`
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[] = [] // example: Date
}): object | nullReturn a new object which keys is kebab-case format. Support kebabKeys recursively. Default is false.
console.log(jsConvert.kebabKeys(obj));
// or recursive
console.log(jsConvert.kebabKeys(obj, { recursive: true }));
// or recursive in sub-keys with value is an array
console.log(jsConvert.kebabKeys(obj, { recursive: true, recursiveInArray: true }));
/**
{ 'camel-case': 1,
uppercase: 2,
lowercase: 3,
'snake-case': 4,
'pascal-case': 5,
'title-case': 6,
'dot-case': 7,
'param-case': 8,
'sentence-case': 9,
'path-case': 10,
'header-case': 11 }
**/
// All output are `null`
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')); // paramCase
console.log(jsConvert.toCamelCase('camelCase')); // camelCase
console.log(jsConvert.toCamelCase('Title Case')); // titleCase
console.log(jsConvert.toSnakeCase('param-case')); // param_case
console.log(jsConvert.toSnakeCase('camelCase')); // camel_case
console.log(jsConvert.toSnakeCase('Title Case')); // title_case
console.log(jsConvert.toPascalCase('param-case')); // ParamCase
console.log(jsConvert.toPascalCase('camelCase')); // CamelCase
console.log(jsConvert.toPascalCase('Title Case')); // TitleCase
console.log(jsConvert.toDotCase('param-case')); // param.case
console.log(jsConvert.toDotCase('camelCase')); // camel.case
console.log(jsConvert.toDotCase('Title Case')); // title.case
console.log(jsConvert.toPathCase('param-case')); // param/case
console.log(jsConvert.toPathCase('camelCase')); // camel/case
console.log(jsConvert.toPathCase('Title Case')); // title/case
console.log(jsConvert.toTextCase('param-case')); // param case
console.log(jsConvert.toTextCase('camelCase')); // camel case
console.log(jsConvert.toTextCase('Title Case')); // title case
console.log(jsConvert.toSentenceCase('param-case')); // Param case
console.log(jsConvert.toSentenceCase('camelCase')); // Camel case
console.log(jsConvert.toSentenceCase('Title Case')); // Title case
console.log(jsConvert.toHeaderCase('param-case')); // Param Case
console.log(jsConvert.toHeaderCase('camelCase')); // Camel Case
console.log(jsConvert.toHeaderCase('Title Case')); // Title Case
console.log(jsConvert.toLowerCase('param-case')); // param-case
console.log(jsConvert.toLowerCase('Title Case')); // title case
console.log(jsConvert.toUpperCase('param-case')); // PARAM-CASE
console.log(jsConvert.toUpperCase('Title Case')); // TITLE CASE
console.log(jsConvert.toKebabCase('param-case')); // param-case
console.log(jsConvert.toKebabCase('Title Case')); // title-case
console.log(jsConvert.toKebabCase('param-case')); // PARAM-CASE
console.log(jsConvert.toKebabCase('Title Case')); // TITLE-CASESpeical 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)); // => 'helloWorld123456LSnCaCmCaPcCaDotCaTxtCaSenCaHdCa'
console.log(jsConvert.toPascalCase(str)); // => 'HelloWorld123456LSnCaCmCaPcCaDotCaTxtCaSenCaHdCa'
console.log(jsConvert.toSnakeCase(str)); // => 'hello_world_123_456_l_sn_ca_cm_ca_pc_ca_dot_ca_txt_ca_sen_ca_hd_ca'
console.log(jsConvert.toDotCase(str)); // => 'hello.world.123.456.l.sn.ca.cm.ca.pc.ca.dot.ca.txt.ca.sen.ca.hd.ca'
console.log(jsConvert.toPathCase(str)); // => 'hello/world/123/456/l/sn/ca/cm/ca/pc/ca/dot/ca/txt/ca/sen/ca/hd/ca'
console.log(jsConvert.toTextCase(str)); // => 'hello world 123 456 l sn ca cm ca pc ca dot ca txt ca sen ca hd ca'
console.log(jsConvert.toSentenceCase(str)); // => 'Hello world 123 456 l sn ca cm ca pc ca dot ca txt ca sen ca hd ca'
console.log(jsConvert.toHeaderCase(str)); // => 'Hello World 123 456 L Sn Ca Cm Ca Pc Ca Dot Ca Txt Ca Sen Ca Hd Ca'
console.log(jsConvert.toKebabCase(str)); // => 'hello-world-123-456-l-sn-ca-cm-ca-pc-ca-dot-ca-txt-ca-sen-ca-hd-ca'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- Install dependencies
yarn- Lint and format source (directory
src)
yarn format # defined in package.json
yarn lint # defined in package.json- Build package for Node
yarn dist:node # defined in package.jsonOutput directory is dist (defined in file tsconfig.json)
- Build package for Browser
yarn dist:browser # defined in package.json and rollup.config.js- Build dist (both Node and Browser)
yarn dist # defined in package.json- Build release files
yarn build:release:binaryTesting
In directory test, we can test the package in environments NodeJS, Browser, pre-published NPM package and the released package.
Buy me a coffee
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
7 years ago
7 years ago
7 years ago
7 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago