Commit ee515e8
Changed files (5)
src/core.ts
@@ -56,7 +56,7 @@ import {
proxyOverride,
quote,
quotePowerShell,
- snakeToCamel,
+ toCamelCase,
} from './util.js'
const CWD = Symbol('processCwd')
@@ -929,7 +929,7 @@ export function resolveDefaults(
return Object.entries(env).reduce<Options>((m, [k, v]) => {
if (v && k.startsWith(prefix)) {
- const _k = snakeToCamel(k.slice(prefix.length))
+ const _k = toCamelCase(k.slice(prefix.length))
const _v = parseBool(v)
if (allowed.has(_k)) (m as any)[_k] = _v
}
src/goods.ts
@@ -21,7 +21,7 @@ import {
isStringLiteral,
parseBool,
parseDuration,
- snakeToCamel,
+ toCamelCase,
} from './util.js'
import {
chalk,
@@ -42,7 +42,7 @@ export const parseArgv = (
): minimist.ParsedArgs =>
Object.entries(minimist(args, opts)).reduce<minimist.ParsedArgs>(
(m, [k, v]) => {
- const kTrans = opts.camelCase ? snakeToCamel : identity
+ const kTrans = opts.camelCase ? toCamelCase : identity
const vTrans = opts.parseBoolean ? parseBool : identity
const [_k, _v] = k === '--' || k === '_' ? [k, v] : [kTrans(k), vTrans(v)]
m[_k] = _v
src/util.ts
@@ -286,13 +286,7 @@ export const proxyOverride = <T extends object>(
},
}) as T
-export const camelToSnake = (str: string) =>
- str
- .split(/(?=[A-Z])/)
- .map((s) => s.toUpperCase())
- .join('_')
-
-export const snakeToCamel = (str: string) =>
+export const toCamelCase = (str: string) =>
str.toLowerCase().replace(/([a-z])[_-]+([a-z])/g, (_, p1, p2) => {
return p1 + p2.toUpperCase()
})
test/util.test.js
@@ -28,8 +28,7 @@ import {
tempdir,
tempfile,
preferLocalBin,
- camelToSnake,
- snakeToCamel,
+ toCamelCase,
} from '../build/util.js'
describe('util', () => {
@@ -133,18 +132,10 @@ describe('util', () => {
)
})
- test('camelToSnake()', () => {
- assert.equal(camelToSnake('verbose'), 'VERBOSE')
- assert.equal(camelToSnake('nothrow'), 'NOTHROW')
- assert.equal(camelToSnake('preferLocal'), 'PREFER_LOCAL')
- assert.equal(camelToSnake('someMoreBigStr'), 'SOME_MORE_BIG_STR')
- })
-
- test('snakeToCamel()', () => {
- assert.equal(snakeToCamel('VERBOSE'), 'verbose')
- assert.equal(snakeToCamel('NOTHROW'), 'nothrow')
- assert.equal(snakeToCamel('PREFER_LOCAL'), 'preferLocal')
- assert.equal(snakeToCamel('SOME_MORE_BIG_STR'), 'someMoreBigStr')
- assert.equal(snakeToCamel('kebab-input-str'), 'kebabInputStr')
+ test('toCamelCase()', () => {
+ assert.equal(toCamelCase('VERBOSE'), 'verbose')
+ assert.equal(toCamelCase('PREFER_LOCAL'), 'preferLocal')
+ assert.equal(toCamelCase('SOME_MORE_BIG_STR'), 'someMoreBigStr')
+ assert.equal(toCamelCase('kebab-input-str'), 'kebabInputStr')
})
})
.size-limit.json
@@ -2,14 +2,14 @@
{
"name": "zx/core",
"path": ["build/core.cjs", "build/util.cjs", "build/vendor-core.cjs"],
- "limit": "76 kB",
+ "limit": "75 kB",
"brotli": false,
"gzip": false
},
{
"name": "zx/index",
"path": "build/*.{js,cjs}",
- "limit": "804 kB",
+ "limit": "803 kB",
"brotli": false,
"gzip": false
},