@types/lodash 4.17.5 → 4.17.7

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.
lodash/README.md CHANGED
@@ -8,7 +8,7 @@ This package contains type definitions for lodash (https://lodash.com).
8
8
  Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/lodash.
9
9
 
10
10
  ### Additional Details
11
- * Last updated: Sat, 08 Jun 2024 07:07:49 GMT
11
+ * Last updated: Tue, 16 Jul 2024 02:21:33 GMT
12
12
  * Dependencies: none
13
13
 
14
14
  # Credits
lodash/common/object.d.ts CHANGED
@@ -1021,41 +1021,98 @@ declare module "../index" {
1021
1021
  functionsIn(): CollectionChain<string>;
1022
1022
  }
1023
1023
 
1024
- type GetIndexedField<T, K> = K extends keyof T
1025
- ? T[K]
1026
- : K extends `${number}`
1027
- ? 'length' extends keyof T
1028
- ? number extends T['length']
1029
- ? number extends keyof T
1030
- ? T[number]
1031
- : undefined
1032
- : undefined
1033
- : undefined
1034
- : undefined;
1024
+ type GetFieldTypeOfArrayLikeByKey<T extends unknown[], K> =
1025
+ K extends number ? T[K]
1026
+ : K extends `${infer N extends number}` ? T[N]
1027
+ : K extends keyof T ? T[K] : undefined;
1035
1028
 
1036
- type FieldWithPossiblyUndefined<T, Key> =
1037
- | GetFieldType<Exclude<T, undefined>, Key>
1038
- | Extract<T, undefined>;
1029
+ type GetFieldTypeOfStringByKey<T extends string, K> =
1030
+ K extends number ? T[K]
1031
+ : K extends `${infer N extends number}` ? T[N]
1032
+ : K extends keyof T ? T[K]
1033
+ : undefined;
1039
1034
 
1040
- type IndexedFieldWithPossiblyUndefined<T, Key> =
1041
- | GetIndexedField<Exclude<T, undefined>, Key>
1042
- | Extract<T, undefined>;
1035
+ type GetFieldTypeOfNarrowedByKey<T, K> =
1036
+ T extends unknown[] ? GetFieldTypeOfArrayLikeByKey<T, K>
1037
+ : T extends string ? GetFieldTypeOfStringByKey<T, K>
1038
+ : K extends keyof T ? T[K]
1039
+ : K extends number
1040
+ ? `${K}` extends keyof T ? T[`${K}`] : undefined
1041
+ : K extends `${infer N extends number}`
1042
+ ? N extends keyof T ? T[N] : undefined
1043
+ : undefined;
1043
1044
 
1044
- type GetFieldType<T, P> = P extends `${infer Left}.${infer Right}`
1045
- ? Left extends keyof Exclude<T, undefined>
1046
- ? FieldWithPossiblyUndefined<Exclude<T, undefined>[Left], Right> | Extract<T, undefined>
1047
- : Left extends `${infer FieldKey}[${infer IndexKey}]`
1048
- ? FieldKey extends keyof T
1049
- ? FieldWithPossiblyUndefined<IndexedFieldWithPossiblyUndefined<T[FieldKey], IndexKey>, Right>
1050
- : undefined
1051
- : undefined
1052
- : P extends keyof T
1053
- ? T[P]
1054
- : P extends `${infer FieldKey}[${infer IndexKey}]`
1055
- ? FieldKey extends keyof T
1056
- ? IndexedFieldWithPossiblyUndefined<T[FieldKey], IndexKey>
1057
- : undefined
1058
- : IndexedFieldWithPossiblyUndefined<T, P>;
1045
+ /** Internal. Assumes P is a dot-delimited path. */
1046
+ type GetFieldTypeOfNarrowedByDotPath<T, P> =
1047
+ P extends `${infer L}.${infer R}`
1048
+ ? GetFieldType<GetFieldTypeOfNarrowedByKey<T, L>, R, 'DotPath'>
1049
+ : GetFieldTypeOfNarrowedByKey<T, P>;
1050
+
1051
+ /** Internal. This is a piece of GetFieldTypeOfNarrowedByLKR logic,
1052
+ * assuming that Lc isn't to be ignored, and does not end with dot. */
1053
+ type GetFieldTypeOfNarrowedByLcKR<T, Lc, K, R> =
1054
+ '' extends R
1055
+ ? GetFieldType<GetFieldTypeOfNarrowedByDotPath<T, Lc>, K, 'Key'>
1056
+ : R extends `.${infer Rc}`
1057
+ ? GetFieldType<GetFieldType<GetFieldTypeOfNarrowedByDotPath<T, Lc>, K, 'Key'>, Rc>
1058
+ : GetFieldType<GetFieldType<GetFieldTypeOfNarrowedByDotPath<T, Lc>, K, 'Key'>, R>
1059
+
1060
+ /** Internal. Assumes T has been narrowed; L is a dot-delimited path,
1061
+ * and should be ignored if an empty string; K is a key name; and R is
1062
+ * a dot-delimetered path, to be ignored if an empty string. Also if
1063
+ * L has a tail dot, or R has a front dot, these dots should be discarded,
1064
+ * however when L or R is just a dot, they should be interpreted as empty
1065
+ * key name (rather than ignored). */
1066
+ type GetFieldTypeOfNarrowedByLKR<T, L, K, R> =
1067
+ '' extends L
1068
+ ? '' extends R
1069
+ ? GetFieldTypeOfNarrowedByKey<T, K>
1070
+ : R extends `.${infer Rc}`
1071
+ ? GetFieldType<GetFieldTypeOfNarrowedByKey<T, K>, Rc>
1072
+ : GetFieldType<GetFieldTypeOfNarrowedByKey<T, K>, R>
1073
+ : L extends `${infer Lc}.`
1074
+ ? GetFieldTypeOfNarrowedByLcKR<T, Lc, K, R>
1075
+ : GetFieldTypeOfNarrowedByLcKR<T, L, K, R>
1076
+
1077
+ /** Internal. Assumes T has been narrowed. */
1078
+ type GetFieldTypeOfNarrowed<T, X, XT extends 'DotPath' | 'Key' | 'Path'> =
1079
+ XT extends 'Key' ? GetFieldTypeOfNarrowedByKey<T, X>
1080
+ : XT extends 'DotPath' ? GetFieldTypeOfNarrowedByDotPath<T, X>
1081
+ : X extends `${infer L}['${infer K}']${infer R}`
1082
+ ? GetFieldTypeOfNarrowedByLKR<T, L, K, R>
1083
+ : X extends `${infer L}["${infer K}"]${infer R}`
1084
+ ? GetFieldTypeOfNarrowedByLKR<T, L, K, R>
1085
+ : X extends `${infer L}[${infer K}]${infer R}`
1086
+ ? GetFieldTypeOfNarrowedByLKR<T, L, K, R>
1087
+ : GetFieldTypeOfNarrowedByDotPath<T, X>;
1088
+
1089
+ /** Internal. Assumes T has been narrowed to an object type. */
1090
+ type GetFieldTypeOfObject<T, X, XT extends 'DotPath' | 'Key' | 'Path'> =
1091
+ Extract<T, unknown[]> extends never
1092
+ ? GetFieldTypeOfNarrowed<T, X, XT>
1093
+ : GetFieldTypeOfNarrowed<Exclude<T, unknown[]>, X, XT>
1094
+ | GetFieldTypeOfNarrowed<Extract<T, unknown[]>, X, XT>;
1095
+
1096
+ /** Internal. Assumes T has been narrowed to a primitive type. */
1097
+ type GetFieldTypeOfPrimitive<T, X, XT extends 'DotPath' | 'Key' | 'Path'> =
1098
+ Extract<T, string> extends never
1099
+ ? T extends never ? never : undefined
1100
+ : (Exclude<T, string> extends never ? never : undefined)
1101
+ | GetFieldTypeOfNarrowed<Extract<T, string>, X, XT>;
1102
+
1103
+ /**
1104
+ * Deduces the type of value at the path P of type T,
1105
+ * so that _.get<T, P>(t: T, p: P): GetFieldType<T, P>.
1106
+ * XT specifies the exact meaning of X:
1107
+ * - 'Path' (default) - X is a path type to be fully parsed;
1108
+ * - 'DotPath - X is a dot-delimitered path, without square (indexing) brackets;
1109
+ * - 'Key' - X is a simple key, and needs no parsing.
1110
+ */
1111
+ type GetFieldType<T, X, XT extends 'DotPath' | 'Key' | 'Path' = 'Path'> =
1112
+ Extract<T, object> extends never
1113
+ ? GetFieldTypeOfPrimitive<T, X, XT>
1114
+ : GetFieldTypeOfPrimitive<Exclude<T, object>, X, XT>
1115
+ | GetFieldTypeOfObject<Extract<T, object>, X, XT>;
1059
1116
 
1060
1117
  interface LoDashStatic {
1061
1118
  /**
@@ -1083,11 +1140,11 @@ declare module "../index" {
1083
1140
  /**
1084
1141
  * @see _.get
1085
1142
  */
1086
- get<TObject extends object, TKey1 extends keyof TObject, TKey2 extends keyof TObject[TKey1]>(object: TObject | null | undefined, path: [TKey1, TKey2]): TObject[TKey1][TKey2] | undefined;
1143
+ get<TObject extends object, TKey1 extends keyof TObject, TKey2 extends keyof NonNullable<TObject[TKey1]>>(object: TObject | null | undefined, path: [TKey1, TKey2]): NonNullable<TObject[TKey1]>[TKey2] | undefined;
1087
1144
  /**
1088
1145
  * @see _.get
1089
1146
  */
1090
- get<TObject extends object, TKey1 extends keyof TObject, TKey2 extends keyof TObject[TKey1], TDefault>(object: TObject | null | undefined, path: [TKey1, TKey2], defaultValue: TDefault): Exclude<TObject[TKey1][TKey2], undefined> | TDefault;
1147
+ get<TObject extends object, TKey1 extends keyof TObject, TKey2 extends keyof NonNullable<TObject[TKey1]>, TDefault>(object: TObject | null | undefined, path: [TKey1, TKey2], defaultValue: TDefault): Exclude<NonNullable<TObject[TKey1]>[TKey2], undefined> | TDefault;
1091
1148
  /**
1092
1149
  * @see _.get
1093
1150
  */
@@ -1095,11 +1152,11 @@ declare module "../index" {
1095
1152
  /**
1096
1153
  * @see _.get
1097
1154
  */
1098
- get<TObject extends object, TKey1 extends keyof TObject, TKey2 extends keyof TObject[TKey1], TKey3 extends keyof TObject[TKey1][TKey2]>(object: TObject | null | undefined, path: [TKey1, TKey2, TKey3]): TObject[TKey1][TKey2][TKey3] | undefined;
1155
+ get<TObject extends object, TKey1 extends keyof TObject, TKey2 extends keyof NonNullable<TObject[TKey1]>, TKey3 extends keyof NonNullable<NonNullable<TObject[TKey1]>[TKey2]>>(object: TObject | null | undefined, path: [TKey1, TKey2, TKey3]): NonNullable<NonNullable<TObject[TKey1]>[TKey2]>[TKey3] | undefined;
1099
1156
  /**
1100
1157
  * @see _.get
1101
1158
  */
1102
- get<TObject extends object, TKey1 extends keyof TObject, TKey2 extends keyof TObject[TKey1], TKey3 extends keyof TObject[TKey1][TKey2], TDefault>(object: TObject | null | undefined, path: [TKey1, TKey2, TKey3], defaultValue: TDefault): Exclude<TObject[TKey1][TKey2][TKey3], undefined> | TDefault;
1159
+ get<TObject extends object, TKey1 extends keyof TObject, TKey2 extends keyof NonNullable<TObject[TKey1]>, TKey3 extends keyof NonNullable<NonNullable<TObject[TKey1]>[TKey2]>, TDefault>(object: TObject | null | undefined, path: [TKey1, TKey2, TKey3], defaultValue: TDefault): Exclude<NonNullable<NonNullable<TObject[TKey1]>[TKey2]>[TKey3], undefined> | TDefault;
1103
1160
  /**
1104
1161
  * @see _.get
1105
1162
  */
@@ -1107,11 +1164,11 @@ declare module "../index" {
1107
1164
  /**
1108
1165
  * @see _.get
1109
1166
  */
1110
- get<TObject extends object, TKey1 extends keyof TObject, TKey2 extends keyof TObject[TKey1], TKey3 extends keyof TObject[TKey1][TKey2], TKey4 extends keyof TObject[TKey1][TKey2][TKey3]>(object: TObject | null | undefined, path: [TKey1, TKey2, TKey3, TKey4]): TObject[TKey1][TKey2][TKey3][TKey4] | undefined;
1167
+ get<TObject extends object, TKey1 extends keyof TObject, TKey2 extends keyof NonNullable<TObject[TKey1]>, TKey3 extends keyof NonNullable<NonNullable<TObject[TKey1]>[TKey2]>, TKey4 extends keyof NonNullable<NonNullable<NonNullable<TObject[TKey1]>[TKey2]>[TKey3]>>(object: TObject | null | undefined, path: [TKey1, TKey2, TKey3, TKey4]): NonNullable<NonNullable<NonNullable<TObject[TKey1]>[TKey2]>[TKey3]>[TKey4] | undefined;
1111
1168
  /**
1112
1169
  * @see _.get
1113
1170
  */
1114
- get<TObject extends object, TKey1 extends keyof TObject, TKey2 extends keyof TObject[TKey1], TKey3 extends keyof TObject[TKey1][TKey2], TKey4 extends keyof TObject[TKey1][TKey2][TKey3], TDefault>(object: TObject | null | undefined, path: [TKey1, TKey2, TKey3, TKey4], defaultValue: TDefault): Exclude<TObject[TKey1][TKey2][TKey3][TKey4], undefined> | TDefault;
1171
+ get<TObject extends object, TKey1 extends keyof TObject, TKey2 extends keyof NonNullable<TObject[TKey1]>, TKey3 extends keyof NonNullable<NonNullable<TObject[TKey1]>[TKey2]>, TKey4 extends keyof NonNullable<NonNullable<NonNullable<TObject[TKey1]>[TKey2]>[TKey3]>, TDefault>(object: TObject | null | undefined, path: [TKey1, TKey2, TKey3, TKey4], defaultValue: TDefault): Exclude<NonNullable<NonNullable<NonNullable<TObject[TKey1]>[TKey2]>[TKey3]>[TKey4], undefined> | TDefault;
1115
1172
  /**
1116
1173
  * @see _.get
1117
1174
  */
lodash/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@types/lodash",
3
- "version": "4.17.5",
3
+ "version": "4.17.7",
4
4
  "description": "TypeScript definitions for lodash",
5
5
  "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/lodash",
6
6
  "license": "MIT",
@@ -55,6 +55,6 @@
55
55
  },
56
56
  "scripts": {},
57
57
  "dependencies": {},
58
- "typesPublisherContentHash": "74ebed2e7d6c57a170dd86cb86d1848722ce0a78369151c7ac087d43a7a6e2d5",
59
- "typeScriptVersion": "4.7"
58
+ "typesPublisherContentHash": "bfe2463828cc30244e31ef7b2555c36d16c840d293fe58f7533b2804c9fd409d",
59
+ "typeScriptVersion": "4.8"
60
60
  }