type-fest
Advanced tools
+1
-1
| { | ||
| "name": "type-fest", | ||
| "version": "5.4.3", | ||
| "version": "5.4.4", | ||
| "description": "A collection of essential TypeScript types", | ||
@@ -5,0 +5,0 @@ "license": "(MIT OR CC0-1.0)", |
| import type {IsNever} from './is-never.d.ts'; | ||
| import type {IsEqual} from './is-equal.d.ts'; | ||
@@ -27,3 +28,3 @@ /** | ||
| : T extends any | ||
| ? [U] extends [T] | ||
| ? IsEqual<U, T> extends true | ||
| ? false | ||
@@ -30,0 +31,0 @@ : true |
@@ -0,3 +1,3 @@ | ||
| import type {JsonObject, JsonValue} from './json-value.d.ts'; | ||
| import type {LiteralUnion} from './literal-union.d.ts'; | ||
| import type {JsonObject, JsonValue} from './json-value.d.ts'; | ||
@@ -529,3 +529,3 @@ export namespace PackageJson { | ||
| engines?: { | ||
| [EngineName in 'npm' | 'node' | string]?: string; | ||
| [EngineName in LiteralUnion<'npm' | 'node', string>]?: string; | ||
| }; | ||
@@ -532,0 +532,0 @@ |
+40
-57
@@ -1,2 +0,2 @@ | ||
| import type {StaticPartOfArray, VariablePartOfArray, NonRecursiveType, ToString, IsNumberLike, ApplyDefaultOptions} from './internal/index.d.ts'; | ||
| import type {NonRecursiveType, ToString, IsNumberLike, ApplyDefaultOptions, MapsSetsOrArrays} from './internal/index.d.ts'; | ||
| import type {IsAny} from './is-any.d.ts'; | ||
@@ -195,65 +195,48 @@ import type {UnknownArray} from './unknown-array.d.ts'; | ||
| type _Paths<T, Options extends Required<PathsOptions>, CurrentDepth extends number = 0> = | ||
| T extends NonRecursiveType | ReadonlyMap<unknown, unknown> | ReadonlySet<unknown> | ||
| T extends NonRecursiveType | Exclude<MapsSetsOrArrays, UnknownArray> | ||
| ? never | ||
| : IsAny<T> extends true | ||
| ? never | ||
| : T extends UnknownArray | ||
| ? number extends T['length'] | ||
| // We need to handle the fixed and non-fixed index part of the array separately. | ||
| ? InternalPaths<StaticPartOfArray<T>, Options, CurrentDepth> | InternalPaths<Array<VariablePartOfArray<T>[number]>, Options, CurrentDepth> | ||
| : InternalPaths<T, Options, CurrentDepth> | ||
| : T extends object | ||
| ? InternalPaths<T, Options, CurrentDepth> | ||
| : never; | ||
| : T extends object | ||
| ? InternalPaths<Required<T>, Options, CurrentDepth> | ||
| : never; | ||
| type InternalPaths<T, Options extends Required<PathsOptions>, CurrentDepth extends number> = | ||
| Options['maxRecursionDepth'] extends infer MaxDepth extends number | ||
| ? Required<T> extends infer T | ||
| ? T extends readonly [] | ||
| ? never | ||
| : IsNever<keyof T> extends true // Check for empty object | ||
| ? never | ||
| : { | ||
| [Key in keyof T]: | ||
| Key extends string | number // Limit `Key` to string or number. | ||
| ? ( | ||
| And<Options['bracketNotation'], IsNumberLike<Key>> extends true | ||
| ? `[${Key}]` | ||
| // If `Key` is a number, return `Key | `${Key}``, because both `array[0]` and `array['0']` work. | ||
| : CurrentDepth extends 0 | ||
| ? Key | ToString<Key> | ||
| : `.${(Key | ToString<Key>)}` | ||
| ) extends infer TranformedKey extends string | number ? | ||
| // 1. If style is 'a[0].b' and 'Key' is a numberlike value like 3 or '3', transform 'Key' to `[${Key}]`, else to `${Key}` | Key | ||
| // 2. If style is 'a.0.b', transform 'Key' to `${Key}` | Key | ||
| | ((Options['leavesOnly'] extends true | ||
| ? MaxDepth extends CurrentDepth | ||
| ? TranformedKey | ||
| : T[Key] extends infer Value | ||
| ? (Value extends readonly [] | NonRecursiveType | ReadonlyMap<unknown, unknown> | ReadonlySet<unknown> | ||
| ? TranformedKey | ||
| : IsNever<keyof Value> extends true // Check for empty object | ||
| ? TranformedKey | ||
| : never) | ||
| : never | ||
| : TranformedKey | ||
| ) extends infer _TransformedKey | ||
| // If `depth` is provided, the condition becomes truthy only when it reaches `CurrentDepth`. | ||
| // Otherwise, since `depth` defaults to `number`, the condition is always truthy, returning paths at all depths. | ||
| ? CurrentDepth extends Options['depth'] | ||
| ? _TransformedKey | ||
| : never | ||
| : never) | ||
| | ( | ||
| // Recursively generate paths for the current key | ||
| GreaterThan<MaxDepth, CurrentDepth> extends true // Limit the depth to prevent infinite recursion | ||
| ? `${TranformedKey}${_Paths<T[Key], Options, Sum<CurrentDepth, 1>> & (string | number)}` | ||
| : never | ||
| ) | ||
| : never | ||
| : never | ||
| }[keyof T & (T extends UnknownArray ? number : unknown)] | ||
| {[Key in keyof T]: Key extends string | number // Limit `Key` to `string | number` | ||
| ? ( | ||
| And<Options['bracketNotation'], IsNumberLike<Key>> extends true | ||
| ? `[${Key}]` | ||
| : CurrentDepth extends 0 | ||
| // Return both `Key` and `ToString<Key>` because for number keys, like `1`, both `1` and `'1'` are valid keys. | ||
| ? Key | ToString<Key> | ||
| : `.${(Key | ToString<Key>)}` | ||
| ) extends infer TransformedKey extends string | number | ||
| ? ((Options['leavesOnly'] extends true | ||
| ? Options['maxRecursionDepth'] extends CurrentDepth | ||
| ? TransformedKey | ||
| : IsNever<T[Key]> extends true | ||
| ? TransformedKey | ||
| : T[Key] extends infer Value // For distributing `T[Key]` | ||
| ? (Value extends readonly [] | NonRecursiveType | Exclude<MapsSetsOrArrays, UnknownArray> | ||
| ? TransformedKey | ||
| : IsNever<keyof Value> extends true // Check for empty object & `unknown`, because `keyof unknown` is `never`. | ||
| ? TransformedKey | ||
| : never) | ||
| : never // Should never happen | ||
| : TransformedKey | ||
| ) extends infer _TransformedKey | ||
| // If `depth` is provided, the condition becomes truthy only when it matches `CurrentDepth`. | ||
| // Otherwise, since `depth` defaults to `number`, the condition is always truthy, returning paths at all depths. | ||
| ? CurrentDepth extends Options['depth'] | ||
| ? _TransformedKey | ||
| : never | ||
| : never) | ||
| // Recursively generate paths for the current key | ||
| | (GreaterThan<Options['maxRecursionDepth'], CurrentDepth> extends true // Limit the depth to prevent infinite recursion | ||
| ? `${TransformedKey}${_Paths<T[Key], Options, Sum<CurrentDepth, 1>> & (string | number)}` | ||
| : never) | ||
| : never | ||
| : never; | ||
| : never | ||
| }[keyof T & (T extends UnknownArray ? number : unknown)]; | ||
| export {}; |
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
524057
-0.13%12723
-0.13%