{"version":3,"file":"index.d.cts","names":["Primitive","UnionToIntersection","Union","Intersection","UnionToIntersection","KeysOfUnion","ObjectType","Record","emptyObjectSymbol","EmptyObject","IsEmptyObject","T","IsAny","T","NoInfer","IsAny","IsOptionalKeyOf","Type","Key","Record","IsOptionalKeyOf","OptionalKeysOf","Type","Key","OptionalKeysOf","RequiredKeysOf","Type","Exclude","RequiredKeysOf","HasRequiredKeys","BaseType","IsNever","T","IsNever","If","Type","IfBranch","ElseBranch","UnknownArray","If","IsAny","IsNever","Primitive","UnknownArray","BuiltIns","Date","RegExp","NonRecursiveType","Function","Promise","MapsSetsOrArrays","ReadonlyMap","WeakKey","WeakMap","ReadonlySet","WeakSet","IsBothExtends","BaseType","FirstType","SecondType","HasMultipleCallSignatures","T","IsNotFalse","IsPrimitive","Not","A","IfNotAnyOrNever","IfAny","IfNever","IsAnyOrNever","IsExactOptionalPropertyTypesEnabled","If","IsNever","OptionalKeysOf","UnknownArray","IsExactOptionalPropertyTypesEnabled","IfNotAnyOrNever","ArrayLength","T","UnknownArrayOrTuple","FirstArrayElement","TArray","StaticPartOfArray","Result","V","U","VariablePartOfArray","SetArrayAccess","IsReadonly","IsArrayReadonly","CollapseRestElement","_CollapseRestElement","ForwardAccumulator","BackwardAccumulator","Rest","Last","First","Whitespace","WordSeparators","AsciiPunctuation","IsFloat","T","Not","IsFloat","PositiveInfinity","NegativeInfinity","IsInteger","T","IsFloat","IsInteger","_Numeric","Zero","PositiveInfinity","NegativeInfinity","Finite","T","Integer","Float","NegativeFloat","Negative","NegativeInteger","NonNegative","NonNegativeInteger","IsNegative","tag","default","tag","TagContainer","Token","Tag","TagMetadata","PropertyKey","Tagged","Type","TagName","GetTagMetadata","UnwrapTagged","TaggedType","RemoveAllTags","T","ThisTag","Opaque","UnwrapOpaque","OpaqueType","default","Primitive","_Numeric","CollapseLiterals","IfNotAnyOrNever","IsNotFalse","IsPrimitive","IsNever","TagContainer","UnwrapTagged","LiteralCheck","T","LiteralType","U","LiteralChecks","LiteralUnionType","IsStringLiteral","S","_IsStringLiteral","Record","IsNumericLiteral","IsBooleanLiteral","IsSymbolLiteral","IsLiteralUnion","IsLiteral","IsNull","T","IsNull","IsUnknown","T","If","IfNotAnyOrNever","IsNegative","UnknownArray","TupleOf","Length","Fill","_TupleOf","L","Accumulator","Whitespace","TrimLeft","V","R","TrimRight","Trim","TupleOf","NegativeInfinity","PositiveInfinity","Trim","Whitespace","ToString","T","StringToNumber","S","StartsWith","SearchString","StringToArray","Result","R","F","StringLength","IsWhitespace","Rest","IsNumeric","SameLengthPositiveNumericStringGt","A","B","RestA","RestB","FirstA","FirstB","PositiveNumericCharacterGt","NumericString","PositiveNumericStringGt","Remain","HeadB","IsNever","Finite","NegativeInfinity","PositiveInfinity","UnknownArray","StringToNumber","IsAnyOrNever","NumberAbsolute","N","StringPositiveN","IsNumberLike","UnionMin","InternalUnionMin","T","UnionMax","InternalUnionMax","Exclude","ReverseSign","Simplify","T","KeyType","IsNever","IsEqual","A","B","_IsEqual","G","OmitIndexSignature","ObjectType","KeyType","Record","PickIndexSignature","ObjectType","KeyType","Record","OmitIndexSignature","PickIndexSignature","Simplify","SimpleMerge","Destination","Source","Key","Merge","Simplify","IsEqual","KeysOfUnion","RequiredKeysOf","Merge","OptionalKeysOf","IsAny","If","IsNever","FilterDefinedKeys","FilterOptionalKeys","MapsSetsOrArrays","NonRecursiveType","ToString","BuildObject","Key","Value","CopiedFrom","PropertyKey","Pick","NumberKey","IsPlainObject","T","ObjectValue","K","NumberK","UndefinedToOptional","Exclude","HomomorphicPick","Keys","P","Extract","ValueOfUnion","Union","ReadonlyKeysOfUnion","ApplyDefaultOptions","Options","Defaults","SpecifiedOptions","Required","Omit","Record","Partial","CollapseLiterals","If","IsNever","Or","A","B","_Or","If","CollapseRestElement","ApplyDefaultOptions","IfNotAnyOrNever","Not","IsAny","IsNever","Or","UnknownArray","AllExtendOptions","DefaultAllExtendOptions","AllExtend","TArray","Type","Options","_AllExtend","Required","First","Rest","AllExtend","And","A","B","NumberAbsolute","PositiveNumericStringGt","IsEqual","PositiveInfinity","NegativeInfinity","IsNegative","And","Or","GreaterThan","A","B","R","GreaterThan","GreaterThanOrEqual","A","B","GreaterThanOrEqual","LessThan","A","B","GreaterThan","LessThan","NegativeInfinity","PositiveInfinity","UnknownArray","TupleLength","T","TupleMax","A","Result","F","R","TupleMin","Simplify","RequiredFilter","Type","Key","OptionalFilter","EnforceOptional","ObjectType","Exclude","ApplyDefaultOptions","IsEqual","Filter","KeyType","ExcludeType","ExceptOptions","DefaultExceptOptions","Except","ObjectType","KeysType","Options","_Except","Required","Record","Partial","Except","If","IfNotAnyOrNever","IsAny","IsNever","RequireAtLeastOne","ObjectType","KeysType","_RequireAtLeastOne","Key","Pick","Required","Exclude","Partial","UnknownRecord","PropertyKey","Record","Except","Simplify","WritableArray","ArrayType","U","V","ReadonlyArray","Writable","BaseType","Keys","ReadonlyMap","KeyType","ValueType","Map","ReadonlySet","ItemType","Set","Pick","NonEmptyTuple","T","If","IfNotAnyOrNever","IsArrayReadonly","UnknownArray","ArrayTail","TArray","_ArrayTail","Result","Readonly","ConditionalSimplifyDeep","Type","ExcludeType","IncludeType","TypeKey","ConditionalSimplifyDeep","MapsSetsOrArrays","NonRecursiveType","SimplifyDeep","Type","ExcludeType","ConditionalSimplifyDeep","OmitIndexSignature","PickIndexSignature","Merge","FirstArrayElement","IsBothExtends","UnknownArrayOrTuple","EnforceOptional","NonEmptyTuple","ArrayTail","_ArrayTail","UnknownRecord","SimplifyDeep","UnknownArray","Writable","TArray","Key","SimplifyDeepExcludeArray","T","MergeDeepRecordProperty","Destination","Source","Options","MergeDeepInternalOptions","Exclude","MergeDeepOrReturn","DoMergeDeepRecord","MergeDeepRecord","PickRestTypeHelper","Tail","Type","PickRestType","OmitRestTypeHelper","Result","OmitRestType","TypeNumberOrType","PickRestTypeFlat","MergeDeepArrayOrTupleElements","DoMergeDeepTupleAndTupleRecursive","DestinationRestType","SourceRestType","MergeArrayTypeAndTuple","MergeTupleAndArrayType","MergeDeepTupleAndTupleRecursive","Tuple","ArrayType","MergeDeepTupleAndArrayRecursive","MergeDeepArrayAndTupleRecursive","ArrayMergeMode","ShouldSpread","DoMergeArrayOrTuple","Array","MergeDeepArrayRecursive","MergeDeepArrayOrTupleRecursive","MergeDeepArrayOrTuple","DefaultType","MergeDeepOptions","DefaultMergeDeepOptions","MergeDeepWithDefaultOptions","MergeDeep","IsNever","IsUnion","T","InternalIsUnion","U","NumberAbsolute","ReverseSign","PositiveInfinity","NegativeInfinity","IsNegative","LessThan","TupleOf","Subtract","A","B","SubtractPostChecks","AreNegative","SubtractPositives","R","SubtractIfAGreaterThanB","StaticPartOfArray","VariablePartOfArray","GreaterThanOrEqual","Subtract","UnknownArray","TupleOf","SplitFixedArrayByIndex","T","SplitIndex","V","U","SplitVariableArrayByIndex","T1","T2","SplitArrayByIndex","ArraySplice","Start","DeleteCount","Items","X","ValueOf","ObjectType","ValueType","IsNever","IsAny","ExtendsStrict","Left","Right","If","ApplyDefaultOptions","IsAny","IsNever","UnknownArray","IsTupleOptions","DefaultIsTupleOptions","IsTuple","TArray","Options","_IsTuple","Required","IsTuple","UnknownArray","IsAny","If","TupleToObject","TArray","Key","ExtendsStrict","IfNotAnyOrNever","TupleToObject","UnknownArray","ConditionalKeys","Base","Condition","_Base","_ConditionalKeys","Key","JoinableItem","NullishCoalesce","Value","Fallback","NonNullable","Join","Items","Delimiter","First","Tail","Head","Last","TupleOf","NumberAbsolute","TupleMax","ReverseSign","PositiveInfinity","NegativeInfinity","IsNegative","Subtract","Sum","A","B","SumPostChecks","AreNegative","SumPositives","Result","GreaterThan","LessThanOrEqual","A","B","Sum","LessThanOrEqual","GreaterThanOrEqual","GreaterThan","IsNegative","Not","TupleMin","IsEqual","And","ArraySplice","IsNever","ArraySlice","Array_","Start","End","_ArraySlice","VariableLengthArraySliceHelper","ArraySliceHelper","ArraySliceByPositiveIndex","TraversedElement","Result","ArrayLength","PositiveS","PositiveE","Array","AddResult","Except","TupleOf","ArrayLengthMutationKeys","FixedLengthArray","Element","Length","TupleOf","Subtract","IntRange","Start","End","Step","PrivateIntRange","Gap","List","EndLengthTuple","Exclude","ArrayIndices","Element","Partial","Exclude","NonRecursiveType","IsNever","IsUnion","Simplify","UnknownArray","SharedUnionFields","Union","ReadonlyMap","ReadonlySet","Extract","SkippedMembers","Exclude","RelevantMembers","Pick","NonRecursiveType","ReadonlyKeysOfUnion","ValueOfUnion","KeysOfUnion","SharedUnionFields","Simplify","UnknownArray","AllUnionFields","Union","ReadonlyMap","ReadonlySet","Extract","SkippedMembers","Exclude","RelevantMembers","P","AllExtend","IsLowercase","S","_IsLowercase","Accumulator","Rest","First","IsLowercaseHelper","Lowercase","Uppercase","Capitalize","AllExtend","IsUppercase","S","_IsUppercase","Accumulator","Rest","First","IsUppercaseHelper","Uppercase","Lowercase","Uncapitalize","ApplyDefaultOptions","IsNumeric","WordSeparators","IsLowercase","IsUppercase","SkipEmptyWord","Word","RemoveLastCharacter","Sentence","Character","LeftSide","WordsOptions","_DefaultWordsOptions","Words","Options","WordsImplementation","LastCharacter","CurrentWord","Required","RemainingCharacters","FirstCharacter","ApplyDefaultOptions","Words","WordsOptions","CamelCaseOptions","_DefaultCamelCaseOptions","CamelCaseFromArray","Options","OutputString","Required","FirstWord","Capitalize","RemainingWords","Lowercase","CamelCase","Type","Uppercase","Uncapitalize","And","ApplyDefaultOptions","Not","IsStringLiteral","Or","SplitOptions","DefaultSplitOptions","Split","S","Delimiter","Options","SplitHelper","Accumulator","Required","Tail","Head","LastArrayElement","Elements","ElementBeforeTailingSpreadElement","V","U","ReadonlyArray"],"sources":["../src/add.ts","../node_modules/type-fest/source/primitive.d.ts","../node_modules/type-fest/source/union-to-intersection.d.ts","../node_modules/type-fest/source/keys-of-union.d.ts","../node_modules/type-fest/source/empty-object.d.ts","../node_modules/type-fest/source/is-any.d.ts","../node_modules/type-fest/source/is-optional-key-of.d.ts","../node_modules/type-fest/source/optional-keys-of.d.ts","../node_modules/type-fest/source/required-keys-of.d.ts","../node_modules/type-fest/source/has-required-keys.d.ts","../node_modules/type-fest/source/is-never.d.ts","../node_modules/type-fest/source/if.d.ts","../node_modules/type-fest/source/unknown-array.d.ts","../node_modules/type-fest/source/internal/type.d.ts","../node_modules/type-fest/source/internal/array.d.ts","../node_modules/type-fest/source/internal/characters.d.ts","../node_modules/type-fest/source/is-float.d.ts","../node_modules/type-fest/source/is-integer.d.ts","../node_modules/type-fest/source/numeric.d.ts","../../../node_modules/tagged-tag/index.d.ts","../node_modules/type-fest/source/tagged.d.ts","../node_modules/type-fest/source/is-literal.d.ts","../node_modules/type-fest/source/is-null.d.ts","../node_modules/type-fest/source/is-unknown.d.ts","../node_modules/type-fest/source/tuple-of.d.ts","../node_modules/type-fest/source/trim.d.ts","../node_modules/type-fest/source/internal/string.d.ts","../node_modules/type-fest/source/internal/numeric.d.ts","../node_modules/type-fest/source/simplify.d.ts","../node_modules/type-fest/source/is-equal.d.ts","../node_modules/type-fest/source/omit-index-signature.d.ts","../node_modules/type-fest/source/pick-index-signature.d.ts","../node_modules/type-fest/source/merge.d.ts","../node_modules/type-fest/source/internal/object.d.ts","../node_modules/type-fest/source/or.d.ts","../node_modules/type-fest/source/all-extend.d.ts","../node_modules/type-fest/source/and.d.ts","../node_modules/type-fest/source/greater-than.d.ts","../node_modules/type-fest/source/greater-than-or-equal.d.ts","../node_modules/type-fest/source/less-than.d.ts","../node_modules/type-fest/source/internal/tuple.d.ts","../node_modules/type-fest/source/internal/enforce-optional.d.ts","../node_modules/type-fest/source/except.d.ts","../node_modules/type-fest/source/require-at-least-one.d.ts","../node_modules/type-fest/source/unknown-record.d.ts","../node_modules/type-fest/source/writable.d.ts","../node_modules/type-fest/source/non-empty-tuple.d.ts","../node_modules/type-fest/source/array-tail.d.ts","../node_modules/type-fest/source/conditional-simplify-deep.d.ts","../node_modules/type-fest/source/simplify-deep.d.ts","../node_modules/type-fest/source/merge-deep.d.ts","../node_modules/type-fest/source/is-union.d.ts","../node_modules/type-fest/source/subtract.d.ts","../node_modules/type-fest/source/array-splice.d.ts","../node_modules/type-fest/source/value-of.d.ts","../node_modules/type-fest/source/extends-strict.d.ts","../node_modules/type-fest/source/is-tuple.d.ts","../node_modules/type-fest/source/tuple-to-object.d.ts","../node_modules/type-fest/source/conditional-keys.d.ts","../node_modules/type-fest/source/join.d.ts","../node_modules/type-fest/source/sum.d.ts","../node_modules/type-fest/source/less-than-or-equal.d.ts","../node_modules/type-fest/source/array-slice.d.ts","../node_modules/type-fest/source/fixed-length-array.d.ts","../node_modules/type-fest/source/int-range.d.ts","../node_modules/type-fest/source/array-indices.d.ts","../node_modules/type-fest/source/shared-union-fields.d.ts","../node_modules/type-fest/source/all-union-fields.d.ts","../node_modules/type-fest/source/is-lowercase.d.ts","../node_modules/type-fest/source/is-uppercase.d.ts","../node_modules/type-fest/source/words.d.ts","../node_modules/type-fest/source/camel-case.d.ts","../node_modules/type-fest/source/split.d.ts","../node_modules/type-fest/source/last-array-element.d.ts","../src/internal/types/UpsertProp.ts","../src/addProp.ts","../src/allPass.ts","../src/anyPass.ts","../src/capitalize.ts","../src/ceil.ts","../src/internal/types/IntRangeInclusive.ts","../src/internal/types/IterableContainer.ts","../src/internal/types/NTuple.ts","../src/internal/types/NonEmptyArray.ts","../src/internal/types/PartialArray.ts","../src/internal/types/RemedaTypeError.ts","../src/internal/types/TupleParts.ts","../src/chunk.ts","../src/clamp.ts","../src/clone.ts","../src/concat.ts","../src/internal/types/GuardType.ts","../src/conditional.ts","../src/constant.ts","../src/internal/types/IsBounded.ts","../src/internal/types/IsBoundedRecord.ts","../src/internal/types/BoundedPartial.ts","../src/countBy.ts","../src/internal/types/StrictFunction.ts","../src/debounce.ts","../src/defaultTo.ts","../src/difference.ts","../src/differenceWith.ts","../src/divide.ts","../src/doNothing.ts","../src/internal/types/ClampedIntegerSubtract.ts","../src/internal/types/CoercedArray.ts","../src/drop.ts","../src/internal/purryOrderRules.ts","../src/dropFirstBy.ts","../src/dropLast.ts","../src/dropLastWhile.ts","../src/dropWhile.ts","../src/endsWith.ts","../src/internal/types/ToString.ts","../src/entries.ts","../src/evolve.ts","../src/internal/types/FilteredArray.ts","../src/filter.ts","../src/find.ts","../src/findIndex.ts","../src/findLast.ts","../src/findLastIndex.ts","../src/first.ts","../src/firstBy.ts","../src/flat.ts","../src/flatMap.ts","../src/floor.ts","../src/forEach.ts","../src/internal/types/EnumerableStringKeyOf.ts","../src/internal/types/EnumerableStringKeyedValueOf.ts","../src/forEachObj.ts","../src/fromEntries.ts","../src/fromKeys.ts","../src/funnel.ts","../src/groupBy.ts","../src/internal/types/ArrayRequiredPrefix.ts","../src/groupByProp.ts","../src/hasAtLeast.ts","../src/hasSubObject.ts","../src/identity.ts","../src/indexBy.ts","../src/intersection.ts","../src/intersectionWith.ts","../src/invert.ts","../src/internal/types/NarrowedTo.ts","../src/isArray.ts","../src/isBigInt.ts","../src/isBoolean.ts","../src/isDate.ts","../src/isDeepEqual.ts","../src/isDefined.ts","../src/isEmpty.ts","../src/internal/types/HasWritableKeys.ts","../src/isEmptyish.ts","../src/isError.ts","../src/isFunction.ts","../src/isIncludedIn.ts","../src/isNonNull.ts","../src/isNonNullish.ts","../src/isNot.ts","../src/isNullish.ts","../src/isNumber.ts","../src/isObjectType.ts","../src/isPlainObject.ts","../src/isPromise.ts","../src/isShallowEqual.ts","../src/isStrictEqual.ts","../src/isString.ts","../src/isSymbol.ts","../src/isTruthy.ts","../src/join.ts","../src/keys.ts","../src/last.ts","../src/length.ts","../src/internal/types/Mapped.ts","../src/map.ts","../src/mapKeys.ts","../src/mapToObj.ts","../src/mapValues.ts","../src/mapWithFeedback.ts","../src/mean.ts","../src/meanBy.ts","../src/median.ts","../src/merge.ts","../src/internal/types/DisjointUnionFields.ts","../src/mergeAll.ts","../src/mergeDeep.ts","../src/multiply.ts","../src/nthBy.ts","../src/objOf.ts","../src/internal/types/PartitionByUnion.ts","../src/internal/types/SimplifiedWritable.ts","../src/omit.ts","../src/omitBy.ts","../src/once.ts","../src/only.ts","../src/internal/types/TupleSplits.ts","../src/partialBind.ts","../src/partialLastBind.ts","../src/partition.ts","../src/pathOr.ts","../src/pick.ts","../src/pickBy.ts","../src/pipe.ts","../src/piped.ts","../src/product.ts","../src/internal/types/ArrayAt.ts","../src/prop.ts","../src/pullObject.ts","../src/internal/types/LazyResult.ts","../src/internal/types/LazyEvaluator.ts","../src/purry.ts","../src/randomBigInt.ts","../src/randomInteger.ts","../src/randomString.ts","../src/range.ts","../src/rankBy.ts","../src/reduce.ts","../src/reverse.ts","../src/round.ts","../src/sample.ts","../src/set.ts","../src/setPath.ts","../src/internal/types/ReorderedArray.ts","../src/shuffle.ts","../src/sliceString.ts","../src/sort.ts","../src/sortBy.ts","../src/sortedIndex.ts","../src/sortedIndexBy.ts","../src/sortedIndexWith.ts","../src/sortedLastIndex.ts","../src/sortedLastIndexBy.ts","../src/splice.ts","../src/split.ts","../src/splitAt.ts","../src/splitWhen.ts","../src/startsWith.ts","../src/stringToPath.ts","../src/subtract.ts","../src/sum.ts","../src/sumBy.ts","../src/swapIndices.ts","../src/swapProps.ts","../src/take.ts","../src/takeFirstBy.ts","../src/takeLast.ts","../src/takeLastWhile.ts","../src/takeWhile.ts","../src/tap.ts","../src/times.ts","../src/internal/types/OptionalOptionsWithDefaults.ts","../src/toCamelCase.ts","../src/toKebabCase.ts","../src/toLowerCase.ts","../src/toSnakeCase.ts","../src/toTitleCase.ts","../src/toUpperCase.ts","../src/internal/types/StringLength.ts","../src/truncate.ts","../src/uncapitalize.ts","../src/internal/types/Deduped.ts","../src/unique.ts","../src/uniqueBy.ts","../src/uniqueWith.ts","../src/values.ts","../src/when.ts","../src/zip.ts","../src/zipWith.ts"],"sourcesContent":["/**\nMatches any [primitive value](https://developer.mozilla.org/en-US/docs/Glossary/Primitive).\n\n@category Type\n*/\nexport type Primitive =\n\t| null\n\t| undefined\n\t| string\n\t| number\n\t| boolean\n\t| symbol\n\t| bigint;\n\nexport {};\n","/**\nConvert a union type to an intersection type using [distributive conditional types](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-8.html#distributive-conditional-types).\n\nInspired by [this Stack Overflow answer](https://stackoverflow.com/a/50375286/2172153).\n\n@example\n```\nimport type {UnionToIntersection} from 'type-fest';\n\ntype Union = {the(): void} | {great(arg: string): void} | {escape: boolean};\n\ntype Intersection = UnionToIntersection;\n//=> {the(): void; great(arg: string): void; escape: boolean};\n```\n\n@category Type\n*/\nexport type UnionToIntersection = (\n\t// `extends unknown` is always going to be the case and is used to convert the\n\t// `Union` into a [distributive conditional\n\t// type](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-8.html#distributive-conditional-types).\n\tUnion extends unknown\n\t\t// The union type is used as the only argument to a function since the union\n\t\t// of function arguments is an intersection.\n\t\t? (distributedUnion: Union) => void\n\t\t// This won't happen.\n\t\t: never\n\t\t// Infer the `Intersection` type since TypeScript represents the positional\n\t\t// arguments of unions of functions as an intersection of the union.\n) extends ((mergedIntersection: infer Intersection) => void)\n\t// The `& Union` is to ensure result of `UnionToIntersection` is always assignable to `A | B`\n\t? Intersection & Union\n\t: never;\n\nexport {};\n","import type {UnionToIntersection} from './union-to-intersection.d.ts';\n\n/**\nCreate a union of all keys from a given type, even those exclusive to specific union members.\n\nUnlike the native `keyof` keyword, which returns keys present in **all** union members, this type returns keys from **any** member.\n\n@link https://stackoverflow.com/a/49402091\n\n@example\n```\nimport type {KeysOfUnion} from 'type-fest';\n\ntype A = {\n\tcommon: string;\n\ta: number;\n};\n\ntype B = {\n\tcommon: string;\n\tb: string;\n};\n\ntype C = {\n\tcommon: string;\n\tc: boolean;\n};\n\ntype Union = A | B | C;\n\ntype CommonKeys = keyof Union;\n//=> 'common'\n\ntype AllKeys = KeysOfUnion;\n//=> 'common' | 'a' | 'b' | 'c'\n```\n\n@category Object\n*/\nexport type KeysOfUnion =\n // Hack to fix https://github.com/sindresorhus/type-fest/issues/1008\n keyof UnionToIntersection : never>;\n\nexport {};\n","declare const emptyObjectSymbol: unique symbol;\n\n/**\nRepresents a strictly empty plain object, the `{}` value.\n\nWhen you annotate something as the type `{}`, it can be anything except `null` and `undefined`. This means that you cannot use `{}` to represent an empty plain object ([read more](https://stackoverflow.com/questions/47339869/typescript-empty-object-and-any-difference/52193484#52193484)).\n\n@example\n```\nimport type {EmptyObject} from 'type-fest';\n\n// The following illustrates the problem with `{}`.\nconst foo1: {} = {}; // Pass\nconst foo2: {} = []; // Pass\nconst foo3: {} = 42; // Pass\nconst foo4: {} = {a: 1}; // Pass\n\n// With `EmptyObject` only the first case is valid.\nconst bar1: EmptyObject = {}; // Pass\n// @ts-expect-error\nconst bar2: EmptyObject = []; // Fail\n// @ts-expect-error\nconst bar3: EmptyObject = 42; // Fail\n// @ts-expect-error\nconst bar4: EmptyObject = {a: 1}; // Fail\n```\n\nUnfortunately, `Record`, `Record` and `Record` do not work. See {@link https://github.com/sindresorhus/type-fest/issues/395 #395}.\n\n@category Object\n*/\nexport type EmptyObject = {[emptyObjectSymbol]?: never};\n\n/**\nReturns a `boolean` for whether the type is strictly equal to an empty plain object, the `{}` value.\n\n@example\n```\nimport type {IsEmptyObject} from 'type-fest';\n\ntype Pass = IsEmptyObject<{}>; //=> true\ntype Fail1 = IsEmptyObject<[]>; //=> false\ntype Fail2 = IsEmptyObject; //=> false\n```\n\n@see {@link EmptyObject}\n@category Object\n*/\nexport type IsEmptyObject = T extends EmptyObject ? true : false;\n\nexport {};\n","/**\nReturns a boolean for whether the given type is `any`.\n\n@link https://stackoverflow.com/a/49928360/1490091\n\nUseful in type utilities, such as disallowing `any`s to be passed to a function.\n\n@example\n```\nimport type {IsAny} from 'type-fest';\n\nconst typedObject = {a: 1, b: 2} as const;\nconst anyObject: any = {a: 1, b: 2};\n\nfunction get extends true ? {} : Record), K extends keyof O = keyof O>(object: O, key: K) {\n\treturn object[key];\n}\n\nconst typedA = get(typedObject, 'a');\n//=> 1\n\nconst anyA = get(anyObject, 'a');\n//=> any\n```\n\n@category Type Guard\n@category Utilities\n*/\nexport type IsAny = 0 extends 1 & NoInfer ? true : false;\n\nexport {};\n","import type {IsAny} from './is-any.d.ts';\n\n/**\nReturns a boolean for whether the given key is an optional key of type.\n\nThis is useful when writing utility types or schema validators that need to differentiate `optional` keys.\n\n@example\n```\nimport type {IsOptionalKeyOf} from 'type-fest';\n\ntype User = {\n\tname: string;\n\tsurname: string;\n\n\tluckyNumber?: number;\n};\n\ntype Admin = {\n\tname: string;\n\tsurname?: string;\n};\n\ntype T1 = IsOptionalKeyOf;\n//=> true\n\ntype T2 = IsOptionalKeyOf;\n//=> false\n\ntype T3 = IsOptionalKeyOf;\n//=> boolean\n\ntype T4 = IsOptionalKeyOf;\n//=> false\n\ntype T5 = IsOptionalKeyOf;\n//=> boolean\n```\n\n@category Type Guard\n@category Utilities\n*/\nexport type IsOptionalKeyOf =\n\tIsAny extends true ? never\n\t\t: Key extends keyof Type\n\t\t\t? Type extends Record\n\t\t\t\t? false\n\t\t\t\t: true\n\t\t\t: false;\n\nexport {};\n","import type {IsOptionalKeyOf} from './is-optional-key-of.d.ts';\n\n/**\nExtract all optional keys from the given type.\n\nThis is useful when you want to create a new type that contains different type values for the optional keys only.\n\n@example\n```\nimport type {OptionalKeysOf, Except} from 'type-fest';\n\ntype User = {\n\tname: string;\n\tsurname: string;\n\n\tluckyNumber?: number;\n};\n\nconst REMOVE_FIELD = Symbol('remove field symbol');\ntype UpdateOperation = Except, OptionalKeysOf> & {\n\t[Key in OptionalKeysOf]?: Entity[Key] | typeof REMOVE_FIELD;\n};\n\nconst update1: UpdateOperation = {\n\tname: 'Alice',\n};\n\nconst update2: UpdateOperation = {\n\tname: 'Bob',\n\tluckyNumber: REMOVE_FIELD,\n};\n```\n\n@category Utilities\n*/\nexport type OptionalKeysOf =\n\tType extends unknown // For distributing `Type`\n\t\t? (keyof {[Key in keyof Type as\n\t\t\tIsOptionalKeyOf extends false\n\t\t\t\t? never\n\t\t\t\t: Key\n\t\t\t]: never\n\t\t}) & keyof Type // Intersect with `keyof Type` to ensure result of `OptionalKeysOf` is always assignable to `keyof Type`\n\t\t: never; // Should never happen\n\nexport {};\n","import type {OptionalKeysOf} from './optional-keys-of.d.ts';\n\n/**\nExtract all required keys from the given type.\n\nThis is useful when you want to create a new type that contains different type values for the required keys only or use the list of keys for validation purposes, etc...\n\n@example\n```\nimport type {RequiredKeysOf} from 'type-fest';\n\ndeclare function createValidation<\n\tEntity extends object,\n\tKey extends RequiredKeysOf = RequiredKeysOf,\n>(field: Key, validator: (value: Entity[Key]) => boolean): (entity: Entity) => boolean;\n\ntype User = {\n\tname: string;\n\tsurname: string;\n\tluckyNumber?: number;\n};\n\nconst validator1 = createValidation('name', value => value.length < 25);\nconst validator2 = createValidation('surname', value => value.length < 25);\n\n// @ts-expect-error\nconst validator3 = createValidation('luckyNumber', value => value > 0);\n// Error: Argument of type '\"luckyNumber\"' is not assignable to parameter of type '\"name\" | \"surname\"'.\n```\n\n@category Utilities\n*/\nexport type RequiredKeysOf =\n\tType extends unknown // For distributing `Type`\n\t\t? Exclude>\n\t\t: never; // Should never happen\n\nexport {};\n","import type {RequiredKeysOf} from './required-keys-of.d.ts';\n\n/**\nCreates a type that represents `true` or `false` depending on whether the given type has any required fields.\n\nThis is useful when you want to create an API whose behavior depends on the presence or absence of required fields.\n\n@example\n```\nimport type {HasRequiredKeys} from 'type-fest';\n\ntype GeneratorOptions