diff --git a/index.d.ts b/index.d.ts index adb3473..375c1c1 100644 --- a/index.d.ts +++ b/index.d.ts @@ -39,17 +39,17 @@ type AppendPath = S extends '' Convert keys of an object to camelcase strings. */ export type CamelCaseKeys< - T extends ObjectUnion | readonly any[], + T extends ObjectUnion | ReadonlyArray>, Deep extends boolean = false, IsPascalCase extends boolean = false, PreserveConsecutiveUppercase extends boolean = false, Exclude extends readonly unknown[] = EmptyTuple, StopPaths extends readonly string[] = EmptyTuple, Path extends string = '', -> = T extends readonly any[] +> = T extends ReadonlyArray> // Handle arrays or tuples. ? { - [P in keyof T]: T[P] extends Record | readonly any[] + [P in keyof T]: T[P] extends Record | ReadonlyArray> ? CamelCaseKeys< T[P], Deep, @@ -72,7 +72,7 @@ export type CamelCaseKeys< ] ? T[P] : [Deep] extends [true] - ? T[P] extends ObjectUnion | readonly any[] + ? T[P] extends ObjectUnion | ReadonlyArray> ? CamelCaseKeys< T[P], Deep, @@ -231,7 +231,7 @@ camelcaseKeys(commandLineArguments); ``` */ export default function camelcaseKeys< - T extends Record | readonly any[], + T extends Record | ReadonlyArray>, OptionsType extends Options = Options, >( input: T, diff --git a/index.test-d.ts b/index.test-d.ts index 6cd710b..e08f9ef 100644 --- a/index.test-d.ts +++ b/index.test-d.ts @@ -12,10 +12,6 @@ expectType>(camelFooBarArray); expectType>(camelcaseKeys([{'foo-bar': true}])); -expectType(camelcaseKeys(['name 1', 'name 2'])); - -expectType(camelcaseKeys(['name 1', 'name 2'], {deep: true})); - expectType( camelcaseKeys([{'foo-bar': true}, {'foo-baz': true}] as const), ); @@ -440,31 +436,17 @@ expectType<{ }), ); -expectType<[ - () => 'foo', - {foo: string}, - Promise, -]>( - camelcaseKeys([ - () => 'foo', - {foo: 'bar'}, - new Promise(resolve => { - resolve(true); - }), - ]), -); - // Test for function with inferred type // eslint-disable-next-line @typescript-eslint/comma-dangle function camelcaseKeysDeep< - T extends Record | readonly unknown[] + T extends Record | ReadonlyArray> >(response: T): CamelCaseKeys { return camelcaseKeys(response, {deep: true}); } // eslint-disable-next-line @typescript-eslint/comma-dangle function camelcaseKeysPascalCase< - T extends Record | readonly unknown[] + T extends Record | ReadonlyArray> >(response: T): CamelCaseKeys { return camelcaseKeys(response, {pascalCase: true}); } diff --git a/readme.md b/readme.md index f0475a4..35e8f4c 100644 --- a/readme.md +++ b/readme.md @@ -39,9 +39,9 @@ camelcaseKeys(commandLineArguments); #### input -Type: `object | object[]` +Type: `Record | ReadonlyArray>` -An object or array of objects to camel-case. +A plain object or array of plain objects to camel-case. #### options