caseforge 0.2.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,7 +8,7 @@ type CamelCase<S extends string> = S extends `${infer A}_${infer B}` ? `${Lowerc
8
8
  * @example { user_name: "John Doe" } -> { userName: "John Doe" }
9
9
  */
10
10
  type CamelCaseKeys<T> = {
11
- [K in keyof T as CamelCase<K & string>]: T[K] extends Array<infer U> ? U extends Record<string, unknown> ? Array<CamelCaseKeys<U>> : T[K] : T[K] extends Record<string, unknown> ? CamelCaseKeys<T[K]> : T[K];
11
+ [K in keyof T as CamelCase<K & string>]: T[K] extends readonly (infer U)[] ? U extends object ? readonly CamelCaseKeys<U>[] : T[K] : T[K] extends object ? CamelCaseKeys<T[K]> : T[K];
12
12
  };
13
13
  /**
14
14
  * Converts strings or object keys to camelCase format.
@@ -16,6 +16,5 @@ type CamelCaseKeys<T> = {
16
16
  * @returns The camelCase string or object.
17
17
  */
18
18
  export declare function toCamelCase<T extends string>(input: T): CamelCase<T>;
19
- export declare function toCamelCase<T extends Record<string, unknown>>(input: T): CamelCaseKeys<T>;
20
- export declare function toCamelCase<T>(input: T): T;
19
+ export declare function toCamelCase<T extends object>(input: T): CamelCaseKeys<T>;
21
20
  export {};
@@ -8,7 +8,7 @@ type KebabCase<S extends string, First extends boolean = true> = S extends `${in
8
8
  * @example { userName: "John Doe" } -> { "user-name": "John Doe" }
9
9
  */
10
10
  type KebabCaseKeys<T> = {
11
- [K in keyof T as KebabCase<K & string>]: T[K] extends Array<infer U> ? U extends Record<string, unknown> ? Array<KebabCaseKeys<U>> : T[K] : T[K] extends Record<string, unknown> ? KebabCaseKeys<T[K]> : T[K];
11
+ [K in keyof T as KebabCase<K & string>]: T[K] extends readonly (infer U)[] ? U extends object ? readonly KebabCaseKeys<U>[] : T[K] : T[K] extends object ? KebabCaseKeys<T[K]> : T[K];
12
12
  };
13
13
  /**
14
14
  * Converts strings or object keys to kebab-case format.
@@ -16,6 +16,5 @@ type KebabCaseKeys<T> = {
16
16
  * @returns The kebab-case string or object.
17
17
  */
18
18
  export declare function toKebabCase<T extends string>(input: T): KebabCase<T>;
19
- export declare function toKebabCase<T extends Record<string, unknown>>(input: T): KebabCaseKeys<T>;
20
- export declare function toKebabCase<T>(input: T): T;
19
+ export declare function toKebabCase<T extends object>(input: T): KebabCaseKeys<T>;
21
20
  export {};
@@ -8,7 +8,7 @@ type PascalCase<S extends string> = S extends `${infer Head}_${infer Tail}` ? `$
8
8
  * @example { user_name: "John Doe" } -> { UserName: "John Doe" }
9
9
  */
10
10
  type PascalCaseKeys<T> = {
11
- [K in keyof T as PascalCase<K & string>]: T[K] extends Array<infer U> ? U extends Record<string, unknown> ? Array<PascalCaseKeys<U>> : T[K] : T[K] extends Record<string, unknown> ? PascalCaseKeys<T[K]> : T[K];
11
+ [K in keyof T as PascalCase<K & string>]: T[K] extends readonly (infer U)[] ? U extends object ? readonly PascalCaseKeys<U>[] : T[K] : T[K] extends object ? PascalCaseKeys<T[K]> : T[K];
12
12
  };
13
13
  /**
14
14
  * Converts strings or object keys to PascalCase format.
@@ -16,6 +16,5 @@ type PascalCaseKeys<T> = {
16
16
  * @returns The PascalCase string or object.
17
17
  */
18
18
  export declare function toPascalCase<T extends string>(input: T): PascalCase<T>;
19
- export declare function toPascalCase<T extends Record<string, unknown>>(input: T): PascalCaseKeys<T>;
20
- export declare function toPascalCase<T>(input: T): T;
19
+ export declare function toPascalCase<T extends object>(input: T): PascalCaseKeys<T>;
21
20
  export {};
@@ -8,7 +8,7 @@ type SnakeCase<S extends string, First extends boolean = true> = S extends `${in
8
8
  * @example { userName: "John Doe" } -> { user_name: "John Doe" }
9
9
  */
10
10
  type SnakeCaseKeys<T> = {
11
- [K in keyof T as SnakeCase<K & string>]: T[K] extends Array<infer U> ? U extends Record<string, unknown> ? Array<SnakeCaseKeys<U>> : T[K] : T[K] extends Record<string, unknown> ? SnakeCaseKeys<T[K]> : T[K];
11
+ [K in keyof T as SnakeCase<K & string>]: T[K] extends readonly (infer U)[] ? U extends object ? readonly SnakeCaseKeys<U>[] : T[K] : T[K] extends object ? SnakeCaseKeys<T[K]> : T[K];
12
12
  };
13
13
  /**
14
14
  * Converts strings or object keys to snake_case format.
@@ -16,6 +16,5 @@ type SnakeCaseKeys<T> = {
16
16
  * @returns The snake_case string or object.
17
17
  */
18
18
  export declare function toSnakeCase<T extends string>(input: T): SnakeCase<T>;
19
- export declare function toSnakeCase<T extends Record<string, unknown>>(input: T): SnakeCaseKeys<T>;
20
- export declare function toSnakeCase<T>(input: T): T;
19
+ export declare function toSnakeCase<T extends object>(input: T): SnakeCaseKeys<T>;
21
20
  export {};
@@ -8,7 +8,7 @@ type UpperCase<S extends string, First extends boolean = true> = S extends `${in
8
8
  * @example { userName: "John Doe" } -> { USER_NAME: "John Doe" }
9
9
  */
10
10
  type UpperCaseKeys<T> = {
11
- [K in keyof T as UpperCase<K & string>]: T[K] extends Array<infer U> ? U extends Record<string, unknown> ? Array<UpperCaseKeys<U>> : T[K] : T[K] extends Record<string, unknown> ? UpperCaseKeys<T[K]> : T[K];
11
+ [K in keyof T as UpperCase<K & string>]: T[K] extends readonly (infer U)[] ? U extends object ? readonly UpperCaseKeys<U>[] : T[K] : T[K] extends object ? UpperCaseKeys<T[K]> : T[K];
12
12
  };
13
13
  /**
14
14
  * Converts strings or object keys to UPPER_SNAKE_CASE format.
@@ -16,6 +16,5 @@ type UpperCaseKeys<T> = {
16
16
  * @returns The UPPER_SNAKE_CASE string or object.
17
17
  */
18
18
  export declare function toUpperCase<T extends string>(input: T): UpperCase<T>;
19
- export declare function toUpperCase<T extends Record<string, unknown>>(input: T): UpperCaseKeys<T>;
20
- export declare function toUpperCase<T>(input: T): T;
19
+ export declare function toUpperCase<T extends object>(input: T): UpperCaseKeys<T>;
21
20
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "caseforge",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "caseforge - Effortlessly convert between snake_case, camelCase, and more in TypeScript. Zero dependencies, type-safe, and easy to use for any project.",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -52,9 +52,7 @@
52
52
  "license": "MIT",
53
53
  "devDependencies": {
54
54
  "@biomejs/biome": "2.3.6",
55
+ "@types/bun": "^1.3.2",
55
56
  "typescript": "^5.9.3"
56
- },
57
- "dependencies": {
58
- "@types/bun": "^1.3.2"
59
57
  }
60
58
  }