@kakasoo/deep-strict-types 2.0.8 → 2.0.9

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.
@@ -4,6 +4,16 @@ import type { IsAny } from './IsAny';
4
4
  import type { IsUnion } from './IsUnion';
5
5
  import type { ValueType } from './ValueType';
6
6
  declare namespace DeepStrictObjectKeys {
7
+ /**
8
+ * Distributive wrapper for Infer that properly handles union element types.
9
+ * When Element is a union (e.g., {a: 1} | {b: 2} from tuple [{ a: 1 }, { b: 2 }]),
10
+ * this distributes the Infer call to each member of the union individually,
11
+ * avoiding the issue where keyof (A | B) = (keyof A) & (keyof B) = never.
12
+ */
13
+ type DistributeInfer<T, Joiner extends {
14
+ array: string;
15
+ object: string;
16
+ }, IsSafe extends boolean> = T extends object ? Infer<T, Joiner, IsSafe> : never;
7
17
  /**
8
18
  * Internal helper type that recursively extracts all keys from nested objects
9
19
  * @template Target - The object type to extract keys from
@@ -11,13 +21,14 @@ declare namespace DeepStrictObjectKeys {
11
21
  * @template IsSafe - Controls whether to explore union types that mix primitives and objects
12
22
  * @template P - The current property keys being processed (excludes array methods)
13
23
  */
14
- type Infer<Target extends object, Joiner extends {
24
+ export type Infer<Target extends object, Joiner extends {
15
25
  array: string;
16
26
  object: string;
17
27
  } = {
18
28
  array: '[*]';
19
29
  object: '.';
20
- }, IsSafe extends boolean = true, P extends keyof Target = Exclude<keyof Target, keyof []>> = [Target] extends [never] ? never : (P extends string ? IsUnion<Target[P]> extends true ? Equal<IsSafe, true> extends true ? P : P | (Target[P] extends infer E ? E extends ValueType ? P : E extends object ? E extends Array<infer _Element extends object> ? P | `${P}${Joiner['array']}${Joiner['object']}${Infer<_Element, Joiner, IsSafe>}` : `${P}${Joiner['object']}${Infer<E, Joiner, IsSafe>}` : never : never) : Target[P] extends Array<infer Element extends object> ? P | `${P}${Joiner['array']}${Joiner['object']}${Infer<Element, Joiner, false>}` : Target[P] extends Array<infer _Element> ? Equal<IsSafe, true> extends true ? P : P | never : Target[P] extends ValueType ? P : IsAny<Target[P]> extends true ? P : Target[P] extends object ? Target[P] extends Record<string, never> ? `${P}` : `${P}` | `${P}${Joiner['object']}${Infer<Target[P], Joiner, false>}` : never : never) | ([Exclude<keyof Target, keyof []>] extends [never] ? never : '*');
30
+ }, IsSafe extends boolean = true, P extends keyof Target = Exclude<keyof Target, keyof []>> = [Target] extends [never] ? never : (P extends string ? IsUnion<Target[P]> extends true ? Equal<IsSafe, true> extends true ? P : P | (Target[P] extends infer E ? E extends ValueType ? P : E extends object ? E extends Array<infer _Element extends object> ? P | `${P}${Joiner['array']}${Joiner['object']}${DistributeInfer<_Element, Joiner, IsSafe>}` : `${P}${Joiner['object']}${Infer<E, Joiner, IsSafe>}` : never : never) : Target[P] extends Array<infer Element extends object> ? P | `${P}${Joiner['array']}${Joiner['object']}${DistributeInfer<Element, Joiner, false>}` : Target[P] extends Array<infer _Element> ? Equal<IsSafe, true> extends true ? P : P | never : Target[P] extends ValueType ? P : IsAny<Target[P]> extends true ? P : Target[P] extends object ? Target[P] extends Record<string, never> ? `${P}` : `${P}` | `${P}${Joiner['object']}${Infer<Target[P], Joiner, false>}` : never : never) | ([Exclude<keyof Target, keyof []>] extends [never] ? never : '*');
31
+ export {};
21
32
  }
22
33
  /**
23
34
  * @title Type for Listing All Keys of Nested Objects or Arrays.
@@ -1 +1 @@
1
- {"version":3,"file":"DeepStrictObjectKeys.d.ts","sourceRoot":"","sources":["../../../src/types/DeepStrictObjectKeys.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DeepStrictObjectKeys.d.ts","sourceRoot":"","sources":["../../../src/types/DeepStrictObjectKeys.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kakasoo/deep-strict-types",
3
- "version": "2.0.8",
3
+ "version": "2.0.9",
4
4
  "description": "typescript utility types including deep-strict-omit and pick type",
5
5
  "private": false,
6
6
  "publishConfig": {