type-plus 3.14.0 → 4.0.1
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.
- package/README.md +2 -59
- package/{lib → cjs}/ComposableTypes.d.ts +0 -0
- package/{lib → cjs}/ComposableTypes.js +0 -0
- package/cjs/ComposableTypes.js.map +1 -0
- package/{lib → cjs}/JSONTypes.d.ts +0 -0
- package/{lib → cjs}/JSONTypes.js +0 -0
- package/cjs/JSONTypes.js.map +1 -0
- package/{lib → cjs}/PrimitiveTypes.d.ts +0 -0
- package/{lib → cjs}/PrimitiveTypes.js +0 -0
- package/cjs/PrimitiveTypes.js.map +1 -0
- package/{lib → cjs}/UnionKeys.d.ts +0 -0
- package/{lib → cjs}/UnionKeys.js +0 -0
- package/cjs/UnionKeys.js.map +1 -0
- package/{lib → cjs}/array/CommonPropKeys.d.ts +0 -0
- package/{lib → cjs}/array/CommonPropKeys.js +0 -0
- package/cjs/array/CommonPropKeys.js.map +1 -0
- package/{lib → cjs}/array/Concat.d.ts +0 -0
- package/{lib → cjs}/array/Concat.js +0 -0
- package/cjs/array/Concat.js.map +1 -0
- package/{lib → cjs}/array/CreateTuple.d.ts +0 -0
- package/{lib → cjs}/array/CreateTuple.js +0 -0
- package/cjs/array/CreateTuple.js.map +1 -0
- package/{lib → cjs}/array/DropFirst.d.ts +0 -0
- package/{lib → cjs}/array/DropFirst.js +0 -0
- package/cjs/array/DropFirst.js.map +1 -0
- package/{lib → cjs}/array/DropLast.d.ts +0 -0
- package/{lib → cjs}/array/DropLast.js +0 -0
- package/cjs/array/DropLast.js.map +1 -0
- package/{lib → cjs}/array/Filter.d.ts +0 -0
- package/{lib → cjs}/array/Filter.js +0 -0
- package/cjs/array/Filter.js.map +1 -0
- package/{lib → cjs}/array/FindFirst.d.ts +0 -0
- package/{lib → cjs}/array/FindFirst.js +0 -0
- package/cjs/array/FindFirst.js.map +1 -0
- package/{lib → cjs}/array/FindLast.d.ts +0 -0
- package/{lib → cjs}/array/FindLast.js +0 -0
- package/cjs/array/FindLast.js.map +1 -0
- package/{lib → cjs}/array/Head.d.ts +0 -0
- package/{lib → cjs}/array/Head.js +0 -0
- package/cjs/array/Head.js.map +1 -0
- package/{lib → cjs}/array/IntersectOfProps.d.ts +0 -0
- package/{lib → cjs}/array/IntersectOfProps.js +0 -0
- package/cjs/array/IntersectOfProps.js.map +1 -0
- package/{lib → cjs}/array/IsArray.d.ts +0 -0
- package/{lib → cjs}/array/IsArray.js +0 -0
- package/cjs/array/IsArray.js.map +1 -0
- package/{lib → cjs}/array/PadLeft.d.ts +0 -0
- package/{lib → cjs}/array/PadLeft.js +0 -0
- package/cjs/array/PadLeft.js.map +1 -0
- package/{lib → cjs}/array/Reverse.d.ts +0 -0
- package/{lib → cjs}/array/Reverse.js +0 -0
- package/cjs/array/Reverse.js.map +1 -0
- package/{lib → cjs}/array/Some.d.ts +0 -0
- package/{lib → cjs}/array/Some.js +0 -0
- package/cjs/array/Some.js.map +1 -0
- package/{lib → cjs}/array/Tail.d.ts +0 -0
- package/{lib → cjs}/array/Tail.js +0 -0
- package/cjs/array/Tail.js.map +1 -0
- package/{lib → cjs}/array/UnionOfProps.d.ts +0 -0
- package/{lib → cjs}/array/UnionOfProps.js +0 -0
- package/cjs/array/UnionOfProps.js.map +1 -0
- package/{lib → cjs}/array/UnionOfValues.d.ts +0 -0
- package/{lib → cjs}/array/UnionOfValues.js +0 -0
- package/cjs/array/UnionOfValues.js.map +1 -0
- package/cjs/array/index.d.ts +19 -0
- package/cjs/array/index.js +15 -0
- package/cjs/array/index.js.map +1 -0
- package/{lib → cjs}/array/literalArray.d.ts +0 -0
- package/{lib → cjs}/array/literalArray.js +0 -0
- package/cjs/array/literalArray.js.map +1 -0
- package/{lib → cjs}/array/reduceWhile.d.ts +0 -0
- package/{lib → cjs}/array/reduceWhile.js +0 -0
- package/cjs/array/reduceWhile.js.map +1 -0
- package/{lib → cjs}/assertion/assertType.d.ts +0 -0
- package/{lib → cjs}/assertion/assertType.js +0 -0
- package/cjs/assertion/assertType.js.map +1 -0
- package/{lib → cjs}/assertion/index.d.ts +0 -0
- package/{lib → cjs}/assertion/index.js +0 -0
- package/cjs/assertion/index.js.map +1 -0
- package/{lib → cjs}/class/AnyConstructor.d.ts +0 -0
- package/{lib → cjs}/class/AnyConstructor.js +0 -0
- package/cjs/class/AnyConstructor.js.map +1 -0
- package/cjs/class/index.d.ts +2 -0
- package/cjs/class/index.js +14 -0
- package/cjs/class/index.js.map +1 -0
- package/{lib → cjs}/class/isConstructor.d.ts +0 -0
- package/{lib → cjs}/class/isConstructor.js +0 -0
- package/cjs/class/isConstructor.js.map +1 -0
- package/{lib → cjs}/function/AnyFunction.d.ts +0 -0
- package/{lib → cjs}/function/AnyFunction.js +0 -0
- package/cjs/function/AnyFunction.js.map +1 -0
- package/cjs/function/index.d.ts +1 -0
- package/cjs/function/index.js +3 -0
- package/cjs/function/index.js.map +1 -0
- package/{lib → cjs}/functional/ChainFn.d.ts +0 -0
- package/{lib → cjs}/functional/ChainFn.js +0 -0
- package/cjs/functional/ChainFn.js.map +1 -0
- package/cjs/functional/index.d.ts +1 -0
- package/cjs/functional/index.js +3 -0
- package/cjs/functional/index.js.map +1 -0
- package/cjs/index.d.ts +17 -0
- package/cjs/index.js +32 -0
- package/cjs/index.js.map +1 -0
- package/{lib → cjs}/math/Abs.d.ts +0 -0
- package/{lib → cjs}/math/Abs.js +0 -0
- package/cjs/math/Abs.js.map +1 -0
- package/{lib → cjs}/math/Add.d.ts +0 -0
- package/{lib → cjs}/math/Add.js +0 -0
- package/cjs/math/Add.js.map +1 -0
- package/{lib → cjs}/math/Digit.d.ts +0 -0
- package/{lib → cjs}/math/Digit.js +0 -0
- package/cjs/math/Digit.js.map +1 -0
- package/{lib → cjs}/math/GreaterThan.d.ts +0 -0
- package/{lib → cjs}/math/GreaterThan.js +0 -0
- package/cjs/math/GreaterThan.js.map +1 -0
- package/{lib → cjs}/math/IsPositive.d.ts +0 -0
- package/{lib → cjs}/math/IsPositive.js +0 -0
- package/cjs/math/IsPositive.js.map +1 -0
- package/{lib → cjs}/math/IsWhole.d.ts +0 -0
- package/{lib → cjs}/math/IsWhole.js +0 -0
- package/cjs/math/IsWhole.js.map +1 -0
- package/{lib → cjs}/math/Max.d.ts +0 -0
- package/{lib → cjs}/math/Max.js +0 -0
- package/cjs/math/Max.js.map +1 -0
- package/{lib → cjs}/math/Subtract.d.ts +0 -0
- package/{lib → cjs}/math/Subtract.js +0 -0
- package/cjs/math/Subtract.js.map +1 -0
- package/cjs/math/index.d.ts +7 -0
- package/cjs/math/index.js +3 -0
- package/cjs/math/index.js.map +1 -0
- package/cjs/nodejs/index.d.ts +1 -0
- package/cjs/nodejs/index.js +14 -0
- package/cjs/nodejs/index.js.map +1 -0
- package/cjs/nodejs/isNodeError.d.ts +31 -0
- package/cjs/nodejs/isNodeError.js +13 -0
- package/cjs/nodejs/isNodeError.js.map +1 -0
- package/{lib → cjs}/nominal-types/Brand.d.ts +0 -0
- package/{lib → cjs}/nominal-types/Brand.js +0 -0
- package/cjs/nominal-types/Brand.js.map +1 -0
- package/{lib → cjs}/nominal-types/Flavor.d.ts +0 -0
- package/{lib → cjs}/nominal-types/Flavor.js +0 -0
- package/cjs/nominal-types/Flavor.js.map +1 -0
- package/{lib → cjs}/nominal-types/index.d.ts +0 -0
- package/{lib → cjs}/nominal-types/index.js +0 -0
- package/cjs/nominal-types/index.js.map +1 -0
- package/{lib → cjs}/nominal-types/nominalMatch.d.ts +0 -0
- package/{lib → cjs}/nominal-types/nominalMatch.js +0 -0
- package/cjs/nominal-types/nominalMatch.js.map +1 -0
- package/{lib → cjs}/nominal-types/types.d.ts +0 -0
- package/{lib → cjs}/nominal-types/types.js +0 -0
- package/cjs/nominal-types/types.js.map +1 -0
- package/{lib → cjs}/object/ANotB.d.ts +0 -0
- package/{lib → cjs}/object/ANotB.js +0 -0
- package/cjs/object/ANotB.js.map +1 -0
- package/{lib → cjs}/object/AnyRecord.d.ts +0 -0
- package/{lib → cjs}/object/AnyRecord.js +0 -0
- package/cjs/object/AnyRecord.js.map +1 -0
- package/{lib → cjs}/object/ExcludePropType.d.ts +0 -0
- package/{lib → cjs}/object/ExcludePropType.js +0 -0
- package/cjs/object/ExcludePropType.js.map +1 -0
- package/{lib → cjs}/object/IsDisjoint.d.ts +0 -0
- package/{lib → cjs}/object/IsDisjoint.js +0 -0
- package/cjs/object/IsDisjoint.js.map +1 -0
- package/{lib → cjs}/object/IsRecord.d.ts +0 -0
- package/{lib → cjs}/object/IsRecord.js +0 -0
- package/cjs/object/IsRecord.js.map +1 -0
- package/{lib → cjs}/object/KeyTypes.d.ts +0 -0
- package/{lib → cjs}/object/KeyTypes.js +0 -0
- package/cjs/object/KeyTypes.js.map +1 -0
- package/{lib → cjs}/object/KeyofOptional.d.ts +0 -0
- package/{lib → cjs}/object/KeyofOptional.js +0 -0
- package/cjs/object/KeyofOptional.js.map +1 -0
- package/{lib → cjs}/object/KeysWithDiffType.d.ts +0 -0
- package/{lib → cjs}/object/KeysWithDiffType.js +0 -0
- package/cjs/object/KeysWithDiffType.js.map +1 -0
- package/{lib → cjs}/object/KnownKeys.d.ts +0 -0
- package/{lib → cjs}/object/KnownKeys.js +0 -0
- package/cjs/object/KnownKeys.js.map +1 -0
- package/{lib → cjs}/object/OptionalKeys.d.ts +0 -0
- package/{lib → cjs}/object/OptionalKeys.js +0 -0
- package/cjs/object/OptionalKeys.js.map +1 -0
- package/{lib → cjs}/object/Partial.d.ts +0 -0
- package/{lib → cjs}/object/Partial.js +0 -0
- package/cjs/object/Partial.js.map +1 -0
- package/{lib → cjs}/object/RecursiveIntersect.d.ts +0 -0
- package/{lib → cjs}/object/RecursiveIntersect.js +0 -0
- package/cjs/object/RecursiveIntersect.js.map +1 -0
- package/{lib → cjs}/object/RecursivePartial.d.ts +0 -0
- package/{lib → cjs}/object/RecursivePartial.js +0 -0
- package/cjs/object/RecursivePartial.js.map +1 -0
- package/{lib → cjs}/object/RecursiveRequired.d.ts +0 -0
- package/{lib → cjs}/object/RecursiveRequired.js +0 -0
- package/cjs/object/RecursiveRequired.js.map +1 -0
- package/{lib → cjs}/object/Required.d.ts +0 -0
- package/{lib → cjs}/object/Required.js +0 -0
- package/cjs/object/Required.js.map +1 -0
- package/{lib → cjs}/object/RequiredKeys.d.ts +0 -0
- package/{lib → cjs}/object/RequiredKeys.js +0 -0
- package/cjs/object/RequiredKeys.js.map +1 -0
- package/{lib → cjs}/object/SpreadRecord.d.ts +0 -0
- package/{lib → cjs}/object/SpreadRecord.js +0 -0
- package/cjs/object/SpreadRecord.js.map +1 -0
- package/{lib → cjs}/object/ValueOf.d.ts +0 -0
- package/{lib → cjs}/object/ValueOf.js +0 -0
- package/cjs/object/ValueOf.js.map +1 -0
- package/{lib → cjs}/object/everyKey.d.ts +0 -0
- package/{lib → cjs}/object/everyKey.js +0 -0
- package/cjs/object/everyKey.js.map +1 -0
- package/{lib → cjs}/object/facade.d.ts +0 -0
- package/{lib → cjs}/object/facade.js +0 -0
- package/cjs/object/facade.js.map +1 -0
- package/{lib → cjs}/object/filterKey.d.ts +0 -0
- package/{lib → cjs}/object/filterKey.js +0 -0
- package/cjs/object/filterKey.js.map +1 -0
- package/{lib → cjs}/object/findKey.d.ts +0 -0
- package/{lib → cjs}/object/findKey.js +0 -0
- package/cjs/object/findKey.js.map +1 -0
- package/{lib → cjs}/object/forEachKey.d.ts +0 -0
- package/{lib → cjs}/object/forEachKey.js +0 -0
- package/cjs/object/forEachKey.js.map +1 -0
- package/{lib → cjs}/object/getField.d.ts +0 -0
- package/{lib → cjs}/object/getField.js +0 -0
- package/cjs/object/getField.js.map +1 -0
- package/{lib → cjs}/object/hasKey.d.ts +0 -0
- package/{lib → cjs}/object/hasKey.js +0 -0
- package/cjs/object/hasKey.js.map +1 -0
- package/{lib → cjs}/object/hasProperty.d.ts +0 -0
- package/{lib → cjs}/object/hasProperty.js +0 -0
- package/cjs/object/hasProperty.js.map +1 -0
- package/cjs/object/index.d.ts +34 -0
- package/cjs/object/index.js +29 -0
- package/cjs/object/index.js.map +1 -0
- package/{lib → cjs}/object/mapKey.d.ts +0 -0
- package/{lib → cjs}/object/mapKey.js +0 -0
- package/cjs/object/mapKey.js.map +1 -0
- package/{lib → cjs}/object/mapProperties.d.ts +0 -0
- package/{lib → cjs}/object/mapProperties.js +0 -0
- package/cjs/object/mapProperties.js.map +1 -0
- package/{lib → cjs}/object/omit.d.ts +0 -0
- package/{lib → cjs}/object/omit.js +0 -0
- package/cjs/object/omit.js.map +1 -0
- package/{lib → cjs}/object/pick.d.ts +0 -0
- package/{lib → cjs}/object/pick.js +0 -0
- package/cjs/object/pick.js.map +1 -0
- package/{lib → cjs}/object/reduceKey.d.ts +0 -0
- package/{lib → cjs}/object/reduceKey.js +0 -0
- package/cjs/object/reduceKey.js.map +1 -0
- package/{lib → cjs}/object/replaceProperty.d.ts +0 -0
- package/{lib → cjs}/object/replaceProperty.js +0 -0
- package/cjs/object/replaceProperty.js.map +1 -0
- package/{lib → cjs}/object/someKey.d.ts +0 -0
- package/{lib → cjs}/object/someKey.js +0 -0
- package/cjs/object/someKey.js.map +1 -0
- package/{lib → cjs}/object/typeOverrideIncompatible.d.ts +0 -0
- package/{lib → cjs}/object/typeOverrideIncompatible.js +0 -0
- package/cjs/object/typeOverrideIncompatible.js.map +1 -0
- package/cjs/predicates/CanAssign.d.ts +9 -0
- package/{lib → cjs}/predicates/CanAssign.js +0 -0
- package/cjs/predicates/CanAssign.js.map +1 -0
- package/{lib → cjs}/predicates/Equal.d.ts +0 -0
- package/{lib → cjs}/predicates/Equal.js +0 -0
- package/cjs/predicates/Equal.js.map +1 -0
- package/{lib → cjs}/predicates/Extends.d.ts +0 -0
- package/{lib → cjs}/predicates/Extends.js +0 -0
- package/cjs/predicates/Extends.js.map +1 -0
- package/{lib → cjs}/predicates/If.d.ts +0 -0
- package/{lib → cjs}/predicates/If.js +0 -0
- package/cjs/predicates/If.js.map +1 -0
- package/{lib/predicates/isEmptyObject.d.ts → cjs/predicates/IsEmptyObject.d.ts} +0 -0
- package/cjs/predicates/IsEmptyObject.js +3 -0
- package/cjs/predicates/IsEmptyObject.js.map +1 -0
- package/cjs/predicates/index.d.ts +11 -0
- package/cjs/predicates/index.js +15 -0
- package/cjs/predicates/index.js.map +1 -0
- package/{lib → cjs}/predicates/isType.d.ts +0 -0
- package/{lib → cjs}/predicates/isType.js +0 -0
- package/cjs/predicates/isType.js.map +1 -0
- package/{lib → cjs}/predicates/logical.d.ts +0 -0
- package/{lib → cjs}/predicates/logical.js +0 -0
- package/cjs/predicates/logical.js.map +1 -0
- package/{lib → cjs}/promise/PromiseValue.d.ts +0 -0
- package/{lib → cjs}/promise/PromiseValue.js +0 -0
- package/cjs/promise/PromiseValue.js.map +1 -0
- package/{lib → cjs}/promise/PromiseValueMerge.d.ts +0 -0
- package/{lib → cjs}/promise/PromiseValueMerge.js +0 -0
- package/cjs/promise/PromiseValueMerge.js.map +1 -0
- package/cjs/promise/index.d.ts +4 -0
- package/cjs/promise/index.js +15 -0
- package/cjs/promise/index.js.map +1 -0
- package/{lib → cjs}/promise/isPromise.d.ts +0 -0
- package/{lib → cjs}/promise/isPromise.js +0 -0
- package/cjs/promise/isPromise.js.map +1 -0
- package/{lib → cjs}/promise/mapSeries.d.ts +0 -0
- package/{lib → cjs}/promise/mapSeries.js +0 -0
- package/cjs/promise/mapSeries.js.map +1 -0
- package/{lib → cjs}/utils/Widen.d.ts +0 -0
- package/{lib → cjs}/utils/Widen.js +0 -0
- package/cjs/utils/Widen.js.map +1 -0
- package/{lib → cjs}/utils/as.d.ts +0 -0
- package/{lib → cjs}/utils/as.js +0 -0
- package/cjs/utils/as.js.map +1 -0
- package/cjs/utils/index.d.ts +2 -0
- package/cjs/utils/index.js +14 -0
- package/cjs/utils/index.js.map +1 -0
- package/{libm → esm}/ComposableTypes.js +0 -0
- package/esm/ComposableTypes.js.map +1 -0
- package/{libm → esm}/JSONTypes.js +0 -0
- package/esm/JSONTypes.js.map +1 -0
- package/{libm → esm}/PrimitiveTypes.js +0 -0
- package/esm/PrimitiveTypes.js.map +1 -0
- package/{libm → esm}/UnionKeys.js +0 -0
- package/esm/UnionKeys.js.map +1 -0
- package/{libm → esm}/array/CommonPropKeys.js +0 -0
- package/esm/array/CommonPropKeys.js.map +1 -0
- package/{libm → esm}/array/Concat.js +0 -0
- package/esm/array/Concat.js.map +1 -0
- package/{libm → esm}/array/CreateTuple.js +0 -0
- package/esm/array/CreateTuple.js.map +1 -0
- package/{libm → esm}/array/DropFirst.js +0 -0
- package/esm/array/DropFirst.js.map +1 -0
- package/{libm → esm}/array/DropLast.js +0 -0
- package/esm/array/DropLast.js.map +1 -0
- package/{libm → esm}/array/Filter.js +0 -0
- package/esm/array/Filter.js.map +1 -0
- package/{libm → esm}/array/FindFirst.js +0 -0
- package/esm/array/FindFirst.js.map +1 -0
- package/{libm → esm}/array/FindLast.js +0 -0
- package/esm/array/FindLast.js.map +1 -0
- package/{libm → esm}/array/Head.js +0 -0
- package/esm/array/Head.js.map +1 -0
- package/{libm → esm}/array/IntersectOfProps.js +0 -0
- package/esm/array/IntersectOfProps.js.map +1 -0
- package/{libm → esm}/array/IsArray.js +0 -0
- package/esm/array/IsArray.js.map +1 -0
- package/{libm → esm}/array/PadLeft.js +0 -0
- package/esm/array/PadLeft.js.map +1 -0
- package/{libm → esm}/array/Reverse.js +0 -0
- package/esm/array/Reverse.js.map +1 -0
- package/{libm → esm}/array/Some.js +0 -0
- package/esm/array/Some.js.map +1 -0
- package/{libm → esm}/array/Tail.js +0 -0
- package/esm/array/Tail.js.map +1 -0
- package/{libm → esm}/array/UnionOfProps.js +0 -0
- package/esm/array/UnionOfProps.js.map +1 -0
- package/{libm → esm}/array/UnionOfValues.js +0 -0
- package/esm/array/UnionOfValues.js.map +1 -0
- package/esm/array/index.js +3 -0
- package/esm/array/index.js.map +1 -0
- package/{libm → esm}/array/literalArray.js +0 -0
- package/esm/array/literalArray.js.map +1 -0
- package/{libm → esm}/array/reduceWhile.js +0 -0
- package/esm/array/reduceWhile.js.map +1 -0
- package/{libm → esm}/assertion/assertType.js +0 -0
- package/esm/assertion/assertType.js.map +1 -0
- package/{libm → esm}/assertion/index.js +0 -0
- package/esm/assertion/index.js.map +1 -0
- package/{libm → esm}/class/AnyConstructor.js +0 -0
- package/esm/class/AnyConstructor.js.map +1 -0
- package/esm/class/index.js +2 -0
- package/esm/class/index.js.map +1 -0
- package/{libm → esm}/class/isConstructor.js +0 -0
- package/esm/class/isConstructor.js.map +1 -0
- package/{libm → esm}/function/AnyFunction.js +0 -0
- package/esm/function/AnyFunction.js.map +1 -0
- package/esm/function/index.js +2 -0
- package/esm/function/index.js.map +1 -0
- package/{libm → esm}/functional/ChainFn.js +0 -0
- package/esm/functional/ChainFn.js.map +1 -0
- package/esm/functional/index.js +2 -0
- package/esm/functional/index.js.map +1 -0
- package/esm/index.js +17 -0
- package/esm/index.js.map +1 -0
- package/{libm → esm}/math/Abs.js +0 -0
- package/esm/math/Abs.js.map +1 -0
- package/{libm → esm}/math/Add.js +0 -0
- package/esm/math/Add.js.map +1 -0
- package/{libm → esm}/math/Digit.js +0 -0
- package/esm/math/Digit.js.map +1 -0
- package/{libm → esm}/math/GreaterThan.js +0 -0
- package/esm/math/GreaterThan.js.map +1 -0
- package/{libm → esm}/math/IsPositive.js +0 -0
- package/esm/math/IsPositive.js.map +1 -0
- package/{libm → esm}/math/IsWhole.js +0 -0
- package/esm/math/IsWhole.js.map +1 -0
- package/{libm → esm}/math/Max.js +0 -0
- package/esm/math/Max.js.map +1 -0
- package/{libm → esm}/math/Subtract.js +0 -0
- package/esm/math/Subtract.js.map +1 -0
- package/esm/math/index.js +2 -0
- package/esm/math/index.js.map +1 -0
- package/esm/nodejs/index.js +2 -0
- package/esm/nodejs/index.js.map +1 -0
- package/esm/nodejs/isNodeError.js +9 -0
- package/esm/nodejs/isNodeError.js.map +1 -0
- package/{libm → esm}/nominal-types/Brand.js +0 -0
- package/esm/nominal-types/Brand.js.map +1 -0
- package/{libm → esm}/nominal-types/Flavor.js +0 -0
- package/esm/nominal-types/Flavor.js.map +1 -0
- package/{libm → esm}/nominal-types/index.js +0 -0
- package/esm/nominal-types/index.js.map +1 -0
- package/{libm → esm}/nominal-types/nominalMatch.js +0 -0
- package/esm/nominal-types/nominalMatch.js.map +1 -0
- package/{libm → esm}/nominal-types/types.js +0 -0
- package/esm/nominal-types/types.js.map +1 -0
- package/{libm → esm}/object/ANotB.js +0 -0
- package/esm/object/ANotB.js.map +1 -0
- package/{libm → esm}/object/AnyRecord.js +0 -0
- package/esm/object/AnyRecord.js.map +1 -0
- package/{libm → esm}/object/ExcludePropType.js +0 -0
- package/esm/object/ExcludePropType.js.map +1 -0
- package/{libm → esm}/object/IsDisjoint.js +0 -0
- package/esm/object/IsDisjoint.js.map +1 -0
- package/{libm → esm}/object/IsRecord.js +0 -0
- package/esm/object/IsRecord.js.map +1 -0
- package/{libm → esm}/object/KeyTypes.js +0 -0
- package/esm/object/KeyTypes.js.map +1 -0
- package/{libm → esm}/object/KeyofOptional.js +0 -0
- package/esm/object/KeyofOptional.js.map +1 -0
- package/{libm → esm}/object/KeysWithDiffType.js +0 -0
- package/esm/object/KeysWithDiffType.js.map +1 -0
- package/{libm → esm}/object/KnownKeys.js +0 -0
- package/esm/object/KnownKeys.js.map +1 -0
- package/{libm → esm}/object/OptionalKeys.js +0 -0
- package/esm/object/OptionalKeys.js.map +1 -0
- package/{libm → esm}/object/Partial.js +0 -0
- package/esm/object/Partial.js.map +1 -0
- package/{libm → esm}/object/RecursiveIntersect.js +0 -0
- package/esm/object/RecursiveIntersect.js.map +1 -0
- package/{libm → esm}/object/RecursivePartial.js +0 -0
- package/esm/object/RecursivePartial.js.map +1 -0
- package/{libm → esm}/object/RecursiveRequired.js +0 -0
- package/esm/object/RecursiveRequired.js.map +1 -0
- package/{libm → esm}/object/Required.js +0 -0
- package/esm/object/Required.js.map +1 -0
- package/{libm → esm}/object/RequiredKeys.js +0 -0
- package/esm/object/RequiredKeys.js.map +1 -0
- package/{libm → esm}/object/SpreadRecord.js +0 -0
- package/esm/object/SpreadRecord.js.map +1 -0
- package/{libm → esm}/object/ValueOf.js +0 -0
- package/esm/object/ValueOf.js.map +1 -0
- package/{libm → esm}/object/everyKey.js +0 -0
- package/esm/object/everyKey.js.map +1 -0
- package/{libm → esm}/object/facade.js +0 -0
- package/esm/object/facade.js.map +1 -0
- package/{libm → esm}/object/filterKey.js +0 -0
- package/esm/object/filterKey.js.map +1 -0
- package/{libm → esm}/object/findKey.js +0 -0
- package/esm/object/findKey.js.map +1 -0
- package/{libm → esm}/object/forEachKey.js +0 -0
- package/esm/object/forEachKey.js.map +1 -0
- package/{libm → esm}/object/getField.js +0 -0
- package/esm/object/getField.js.map +1 -0
- package/{libm → esm}/object/hasKey.js +0 -0
- package/esm/object/hasKey.js.map +1 -0
- package/{libm → esm}/object/hasProperty.js +0 -0
- package/esm/object/hasProperty.js.map +1 -0
- package/esm/object/index.js +17 -0
- package/esm/object/index.js.map +1 -0
- package/{libm → esm}/object/mapKey.js +0 -0
- package/esm/object/mapKey.js.map +1 -0
- package/{libm → esm}/object/mapProperties.js +0 -0
- package/esm/object/mapProperties.js.map +1 -0
- package/{libm → esm}/object/omit.js +0 -0
- package/esm/object/omit.js.map +1 -0
- package/{libm → esm}/object/pick.js +0 -0
- package/esm/object/pick.js.map +1 -0
- package/{libm → esm}/object/reduceKey.js +0 -0
- package/esm/object/reduceKey.js.map +1 -0
- package/{libm → esm}/object/replaceProperty.js +0 -0
- package/esm/object/replaceProperty.js.map +1 -0
- package/{libm → esm}/object/someKey.js +0 -0
- package/esm/object/someKey.js.map +1 -0
- package/{libm → esm}/object/typeOverrideIncompatible.js +0 -0
- package/esm/object/typeOverrideIncompatible.js.map +1 -0
- package/{libm → esm}/predicates/CanAssign.js +0 -0
- package/esm/predicates/CanAssign.js.map +1 -0
- package/{libm → esm}/predicates/Equal.js +0 -0
- package/esm/predicates/Equal.js.map +1 -0
- package/{libm → esm}/predicates/Extends.js +0 -0
- package/esm/predicates/Extends.js.map +1 -0
- package/{libm → esm}/predicates/If.js +0 -0
- package/esm/predicates/If.js.map +1 -0
- package/esm/predicates/IsEmptyObject.js +2 -0
- package/esm/predicates/IsEmptyObject.js.map +1 -0
- package/esm/predicates/index.js +3 -0
- package/esm/predicates/index.js.map +1 -0
- package/{libm → esm}/predicates/isType.js +0 -0
- package/esm/predicates/isType.js.map +1 -0
- package/{libm → esm}/predicates/logical.js +0 -0
- package/esm/predicates/logical.js.map +1 -0
- package/{libm → esm}/promise/PromiseValue.js +0 -0
- package/esm/promise/PromiseValue.js.map +1 -0
- package/{libm → esm}/promise/PromiseValueMerge.js +0 -0
- package/esm/promise/PromiseValueMerge.js.map +1 -0
- package/esm/promise/index.js +3 -0
- package/esm/promise/index.js.map +1 -0
- package/{libm → esm}/promise/isPromise.js +0 -0
- package/esm/promise/isPromise.js.map +1 -0
- package/{libm → esm}/promise/mapSeries.js +0 -0
- package/esm/promise/mapSeries.js.map +1 -0
- package/{libm → esm}/utils/Widen.js +0 -0
- package/esm/utils/Widen.js.map +1 -0
- package/{libm → esm}/utils/as.js +0 -0
- package/esm/utils/as.js.map +1 -0
- package/esm/utils/index.js +2 -0
- package/esm/utils/index.js.map +1 -0
- package/package.json +43 -43
- package/{src → ts}/ComposableTypes.spec.ts +0 -0
- package/{src → ts}/ComposableTypes.ts +0 -0
- package/ts/JSONTypes.spec.ts +43 -0
- package/ts/JSONTypes.ts +18 -0
- package/ts/PrimitiveTypes.ts +2 -0
- package/{src → ts}/UnionKeys.ts +0 -0
- package/ts/UnionToIntersection.ts +7 -0
- package/ts/array/CommonPropKeys.spec.ts +20 -0
- package/ts/array/CommonPropKeys.ts +18 -0
- package/ts/array/Concat.spec.ts +21 -0
- package/ts/array/Concat.ts +1 -0
- package/ts/array/CreateTuple.spec.ts +21 -0
- package/ts/array/CreateTuple.ts +7 -0
- package/ts/array/DropFirst.spec.ts +21 -0
- package/ts/array/DropFirst.ts +9 -0
- package/ts/array/DropLast.spec.ts +21 -0
- package/ts/array/DropLast.ts +9 -0
- package/ts/array/Filter.spec.ts +21 -0
- package/ts/array/Filter.ts +12 -0
- package/ts/array/FindFirst.spec.ts +27 -0
- package/ts/array/FindFirst.ts +13 -0
- package/ts/array/FindLast.spec.ts +27 -0
- package/ts/array/FindLast.ts +8 -0
- package/ts/array/Head.spec.ts +21 -0
- package/ts/array/Head.ts +1 -0
- package/ts/array/IntersectOfProps.spec.ts +14 -0
- package/ts/array/IntersectOfProps.ts +20 -0
- package/ts/array/IsArray.ts +1 -0
- package/ts/array/PadLeft.spec.ts +26 -0
- package/ts/array/PadLeft.ts +16 -0
- package/ts/array/Reverse.spec.ts +17 -0
- package/ts/array/Reverse.ts +10 -0
- package/ts/array/Some.spec.ts +79 -0
- package/ts/array/Some.ts +24 -0
- package/ts/array/Tail.spec.ts +32 -0
- package/ts/array/Tail.ts +7 -0
- package/ts/array/UnionOfProps.spec.ts +14 -0
- package/ts/array/UnionOfProps.ts +18 -0
- package/ts/array/UnionOfValues.spec.ts +11 -0
- package/ts/array/UnionOfValues.ts +10 -0
- package/ts/array/index.ts +19 -0
- package/{src → ts}/array/literalArray.spec.ts +0 -0
- package/{src → ts}/array/literalArray.ts +0 -0
- package/{src → ts}/array/reduceWhile.spec.ts +0 -0
- package/{src → ts}/array/reduceWhile.ts +0 -0
- package/ts/assertion/assertType.spec.ts +507 -0
- package/ts/assertion/assertType.ts +105 -0
- package/ts/assertion/index.ts +1 -0
- package/{src → ts}/binary/Bit.ts +0 -0
- package/ts/binary/_binary.ts +1 -0
- package/{src → ts}/binary/index.spec.ts +0 -0
- package/{src → ts}/binary/index.ts +0 -0
- package/ts/class/AnyConstructor.spec.ts +13 -0
- package/{src → ts}/class/AnyConstructor.ts +0 -0
- package/ts/class/index.ts +2 -0
- package/ts/class/isConstructor.spec.ts +35 -0
- package/{src → ts}/class/isConstructor.ts +0 -0
- package/ts/function/AnyFunction.spec.ts +21 -0
- package/{src → ts}/function/AnyFunction.ts +0 -0
- package/ts/function/index.ts +1 -0
- package/ts/functional/ChainFn.spec.ts +7 -0
- package/{src → ts}/functional/ChainFn.ts +0 -0
- package/{src → ts}/functional/Maybe.spec.ts +0 -0
- package/ts/functional/Maybe.ts +19 -0
- package/ts/functional/index.ts +2 -0
- package/{src → ts}/index.spec.ts +0 -0
- package/ts/index.ts +21 -0
- package/ts/math/Abs.spec.ts +14 -0
- package/ts/math/Abs.ts +4 -0
- package/ts/math/Add.spec.ts +82 -0
- package/ts/math/Add.ts +49 -0
- package/ts/math/Digit.spec.ts +185 -0
- package/ts/math/Digit.ts +115 -0
- package/ts/math/GreaterThan.spec.ts +40 -0
- package/ts/math/GreaterThan.ts +36 -0
- package/{src → ts}/math/IsPositive.spec.ts +0 -0
- package/ts/math/IsPositive.ts +9 -0
- package/ts/math/IsWhole.spec.ts +19 -0
- package/ts/math/IsWhole.ts +9 -0
- package/ts/math/Max.spec.ts +35 -0
- package/ts/math/Max.ts +31 -0
- package/ts/math/README.md +7 -0
- package/ts/math/Subtract.spec.ts +40 -0
- package/ts/math/Subtract.ts +40 -0
- package/ts/math/index.ts +7 -0
- package/ts/nodejs/index.ts +1 -0
- package/ts/nodejs/isNodeError.spec.ts +11 -0
- package/ts/nodejs/isNodeError.ts +28 -0
- package/ts/nominal-types/Brand.spec.ts +43 -0
- package/ts/nominal-types/Brand.ts +32 -0
- package/ts/nominal-types/Flavor.spec.ts +51 -0
- package/ts/nominal-types/Flavor.ts +32 -0
- package/{src → ts}/nominal-types/index.ts +0 -0
- package/{src → ts}/nominal-types/nominalMatch.spec.ts +0 -0
- package/{src → ts}/nominal-types/nominalMatch.ts +0 -0
- package/{src → ts}/nominal-types/types.ts +0 -0
- package/{src → ts}/object/ANotB.spec.ts +0 -0
- package/ts/object/ANotB.ts +21 -0
- package/{src → ts}/object/AnyRecord.ts +0 -0
- package/ts/object/ExcludePropType.spec.ts +13 -0
- package/{src → ts}/object/ExcludePropType.ts +0 -0
- package/ts/object/IsDisjoint.spec.ts +25 -0
- package/ts/object/IsDisjoint.ts +12 -0
- package/ts/object/IsRecord.spec.ts +22 -0
- package/ts/object/IsRecord.ts +4 -0
- package/{src → ts}/object/KeyTypes.spec.ts +0 -0
- package/{src → ts}/object/KeyTypes.ts +0 -0
- package/ts/object/KeyofOptional.spec.ts +8 -0
- package/{src → ts}/object/KeyofOptional.ts +0 -0
- package/ts/object/KeysWithDiffType.spec.ts +21 -0
- package/{src → ts}/object/KeysWithDiffType.ts +0 -0
- package/ts/object/KnownKeys.spec.ts +39 -0
- package/ts/object/KnownKeys.ts +16 -0
- package/{src → ts}/object/OptionalKeys.spec.ts +0 -0
- package/{src → ts}/object/OptionalKeys.ts +0 -0
- package/ts/object/Partial.spec.ts +49 -0
- package/{src → ts}/object/Partial.ts +0 -0
- package/ts/object/RecursiveIntersect.spec.ts +39 -0
- package/{src → ts}/object/RecursiveIntersect.ts +0 -0
- package/{src → ts}/object/RecursivePartial.ts +0 -0
- package/{src → ts}/object/RecursiveRequired.spec.ts +0 -0
- package/{src → ts}/object/RecursiveRequired.ts +0 -0
- package/ts/object/Required.spec.ts +29 -0
- package/{src → ts}/object/Required.ts +0 -0
- package/{src → ts}/object/RequiredKeys.spec.ts +0 -0
- package/{src → ts}/object/RequiredKeys.ts +0 -0
- package/ts/object/SpreadRecord.spec.ts +14 -0
- package/ts/object/SpreadRecord.ts +6 -0
- package/ts/object/ValueOf.spec.ts +36 -0
- package/{src → ts}/object/ValueOf.ts +0 -0
- package/{src → ts}/object/everyKey.spec.ts +0 -0
- package/{src → ts}/object/everyKey.ts +0 -0
- package/{src → ts}/object/facade.spec.ts +0 -0
- package/ts/object/facade.ts +39 -0
- package/{src → ts}/object/filterKey.spec.ts +0 -0
- package/{src → ts}/object/filterKey.ts +0 -0
- package/{src → ts}/object/findKey.spec.ts +0 -0
- package/{src → ts}/object/findKey.ts +0 -0
- package/{src → ts}/object/forEachKey.spec.ts +0 -0
- package/{src → ts}/object/forEachKey.ts +0 -0
- package/ts/object/getField.spec.ts +21 -0
- package/{src → ts}/object/getField.ts +0 -0
- package/{src → ts}/object/hasKey.spec.ts +0 -0
- package/ts/object/hasKey.ts +7 -0
- package/ts/object/hasProperty.spec.ts +15 -0
- package/{src → ts}/object/hasProperty.ts +0 -0
- package/ts/object/index.ts +35 -0
- package/{src → ts}/object/mapKey.spec.ts +0 -0
- package/{src → ts}/object/mapKey.ts +0 -0
- package/ts/object/mapProperties.spec.ts +27 -0
- package/{src → ts}/object/mapProperties.ts +0 -0
- package/ts/object/omit.spec.ts +104 -0
- package/ts/object/omit.ts +36 -0
- package/ts/object/pick.spec.ts +66 -0
- package/ts/object/pick.ts +35 -0
- package/{src → ts}/object/reduceKey.spec.ts +0 -0
- package/{src → ts}/object/reduceKey.ts +0 -0
- package/{src → ts}/object/replaceProperty.spec.ts +0 -0
- package/{src → ts}/object/replaceProperty.ts +0 -0
- package/{src → ts}/object/someKey.spec.ts +0 -0
- package/{src → ts}/object/someKey.ts +0 -0
- package/ts/object/typeOverrideIncompatible.spec.ts +24 -0
- package/ts/object/typeOverrideIncompatible.ts +10 -0
- package/ts/predicates/CanAssign.spec.ts +57 -0
- package/ts/predicates/CanAssign.ts +21 -0
- package/ts/predicates/Equal.spec.ts +71 -0
- package/ts/predicates/Equal.ts +14 -0
- package/ts/predicates/Extends.ts +4 -0
- package/ts/predicates/If.spec.ts +14 -0
- package/ts/predicates/If.ts +5 -0
- package/ts/predicates/IsEmptyObject.spec.ts +15 -0
- package/ts/predicates/IsEmptyObject.ts +2 -0
- package/ts/predicates/index.spec.ts +73 -0
- package/ts/predicates/index.ts +17 -0
- package/ts/predicates/isType.spec.ts +106 -0
- package/ts/predicates/isType.ts +30 -0
- package/ts/predicates/logical.spec.ts +59 -0
- package/ts/predicates/logical.ts +4 -0
- package/ts/promise/PromiseValue.spec.ts +6 -0
- package/{src → ts}/promise/PromiseValue.ts +0 -0
- package/{src → ts}/promise/PromiseValueMerge.spec.ts +0 -0
- package/{src → ts}/promise/PromiseValueMerge.ts +0 -0
- package/ts/promise/index.ts +4 -0
- package/{src → ts}/promise/isPromise.spec.ts +0 -0
- package/ts/promise/isPromise.ts +4 -0
- package/{src → ts}/promise/mapSeries.spec.ts +0 -0
- package/ts/promise/mapSeries.ts +5 -0
- package/{src → ts}/type-checker/.eslintrc.json +0 -0
- package/{src → ts}/type-checker/AnyType.ts +0 -0
- package/{src → ts}/type-checker/Boolean.ts +0 -0
- package/{src → ts}/type-checker/Tuple.spec.ts +0 -0
- package/{src → ts}/type-checker/Tuple.ts +0 -0
- package/ts/type-checker/buildTypes.spec.ts +28 -0
- package/{src → ts}/type-checker/index.ts +0 -0
- package/ts/type-checker/typeChecker.spec.ts +14 -0
- package/{src → ts}/type-checker/typeChecker.ts +0 -0
- package/{src → ts}/type-checker/types.ts +0 -0
- package/{src → ts}/types/.eslintrc.json +0 -0
- package/{src → ts}/types/AllType.ts +0 -0
- package/{src → ts}/types/Any.ts +0 -0
- package/{src → ts}/types/Array.ts +0 -0
- package/{src → ts}/types/BigInt.ts +0 -0
- package/{src → ts}/types/Boolean.ts +0 -0
- package/ts/types/Generate.ts +48 -0
- package/{src → ts}/types/Null.ts +0 -0
- package/ts/types/Number.ts +56 -0
- package/ts/types/Object.ts +53 -0
- package/{src → ts}/types/Record.ts +0 -0
- package/ts/types/String.ts +56 -0
- package/ts/types/Symbol.ts +19 -0
- package/ts/types/Tuple.ts +50 -0
- package/{src → ts}/types/Undefined.ts +0 -0
- package/{src → ts}/types/Union.ts +0 -0
- package/{src → ts}/types/Unknown.ts +0 -0
- package/{src → ts}/types/analyze.spec.ts +0 -0
- package/{src → ts}/types/analyze.ts +0 -0
- package/ts/types/check.spec.ts +12 -0
- package/{src → ts}/types/check.ts +0 -0
- package/ts/types/conform.spec.ts +7 -0
- package/{src → ts}/types/conform.ts +0 -0
- package/{src → ts}/types/getPlainAnalysisReport.spec.ts +0 -0
- package/ts/types/getPlainAnalysisReport.ts +115 -0
- package/ts/types/index.ts +28 -0
- package/ts/types/optional.ts +30 -0
- package/ts/types/required.ts +30 -0
- package/ts/types/satisfy.accept.ts +39 -0
- package/ts/types/satisfy.spec.ts +600 -0
- package/{src → ts}/types/satisfy.ts +0 -0
- package/{src → ts}/types/types.ts +0 -0
- package/{src → ts}/utils/Widen.ts +0 -0
- package/ts/utils/as.spec.ts +24 -0
- package/ts/utils/as.ts +7 -0
- package/ts/utils/index.ts +2 -0
- package/lib/ComposableTypes.js.map +0 -1
- package/lib/JSONTypes.js.map +0 -1
- package/lib/PrimitiveTypes.js.map +0 -1
- package/lib/UnionKeys.js.map +0 -1
- package/lib/array/CommonPropKeys.js.map +0 -1
- package/lib/array/Concat.js.map +0 -1
- package/lib/array/CreateTuple.js.map +0 -1
- package/lib/array/DropFirst.js.map +0 -1
- package/lib/array/DropLast.js.map +0 -1
- package/lib/array/Filter.js.map +0 -1
- package/lib/array/FindFirst.js.map +0 -1
- package/lib/array/FindLast.js.map +0 -1
- package/lib/array/Head.js.map +0 -1
- package/lib/array/IntersectOfProps.js.map +0 -1
- package/lib/array/IsArray.js.map +0 -1
- package/lib/array/PadLeft.js.map +0 -1
- package/lib/array/Reverse.js.map +0 -1
- package/lib/array/Some.js.map +0 -1
- package/lib/array/Tail.js.map +0 -1
- package/lib/array/UnionOfProps.js.map +0 -1
- package/lib/array/UnionOfValues.js.map +0 -1
- package/lib/array/index.d.ts +0 -19
- package/lib/array/index.js +0 -32
- package/lib/array/index.js.map +0 -1
- package/lib/array/literalArray.js.map +0 -1
- package/lib/array/reduceWhile.js.map +0 -1
- package/lib/assertion/assertType.js.map +0 -1
- package/lib/assertion/index.js.map +0 -1
- package/lib/class/AnyConstructor.js.map +0 -1
- package/lib/class/index.d.ts +0 -2
- package/lib/class/index.js +0 -15
- package/lib/class/index.js.map +0 -1
- package/lib/class/isConstructor.js.map +0 -1
- package/lib/function/AnyFunction.js.map +0 -1
- package/lib/function/index.d.ts +0 -1
- package/lib/function/index.js +0 -14
- package/lib/function/index.js.map +0 -1
- package/lib/functional/ChainFn.js.map +0 -1
- package/lib/functional/index.d.ts +0 -1
- package/lib/functional/index.js +0 -15
- package/lib/functional/index.js.map +0 -1
- package/lib/index.d.ts +0 -20
- package/lib/index.js +0 -49
- package/lib/index.js.map +0 -1
- package/lib/math/Abs.js.map +0 -1
- package/lib/math/Add.js.map +0 -1
- package/lib/math/Digit.js.map +0 -1
- package/lib/math/GreaterThan.js.map +0 -1
- package/lib/math/IsPositive.js.map +0 -1
- package/lib/math/IsWhole.js.map +0 -1
- package/lib/math/Max.js.map +0 -1
- package/lib/math/Subtract.js.map +0 -1
- package/lib/math/index.d.ts +0 -7
- package/lib/math/index.js +0 -20
- package/lib/math/index.js.map +0 -1
- package/lib/nominal-types/Brand.js.map +0 -1
- package/lib/nominal-types/Flavor.js.map +0 -1
- package/lib/nominal-types/index.js.map +0 -1
- package/lib/nominal-types/nominalMatch.js.map +0 -1
- package/lib/nominal-types/types.js.map +0 -1
- package/lib/object/ANotB.js.map +0 -1
- package/lib/object/AnyRecord.js.map +0 -1
- package/lib/object/ExcludePropType.js.map +0 -1
- package/lib/object/IsDisjoint.js.map +0 -1
- package/lib/object/IsRecord.js.map +0 -1
- package/lib/object/KeyTypes.js.map +0 -1
- package/lib/object/KeyofOptional.js.map +0 -1
- package/lib/object/KeysWithDiffType.js.map +0 -1
- package/lib/object/KnownKeys.js.map +0 -1
- package/lib/object/OptionalKeys.js.map +0 -1
- package/lib/object/Partial.js.map +0 -1
- package/lib/object/RecursiveIntersect.js.map +0 -1
- package/lib/object/RecursivePartial.js.map +0 -1
- package/lib/object/RecursiveRequired.js.map +0 -1
- package/lib/object/Required.js.map +0 -1
- package/lib/object/RequiredKeys.js.map +0 -1
- package/lib/object/SpreadRecord.js.map +0 -1
- package/lib/object/ValueOf.js.map +0 -1
- package/lib/object/everyKey.js.map +0 -1
- package/lib/object/facade.js.map +0 -1
- package/lib/object/filterKey.js.map +0 -1
- package/lib/object/findKey.js.map +0 -1
- package/lib/object/forEachKey.js.map +0 -1
- package/lib/object/getField.js.map +0 -1
- package/lib/object/hasKey.js.map +0 -1
- package/lib/object/hasProperty.js.map +0 -1
- package/lib/object/index.d.ts +0 -34
- package/lib/object/index.js +0 -47
- package/lib/object/index.js.map +0 -1
- package/lib/object/mapKey.js.map +0 -1
- package/lib/object/mapProperties.js.map +0 -1
- package/lib/object/omit.js.map +0 -1
- package/lib/object/pick.js.map +0 -1
- package/lib/object/reduceKey.js.map +0 -1
- package/lib/object/replaceProperty.js.map +0 -1
- package/lib/object/someKey.js.map +0 -1
- package/lib/object/typeOverrideIncompatible.js.map +0 -1
- package/lib/predicates/CanAssign.d.ts +0 -9
- package/lib/predicates/CanAssign.js.map +0 -1
- package/lib/predicates/Equal.js.map +0 -1
- package/lib/predicates/Extends.js.map +0 -1
- package/lib/predicates/If.js.map +0 -1
- package/lib/predicates/index.d.ts +0 -11
- package/lib/predicates/index.js +0 -20
- package/lib/predicates/index.js.map +0 -1
- package/lib/predicates/isEmptyObject.js +0 -3
- package/lib/predicates/isEmptyObject.js.map +0 -1
- package/lib/predicates/isType.js.map +0 -1
- package/lib/predicates/logical.js.map +0 -1
- package/lib/promise/PromiseValue.js.map +0 -1
- package/lib/promise/PromiseValueMerge.js.map +0 -1
- package/lib/promise/index.d.ts +0 -4
- package/lib/promise/index.js +0 -17
- package/lib/promise/index.js.map +0 -1
- package/lib/promise/isPromise.js.map +0 -1
- package/lib/promise/mapSeries.js.map +0 -1
- package/lib/types/AllType.d.ts +0 -18
- package/lib/types/AllType.js +0 -3
- package/lib/types/AllType.js.map +0 -1
- package/lib/types/Any.d.ts +0 -6
- package/lib/types/Any.js +0 -5
- package/lib/types/Any.js.map +0 -1
- package/lib/types/Array.d.ts +0 -28
- package/lib/types/Array.js +0 -30
- package/lib/types/Array.js.map +0 -1
- package/lib/types/Boolean.d.ts +0 -29
- package/lib/types/Boolean.js +0 -28
- package/lib/types/Boolean.js.map +0 -1
- package/lib/types/Generate.d.ts +0 -32
- package/lib/types/Generate.js +0 -3
- package/lib/types/Generate.js.map +0 -1
- package/lib/types/Null.d.ts +0 -8
- package/lib/types/Null.js +0 -10
- package/lib/types/Null.js.map +0 -1
- package/lib/types/Number.d.ts +0 -36
- package/lib/types/Number.js +0 -50
- package/lib/types/Number.js.map +0 -1
- package/lib/types/Object.d.ts +0 -313
- package/lib/types/Object.js +0 -35
- package/lib/types/Object.js.map +0 -1
- package/lib/types/Record.d.ts +0 -16
- package/lib/types/Record.js +0 -17
- package/lib/types/Record.js.map +0 -1
- package/lib/types/String.d.ts +0 -36
- package/lib/types/String.js +0 -51
- package/lib/types/String.js.map +0 -1
- package/lib/types/Symbol.d.ts +0 -8
- package/lib/types/Symbol.js +0 -13
- package/lib/types/Symbol.js.map +0 -1
- package/lib/types/Tuple.d.ts +0 -35
- package/lib/types/Tuple.js +0 -43
- package/lib/types/Tuple.js.map +0 -1
- package/lib/types/Undefined.d.ts +0 -6
- package/lib/types/Undefined.js +0 -5
- package/lib/types/Undefined.js.map +0 -1
- package/lib/types/Union.d.ts +0 -20
- package/lib/types/Union.js +0 -52
- package/lib/types/Union.js.map +0 -1
- package/lib/types/Unknown.d.ts +0 -6
- package/lib/types/Unknown.js +0 -5
- package/lib/types/Unknown.js.map +0 -1
- package/lib/types/analyze.d.ts +0 -13
- package/lib/types/analyze.js +0 -159
- package/lib/types/analyze.js.map +0 -1
- package/lib/types/check.d.ts +0 -14
- package/lib/types/check.js +0 -25
- package/lib/types/check.js.map +0 -1
- package/lib/types/conform.d.ts +0 -15
- package/lib/types/conform.js +0 -26
- package/lib/types/conform.js.map +0 -1
- package/lib/types/getPlainAnalysisReport.d.ts +0 -2
- package/lib/types/getPlainAnalysisReport.js +0 -120
- package/lib/types/getPlainAnalysisReport.js.map +0 -1
- package/lib/types/index.d.ts +0 -26
- package/lib/types/index.js +0 -45
- package/lib/types/index.js.map +0 -1
- package/lib/types/optional.d.ts +0 -328
- package/lib/types/optional.js +0 -33
- package/lib/types/optional.js.map +0 -1
- package/lib/types/required.d.ts +0 -664
- package/lib/types/required.js +0 -33
- package/lib/types/required.js.map +0 -1
- package/lib/types/satisfy.d.ts +0 -15
- package/lib/types/satisfy.js +0 -26
- package/lib/types/satisfy.js.map +0 -1
- package/lib/types/types.d.ts +0 -9
- package/lib/types/types.js +0 -3
- package/lib/types/types.js.map +0 -1
- package/lib/utils/Widen.js.map +0 -1
- package/lib/utils/as.js.map +0 -1
- package/lib/utils/index.d.ts +0 -2
- package/lib/utils/index.js +0 -15
- package/lib/utils/index.js.map +0 -1
- package/libm/ComposableTypes.js.map +0 -1
- package/libm/JSONTypes.js.map +0 -1
- package/libm/PrimitiveTypes.js.map +0 -1
- package/libm/UnionKeys.js.map +0 -1
- package/libm/array/CommonPropKeys.js.map +0 -1
- package/libm/array/Concat.js.map +0 -1
- package/libm/array/CreateTuple.js.map +0 -1
- package/libm/array/DropFirst.js.map +0 -1
- package/libm/array/DropLast.js.map +0 -1
- package/libm/array/Filter.js.map +0 -1
- package/libm/array/FindFirst.js.map +0 -1
- package/libm/array/FindLast.js.map +0 -1
- package/libm/array/Head.js.map +0 -1
- package/libm/array/IntersectOfProps.js.map +0 -1
- package/libm/array/IsArray.js.map +0 -1
- package/libm/array/PadLeft.js.map +0 -1
- package/libm/array/Reverse.js.map +0 -1
- package/libm/array/Some.js.map +0 -1
- package/libm/array/Tail.js.map +0 -1
- package/libm/array/UnionOfProps.js.map +0 -1
- package/libm/array/UnionOfValues.js.map +0 -1
- package/libm/array/index.js +0 -20
- package/libm/array/index.js.map +0 -1
- package/libm/array/literalArray.js.map +0 -1
- package/libm/array/reduceWhile.js.map +0 -1
- package/libm/assertion/assertType.js.map +0 -1
- package/libm/assertion/index.js.map +0 -1
- package/libm/class/AnyConstructor.js.map +0 -1
- package/libm/class/index.js +0 -3
- package/libm/class/index.js.map +0 -1
- package/libm/class/isConstructor.js.map +0 -1
- package/libm/function/AnyFunction.js.map +0 -1
- package/libm/function/index.js +0 -2
- package/libm/function/index.js.map +0 -1
- package/libm/functional/ChainFn.js.map +0 -1
- package/libm/functional/index.js +0 -3
- package/libm/functional/index.js.map +0 -1
- package/libm/index.js +0 -21
- package/libm/index.js.map +0 -1
- package/libm/math/Abs.js.map +0 -1
- package/libm/math/Add.js.map +0 -1
- package/libm/math/Digit.js.map +0 -1
- package/libm/math/GreaterThan.js.map +0 -1
- package/libm/math/IsPositive.js.map +0 -1
- package/libm/math/IsWhole.js.map +0 -1
- package/libm/math/Max.js.map +0 -1
- package/libm/math/Subtract.js.map +0 -1
- package/libm/math/index.js +0 -8
- package/libm/math/index.js.map +0 -1
- package/libm/nominal-types/Brand.js.map +0 -1
- package/libm/nominal-types/Flavor.js.map +0 -1
- package/libm/nominal-types/index.js.map +0 -1
- package/libm/nominal-types/nominalMatch.js.map +0 -1
- package/libm/nominal-types/types.js.map +0 -1
- package/libm/object/ANotB.js.map +0 -1
- package/libm/object/AnyRecord.js.map +0 -1
- package/libm/object/ExcludePropType.js.map +0 -1
- package/libm/object/IsDisjoint.js.map +0 -1
- package/libm/object/IsRecord.js.map +0 -1
- package/libm/object/KeyTypes.js.map +0 -1
- package/libm/object/KeyofOptional.js.map +0 -1
- package/libm/object/KeysWithDiffType.js.map +0 -1
- package/libm/object/KnownKeys.js.map +0 -1
- package/libm/object/OptionalKeys.js.map +0 -1
- package/libm/object/Partial.js.map +0 -1
- package/libm/object/RecursiveIntersect.js.map +0 -1
- package/libm/object/RecursivePartial.js.map +0 -1
- package/libm/object/RecursiveRequired.js.map +0 -1
- package/libm/object/Required.js.map +0 -1
- package/libm/object/RequiredKeys.js.map +0 -1
- package/libm/object/SpreadRecord.js.map +0 -1
- package/libm/object/ValueOf.js.map +0 -1
- package/libm/object/everyKey.js.map +0 -1
- package/libm/object/facade.js.map +0 -1
- package/libm/object/filterKey.js.map +0 -1
- package/libm/object/findKey.js.map +0 -1
- package/libm/object/forEachKey.js.map +0 -1
- package/libm/object/getField.js.map +0 -1
- package/libm/object/hasKey.js.map +0 -1
- package/libm/object/hasProperty.js.map +0 -1
- package/libm/object/index.js +0 -35
- package/libm/object/index.js.map +0 -1
- package/libm/object/mapKey.js.map +0 -1
- package/libm/object/mapProperties.js.map +0 -1
- package/libm/object/omit.js.map +0 -1
- package/libm/object/pick.js.map +0 -1
- package/libm/object/reduceKey.js.map +0 -1
- package/libm/object/replaceProperty.js.map +0 -1
- package/libm/object/someKey.js.map +0 -1
- package/libm/object/typeOverrideIncompatible.js.map +0 -1
- package/libm/predicates/CanAssign.js.map +0 -1
- package/libm/predicates/Equal.js.map +0 -1
- package/libm/predicates/Extends.js.map +0 -1
- package/libm/predicates/If.js.map +0 -1
- package/libm/predicates/index.js +0 -8
- package/libm/predicates/index.js.map +0 -1
- package/libm/predicates/isEmptyObject.js +0 -2
- package/libm/predicates/isEmptyObject.js.map +0 -1
- package/libm/predicates/isType.js.map +0 -1
- package/libm/predicates/logical.js.map +0 -1
- package/libm/promise/PromiseValue.js.map +0 -1
- package/libm/promise/PromiseValueMerge.js.map +0 -1
- package/libm/promise/index.js +0 -5
- package/libm/promise/index.js.map +0 -1
- package/libm/promise/isPromise.js.map +0 -1
- package/libm/promise/mapSeries.js.map +0 -1
- package/libm/types/AllType.js +0 -2
- package/libm/types/AllType.js.map +0 -1
- package/libm/types/Any.js +0 -2
- package/libm/types/Any.js.map +0 -1
- package/libm/types/Array.js +0 -27
- package/libm/types/Array.js.map +0 -1
- package/libm/types/Boolean.js +0 -25
- package/libm/types/Boolean.js.map +0 -1
- package/libm/types/Generate.js +0 -2
- package/libm/types/Generate.js.map +0 -1
- package/libm/types/Null.js +0 -7
- package/libm/types/Null.js.map +0 -1
- package/libm/types/Number.js +0 -30
- package/libm/types/Number.js.map +0 -1
- package/libm/types/Object.js +0 -31
- package/libm/types/Object.js.map +0 -1
- package/libm/types/Record.js +0 -14
- package/libm/types/Record.js.map +0 -1
- package/libm/types/String.js +0 -31
- package/libm/types/String.js.map +0 -1
- package/libm/types/Symbol.js +0 -10
- package/libm/types/Symbol.js.map +0 -1
- package/libm/types/Tuple.js +0 -23
- package/libm/types/Tuple.js.map +0 -1
- package/libm/types/Undefined.js +0 -2
- package/libm/types/Undefined.js.map +0 -1
- package/libm/types/Union.js +0 -32
- package/libm/types/Union.js.map +0 -1
- package/libm/types/Unknown.js +0 -2
- package/libm/types/Unknown.js.map +0 -1
- package/libm/types/analyze.js +0 -142
- package/libm/types/analyze.js.map +0 -1
- package/libm/types/check.js +0 -21
- package/libm/types/check.js.map +0 -1
- package/libm/types/conform.js +0 -22
- package/libm/types/conform.js.map +0 -1
- package/libm/types/getPlainAnalysisReport.js +0 -106
- package/libm/types/getPlainAnalysisReport.js.map +0 -1
- package/libm/types/index.js +0 -28
- package/libm/types/index.js.map +0 -1
- package/libm/types/optional.js +0 -30
- package/libm/types/optional.js.map +0 -1
- package/libm/types/required.js +0 -30
- package/libm/types/required.js.map +0 -1
- package/libm/types/satisfy.js +0 -22
- package/libm/types/satisfy.js.map +0 -1
- package/libm/types/types.js +0 -2
- package/libm/types/types.js.map +0 -1
- package/libm/utils/Widen.js.map +0 -1
- package/libm/utils/as.js.map +0 -1
- package/libm/utils/index.js +0 -3
- package/libm/utils/index.js.map +0 -1
- package/src/JSONTypes.spec.ts +0 -43
- package/src/JSONTypes.ts +0 -18
- package/src/PrimitiveTypes.ts +0 -2
- package/src/UnionToIntersection.ts +0 -7
- package/src/array/CommonPropKeys.spec.ts +0 -20
- package/src/array/CommonPropKeys.ts +0 -18
- package/src/array/Concat.spec.ts +0 -21
- package/src/array/Concat.ts +0 -1
- package/src/array/CreateTuple.spec.ts +0 -21
- package/src/array/CreateTuple.ts +0 -7
- package/src/array/DropFirst.spec.ts +0 -21
- package/src/array/DropFirst.ts +0 -9
- package/src/array/DropLast.spec.ts +0 -21
- package/src/array/DropLast.ts +0 -9
- package/src/array/Filter.spec.ts +0 -21
- package/src/array/Filter.ts +0 -12
- package/src/array/FindFirst.spec.ts +0 -27
- package/src/array/FindFirst.ts +0 -13
- package/src/array/FindLast.spec.ts +0 -27
- package/src/array/FindLast.ts +0 -8
- package/src/array/Head.spec.ts +0 -21
- package/src/array/Head.ts +0 -1
- package/src/array/IntersectOfProps.spec.ts +0 -14
- package/src/array/IntersectOfProps.ts +0 -20
- package/src/array/IsArray.ts +0 -1
- package/src/array/PadLeft.spec.ts +0 -26
- package/src/array/PadLeft.ts +0 -16
- package/src/array/Reverse.spec.ts +0 -17
- package/src/array/Reverse.ts +0 -10
- package/src/array/Some.spec.ts +0 -79
- package/src/array/Some.ts +0 -24
- package/src/array/Tail.spec.ts +0 -32
- package/src/array/Tail.ts +0 -7
- package/src/array/UnionOfProps.spec.ts +0 -14
- package/src/array/UnionOfProps.ts +0 -18
- package/src/array/UnionOfValues.spec.ts +0 -11
- package/src/array/UnionOfValues.ts +0 -10
- package/src/array/index.ts +0 -19
- package/src/assertion/assertType.spec.ts +0 -507
- package/src/assertion/assertType.ts +0 -105
- package/src/assertion/index.ts +0 -1
- package/src/binary/_binary.ts +0 -1
- package/src/class/AnyConstructor.spec.ts +0 -13
- package/src/class/index.ts +0 -2
- package/src/class/isConstructor.spec.ts +0 -35
- package/src/function/AnyFunction.spec.ts +0 -21
- package/src/function/index.ts +0 -1
- package/src/functional/ChainFn.spec.ts +0 -7
- package/src/functional/Maybe.ts +0 -19
- package/src/functional/index.ts +0 -2
- package/src/index.ts +0 -20
- package/src/math/Abs.spec.ts +0 -14
- package/src/math/Abs.ts +0 -4
- package/src/math/Add.spec.ts +0 -82
- package/src/math/Add.ts +0 -49
- package/src/math/Digit.spec.ts +0 -185
- package/src/math/Digit.ts +0 -115
- package/src/math/GreaterThan.spec.ts +0 -40
- package/src/math/GreaterThan.ts +0 -36
- package/src/math/IsPositive.ts +0 -9
- package/src/math/IsWhole.spec.ts +0 -19
- package/src/math/IsWhole.ts +0 -9
- package/src/math/Max.spec.ts +0 -35
- package/src/math/Max.ts +0 -31
- package/src/math/README.md +0 -7
- package/src/math/Subtract.spec.ts +0 -40
- package/src/math/Subtract.ts +0 -40
- package/src/math/index.ts +0 -7
- package/src/nominal-types/Brand.spec.ts +0 -43
- package/src/nominal-types/Brand.ts +0 -32
- package/src/nominal-types/Flavor.spec.ts +0 -51
- package/src/nominal-types/Flavor.ts +0 -32
- package/src/object/ANotB.ts +0 -21
- package/src/object/ExcludePropType.spec.ts +0 -13
- package/src/object/IsDisjoint.spec.ts +0 -25
- package/src/object/IsDisjoint.ts +0 -12
- package/src/object/IsRecord.spec.ts +0 -22
- package/src/object/IsRecord.ts +0 -4
- package/src/object/KeyofOptional.spec.ts +0 -8
- package/src/object/KeysWithDiffType.spec.ts +0 -21
- package/src/object/KnownKeys.spec.ts +0 -39
- package/src/object/KnownKeys.ts +0 -16
- package/src/object/Partial.spec.ts +0 -49
- package/src/object/RecursiveIntersect.spec.ts +0 -39
- package/src/object/Required.spec.ts +0 -29
- package/src/object/SpreadRecord.spec.ts +0 -14
- package/src/object/SpreadRecord.ts +0 -6
- package/src/object/ValueOf.spec.ts +0 -36
- package/src/object/facade.ts +0 -39
- package/src/object/getField.spec.ts +0 -21
- package/src/object/hasKey.ts +0 -7
- package/src/object/hasProperty.spec.ts +0 -15
- package/src/object/index.ts +0 -35
- package/src/object/mapProperties.spec.ts +0 -27
- package/src/object/omit.spec.ts +0 -104
- package/src/object/omit.ts +0 -36
- package/src/object/pick.spec.ts +0 -66
- package/src/object/pick.ts +0 -35
- package/src/object/typeOverrideIncompatible.spec.ts +0 -24
- package/src/object/typeOverrideIncompatible.ts +0 -10
- package/src/predicates/CanAssign.spec.ts +0 -57
- package/src/predicates/CanAssign.ts +0 -21
- package/src/predicates/Equal.spec.ts +0 -71
- package/src/predicates/Equal.ts +0 -14
- package/src/predicates/Extends.ts +0 -4
- package/src/predicates/If.spec.ts +0 -14
- package/src/predicates/If.ts +0 -5
- package/src/predicates/index.spec.ts +0 -73
- package/src/predicates/index.ts +0 -17
- package/src/predicates/isEmptyObject.spec.ts +0 -15
- package/src/predicates/isEmptyObject.ts +0 -2
- package/src/predicates/isType.spec.ts +0 -106
- package/src/predicates/isType.ts +0 -30
- package/src/predicates/logical.spec.ts +0 -59
- package/src/predicates/logical.ts +0 -4
- package/src/promise/PromiseValue.spec.ts +0 -6
- package/src/promise/index.ts +0 -4
- package/src/promise/isPromise.ts +0 -4
- package/src/promise/mapSeries.ts +0 -5
- package/src/type-checker/buildTypes.spec.ts +0 -28
- package/src/type-checker/typeChecker.spec.ts +0 -13
- package/src/types/Generate.ts +0 -48
- package/src/types/Number.ts +0 -56
- package/src/types/Object.ts +0 -53
- package/src/types/String.ts +0 -56
- package/src/types/Symbol.ts +0 -19
- package/src/types/Tuple.ts +0 -50
- package/src/types/check.spec.ts +0 -12
- package/src/types/conform.spec.ts +0 -7
- package/src/types/getPlainAnalysisReport.ts +0 -115
- package/src/types/index.ts +0 -28
- package/src/types/optional.ts +0 -30
- package/src/types/required.ts +0 -30
- package/src/types/satisfy.accept.ts +0 -38
- package/src/types/satisfy.spec.ts +0 -599
- package/src/utils/as.spec.ts +0 -24
- package/src/utils/as.ts +0 -7
- package/src/utils/index.ts +0 -2
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { RecursiveIntersect } from '..'
|
|
2
|
+
|
|
3
|
+
test('add object type to types', () => {
|
|
4
|
+
type U = { u: number }
|
|
5
|
+
|
|
6
|
+
acceptU(addU('a'))
|
|
7
|
+
acceptU(addU(1))
|
|
8
|
+
acceptU(addU(true))
|
|
9
|
+
// acceptU(addU(1n))
|
|
10
|
+
acceptU(addU(undefined))
|
|
11
|
+
acceptU(addU(null))
|
|
12
|
+
|
|
13
|
+
const obj = addU({ x: 1 })
|
|
14
|
+
acceptU(obj)
|
|
15
|
+
acceptU(obj.x)
|
|
16
|
+
|
|
17
|
+
const comObj = addU({ array: ['a'] })
|
|
18
|
+
acceptU(comObj)
|
|
19
|
+
acceptU(comObj.array)
|
|
20
|
+
acceptU(comObj.array[0])
|
|
21
|
+
|
|
22
|
+
const arr = addU(['1'])
|
|
23
|
+
acceptU(arr)
|
|
24
|
+
acceptU(arr[0])
|
|
25
|
+
|
|
26
|
+
// Not supported
|
|
27
|
+
// const comArr = addU([{ x: 1 }])
|
|
28
|
+
// acceptU(comArr)
|
|
29
|
+
// acceptU(comArr[0])
|
|
30
|
+
// acceptU(comArr[0].x)
|
|
31
|
+
|
|
32
|
+
function addU<T>(x: T): RecursiveIntersect<T, U> {
|
|
33
|
+
return x as any as RecursiveIntersect<T, U>
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function acceptU(x: U) {
|
|
37
|
+
return x
|
|
38
|
+
}
|
|
39
|
+
})
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { assertType, RequiredExcept, RequiredPick } from '..'
|
|
2
|
+
|
|
3
|
+
test('make picked properties required', () => {
|
|
4
|
+
type Foo = {
|
|
5
|
+
a?: number,
|
|
6
|
+
b?: number,
|
|
7
|
+
c: number,
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const y: RequiredPick<Foo, 'a'> = { a: 1, c: 2 }
|
|
11
|
+
|
|
12
|
+
assertType.noUndefined(y.a)
|
|
13
|
+
y.b = undefined
|
|
14
|
+
assertType.noUndefined(y.c)
|
|
15
|
+
})
|
|
16
|
+
|
|
17
|
+
test('make not picked properties required', () => {
|
|
18
|
+
type Foo = {
|
|
19
|
+
a?: number,
|
|
20
|
+
b?: number,
|
|
21
|
+
c: number,
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const y: RequiredExcept<Foo, 'a'> = { b: 1, c: 2 }
|
|
25
|
+
|
|
26
|
+
y.a = undefined
|
|
27
|
+
assertType.noUndefined(y.b)
|
|
28
|
+
assertType.noUndefined(y.c)
|
|
29
|
+
})
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { assertType, Equal, SpreadRecord } from '..'
|
|
2
|
+
|
|
3
|
+
test('records are combined as intersection', () => {
|
|
4
|
+
type S = SpreadRecord<{ a: number }, { b: string }>
|
|
5
|
+
assertType.isTrue(true as Equal<S, { a: number } & { b: string }>)
|
|
6
|
+
})
|
|
7
|
+
|
|
8
|
+
test('Property in B overrides A', () => {
|
|
9
|
+
type A = { a: number }
|
|
10
|
+
type B = { a: string, b: string }
|
|
11
|
+
type S = SpreadRecord<A, B>
|
|
12
|
+
|
|
13
|
+
assertType.isTrue(true as Equal<S, { a: string, b: string }>)
|
|
14
|
+
})
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { isType, ValueOf } from '..'
|
|
2
|
+
|
|
3
|
+
test('work with primitive type', () => {
|
|
4
|
+
type A = ValueOf<string>
|
|
5
|
+
isType.equal<false, never, A>()
|
|
6
|
+
})
|
|
7
|
+
|
|
8
|
+
test('If all values has the same type, the result is of that type', () => {
|
|
9
|
+
const HTTP_METHOD = {
|
|
10
|
+
GET: 'GET',
|
|
11
|
+
POST: 'POST',
|
|
12
|
+
DELETE: 'DELETE',
|
|
13
|
+
PUT: 'PUT',
|
|
14
|
+
}
|
|
15
|
+
type A = ValueOf<typeof HTTP_METHOD>
|
|
16
|
+
isType.equal<true, string, A>()
|
|
17
|
+
})
|
|
18
|
+
|
|
19
|
+
test('If value has multiple types, the result is the union of those types', () => {
|
|
20
|
+
const logLevel = {
|
|
21
|
+
none: '0',
|
|
22
|
+
error: '1',
|
|
23
|
+
warn: 2,
|
|
24
|
+
info: 3,
|
|
25
|
+
debug: 4,
|
|
26
|
+
}
|
|
27
|
+
type A = ValueOf<typeof logLevel>
|
|
28
|
+
isType.equal<true, string | number, A>()
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
test('literal types are preserved', () => {
|
|
32
|
+
type L = { a: 1, b: 2, c: 'a', d: 'b' }
|
|
33
|
+
type A = ValueOf<L>
|
|
34
|
+
isType.equal<true, 1 | 2 | 'a' | 'b', A>()
|
|
35
|
+
})
|
|
36
|
+
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { AnyRecord } from './AnyRecord'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* creates a facade of the subject.
|
|
5
|
+
*/
|
|
6
|
+
export function facade<T extends AnyRecord, P1 extends keyof T>(subject: T, prop1: P1): Pick<T, P1>
|
|
7
|
+
export function facade<T extends AnyRecord, P1 extends keyof T, P2 extends keyof T>(subject: T, prop1: P1, prop2: P2): Pick<T, P1 | P2>
|
|
8
|
+
export function facade<T extends AnyRecord, P1 extends keyof T, P2 extends keyof T, P3 extends keyof T>(subject: T, prop1: P1, prop2: P2, prop3: P3): Pick<T, P1 | P2 | P3>
|
|
9
|
+
export function facade<T extends AnyRecord, P1 extends keyof T, P2 extends keyof T, P3 extends keyof T, P4 extends keyof T>(subject: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4): Pick<T, P1 | P2 | P3 | P4>
|
|
10
|
+
export function facade<T extends AnyRecord, P1 extends keyof T, P2 extends keyof T, P3 extends keyof T, P4 extends keyof T, P5 extends keyof T>(subject: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4, prop5: P5): Pick<T, P1 | P2 | P3 | P4 | P5>
|
|
11
|
+
export function facade<T extends AnyRecord, P1 extends keyof T, P2 extends keyof T, P3 extends keyof T, P4 extends keyof T, P5 extends keyof T, P6 extends keyof T>(subject: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4, prop5: P5, prop6: P6): Pick<T, P1 | P2 | P3 | P4 | P5 | P6>
|
|
12
|
+
export function facade<T extends AnyRecord, P1 extends keyof T, P2 extends keyof T, P3 extends keyof T, P4 extends keyof T, P5 extends keyof T, P6 extends keyof T, P7 extends keyof T>(subject: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4, prop5: P5, prop6: P6, prop7: P7): Pick<T, P1 | P2 | P3 | P4 | P5 | P6 | P7>
|
|
13
|
+
export function facade<T extends AnyRecord, P1 extends keyof T, P2 extends keyof T, P3 extends keyof T, P4 extends keyof T, P5 extends keyof T, P6 extends keyof T, P7 extends keyof T, P8 extends keyof T>(subject: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4, prop5: P5, prop6: P6, prop7: P7, prop8: P8): Pick<T, P1 | P2 | P3 | P4 | P5 | P6 | P7 | P8>
|
|
14
|
+
export function facade<T extends AnyRecord, P1 extends keyof T, P2 extends keyof T, P3 extends keyof T, P4 extends keyof T, P5 extends keyof T, P6 extends keyof T, P7 extends keyof T, P8 extends keyof T, P9 extends keyof T>(subject: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4, prop5: P5, prop6: P6, prop7: P7, prop8: P8, prop9: P9): Pick<T, P1 | P2 | P3 | P4 | P5 | P6 | P7 | P8 | P9>
|
|
15
|
+
export function facade<T extends AnyRecord, P1 extends keyof T, P2 extends keyof T, P3 extends keyof T, P4 extends keyof T, P5 extends keyof T, P6 extends keyof T, P7 extends keyof T, P8 extends keyof T, P9 extends keyof T, P10 extends keyof T>(subject: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4, prop5: P5, prop6: P6, prop7: P7, prop8: P8, prop9: P9, prop10: P10): Pick<T, P1 | P2 | P3 | P4 | P5 | P6 | P7 | P8 | P9 | P10>
|
|
16
|
+
export function facade<T extends AnyRecord, P1 extends keyof T, P2 extends keyof T, P3 extends keyof T, P4 extends keyof T, P5 extends keyof T, P6 extends keyof T, P7 extends keyof T, P8 extends keyof T, P9 extends keyof T, P10 extends keyof T, P11 extends keyof T>(subject: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4, prop5: P5, prop6: P6, prop7: P7, prop8: P8, prop9: P9, prop10: P10, prop11: P11): Pick<T, P1 | P2 | P3 | P4 | P5 | P6 | P7 | P8 | P9 | P10 | P11>
|
|
17
|
+
export function facade<T extends AnyRecord, P1 extends keyof T, P2 extends keyof T, P3 extends keyof T, P4 extends keyof T, P5 extends keyof T, P6 extends keyof T, P7 extends keyof T, P8 extends keyof T, P9 extends keyof T, P10 extends keyof T, P11 extends keyof T, P12 extends keyof T>(subject: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4, prop5: P5, prop6: P6, prop7: P7, prop8: P8, prop9: P9, prop10: P10, prop11: P11, prop12: P12): Pick<T, P1 | P2 | P3 | P4 | P5 | P6 | P7 | P8 | P9 | P10 | P11 | P12>
|
|
18
|
+
export function facade<T extends AnyRecord>(subject: T, ...props: (keyof T)[]) {
|
|
19
|
+
return props.reduce((p, k) => {
|
|
20
|
+
const prop = subject[k]
|
|
21
|
+
if (typeof prop === 'function') {
|
|
22
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call
|
|
23
|
+
p[k] = prop.bind(subject)
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
Object.defineProperty(p, k, {
|
|
27
|
+
get() {
|
|
28
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
29
|
+
return subject[k]
|
|
30
|
+
},
|
|
31
|
+
set(value: any) {
|
|
32
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-assignment
|
|
33
|
+
return subject[k] = value
|
|
34
|
+
},
|
|
35
|
+
})
|
|
36
|
+
}
|
|
37
|
+
return p
|
|
38
|
+
}, {} as T)
|
|
39
|
+
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { getField } from '..'
|
|
2
|
+
|
|
3
|
+
test('support undefined', () => {
|
|
4
|
+
const sub: { a: number } | undefined = { a: 1 }
|
|
5
|
+
expect(getField(sub, 'a')).toBe(1)
|
|
6
|
+
})
|
|
7
|
+
|
|
8
|
+
test('support null', () => {
|
|
9
|
+
const sub: { a: number } | null = { a: 1 }
|
|
10
|
+
expect(getField(sub, 'a')).toBe(1)
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
test('can specify default value', () => {
|
|
14
|
+
const sub: { a?: number } = { a: undefined }
|
|
15
|
+
expect(getField(sub, 'a', 2)).toBe(2)
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
test('get from union keys', () => {
|
|
19
|
+
const sub: { a: number, b: string } | { a: number, c: string } = { a: 1, b: 'b' }
|
|
20
|
+
expect(getField(sub, 'b')).toBe('b')
|
|
21
|
+
})
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { AnyRecord } from './AnyRecord'
|
|
2
|
+
|
|
3
|
+
export type HasKey<T, K, Then = true, Else = false> = K extends keyof T ? Then : Else
|
|
4
|
+
|
|
5
|
+
export function hasKey<T extends AnyRecord, K extends string>(subject: T, ...keys: K[]): HasKey<T, K> {
|
|
6
|
+
return !keys.some(key => !subject[key]) as unknown as HasKey<T, K>
|
|
7
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { hasProperty } from '..'
|
|
2
|
+
|
|
3
|
+
test('hasProperty', () => {
|
|
4
|
+
type X = { name: string } & ({ a: 1 } | { b: 2 })
|
|
5
|
+
|
|
6
|
+
const x: X = { name: 'n', a: 1 }
|
|
7
|
+
|
|
8
|
+
if (hasProperty(x, 'a'))
|
|
9
|
+
expect(x.a).toBe(1)
|
|
10
|
+
|
|
11
|
+
const y: X = { name: 'n', b: 2 }
|
|
12
|
+
|
|
13
|
+
if (hasProperty(y, 'b'))
|
|
14
|
+
expect(y.b).toBe(2)
|
|
15
|
+
})
|
|
File without changes
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export type { ANotB, BNotA, LeftJoin } from './ANotB'
|
|
2
|
+
export type { AnyRecord } from './AnyRecord'
|
|
3
|
+
export * from './everyKey'
|
|
4
|
+
export type { ExcludePropType } from './ExcludePropType'
|
|
5
|
+
export * from './facade'
|
|
6
|
+
export * from './filterKey'
|
|
7
|
+
export * from './findKey'
|
|
8
|
+
export * from './forEachKey'
|
|
9
|
+
export * from './getField'
|
|
10
|
+
export * from './hasKey'
|
|
11
|
+
export * from './hasProperty'
|
|
12
|
+
export type { IsDisjoint } from './IsDisjoint'
|
|
13
|
+
export type { IsRecord } from './IsRecord'
|
|
14
|
+
export type { KeysOfOptional } from './KeyofOptional'
|
|
15
|
+
export type { KeysWithDiffType } from './KeysWithDiffType'
|
|
16
|
+
export type { KeyTypes } from './KeyTypes'
|
|
17
|
+
export type { KnownKeys } from './KnownKeys'
|
|
18
|
+
export * from './mapKey'
|
|
19
|
+
export * from './mapProperties'
|
|
20
|
+
export * from './omit'
|
|
21
|
+
export type { OptionalKeys } from './OptionalKeys'
|
|
22
|
+
export type { PartialOmit, PartialPick } from './Partial'
|
|
23
|
+
export * from './pick'
|
|
24
|
+
export type { RecursiveIntersect } from './RecursiveIntersect'
|
|
25
|
+
export type { RecursivePartial } from './RecursivePartial'
|
|
26
|
+
export type { RecursiveRequired } from './RecursiveRequired'
|
|
27
|
+
export * from './reduceKey'
|
|
28
|
+
export * from './replaceProperty'
|
|
29
|
+
export type { RequiredExcept, RequiredPick } from './Required'
|
|
30
|
+
export type { RequiredKeys } from './RequiredKeys'
|
|
31
|
+
export * from './someKey'
|
|
32
|
+
export type { SpreadRecord } from './SpreadRecord'
|
|
33
|
+
export * from './typeOverrideIncompatible'
|
|
34
|
+
export type { ValueOf } from './ValueOf'
|
|
35
|
+
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { mapProperties } from '..'
|
|
2
|
+
|
|
3
|
+
test('basic usage', () => {
|
|
4
|
+
const actual = mapProperties({ a: 1, b: 2 }, (v, k) => k + String((v * 2)))
|
|
5
|
+
expect(actual).toEqual({ a: 'a2', b: 'b4' })
|
|
6
|
+
})
|
|
7
|
+
|
|
8
|
+
test('mixed type', () => {
|
|
9
|
+
const actual = mapProperties({ a: 1, b: 'b' }, (v, k) => k + String(v))
|
|
10
|
+
expect(actual).toEqual({ a: 'a1', b: 'bb' })
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
test('extract value from prop', () => {
|
|
14
|
+
const actual = mapProperties({ a: { foo: 'x' }, b: { foo: 'y' } }, (v) => v.foo)
|
|
15
|
+
expect(actual).toEqual({ a: 'x', b: 'y' })
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
test('parent props are not mapped', () => {
|
|
19
|
+
class Boo {
|
|
20
|
+
shared(v: number) { return v * 2 }
|
|
21
|
+
own = (v: number) => v * 3
|
|
22
|
+
}
|
|
23
|
+
const boo = new Boo()
|
|
24
|
+
|
|
25
|
+
const actual = mapProperties(boo, (v) => v(2))
|
|
26
|
+
expect(actual).toEqual({ own: 6 })
|
|
27
|
+
})
|
|
File without changes
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { assertType, Equal, Except, Omit, omit } from '..'
|
|
2
|
+
|
|
3
|
+
describe('Omit', () => {
|
|
4
|
+
test('work with primitive types', () => {
|
|
5
|
+
type N = Omit<number, 'toFixed'>
|
|
6
|
+
assertType.isFunction((() => ({})) as N['toExponential'])
|
|
7
|
+
})
|
|
8
|
+
|
|
9
|
+
test('Remove properties', () => {
|
|
10
|
+
type Foo = {
|
|
11
|
+
a: number,
|
|
12
|
+
b: string,
|
|
13
|
+
c: boolean,
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
type Actual = Omit<Foo, 'c'>
|
|
17
|
+
const a: Actual = { a: 0, b: '' }
|
|
18
|
+
assertType.isNumber(a.a)
|
|
19
|
+
assertType.isString(a.b)
|
|
20
|
+
|
|
21
|
+
type Revert = Omit<Foo, keyof Actual>
|
|
22
|
+
const r: Revert = { c: false }
|
|
23
|
+
assertType.isBoolean(r.c)
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
test('distributive omit', () => {
|
|
27
|
+
type Action = InvokeAction | ReturnAction
|
|
28
|
+
|
|
29
|
+
type InvokeAction = {
|
|
30
|
+
type: 'invoke',
|
|
31
|
+
id: string,
|
|
32
|
+
payload: string[],
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
type ReturnAction = {
|
|
36
|
+
type: 'return',
|
|
37
|
+
id: string,
|
|
38
|
+
payload: string,
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const x: Omit<Action, 'id'> = { type: 'return', payload: '' }
|
|
42
|
+
|
|
43
|
+
const actions: Action[] = []
|
|
44
|
+
|
|
45
|
+
actions.push({ ...x, id: '1' })
|
|
46
|
+
})
|
|
47
|
+
|
|
48
|
+
test('distributive Omit with disjoined keys', () => {
|
|
49
|
+
type Union = {
|
|
50
|
+
type: 'A',
|
|
51
|
+
foo: string,
|
|
52
|
+
} | {
|
|
53
|
+
type: 'B',
|
|
54
|
+
foo: string,
|
|
55
|
+
bar: string,
|
|
56
|
+
}
|
|
57
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
58
|
+
type Id<T> = {} & { [P in keyof T]: T[P] }
|
|
59
|
+
let x: Id<Omit<Union, 'bar'>> = { type: 'A', foo: 'foo' }
|
|
60
|
+
x = { type: 'B', foo: 'bar' }
|
|
61
|
+
expect(x.foo).toBe('bar')
|
|
62
|
+
})
|
|
63
|
+
|
|
64
|
+
test('intersection types with generic', () => {
|
|
65
|
+
type Foo = { a: string, b: string }
|
|
66
|
+
function foo<T>(input: Omit<Foo & T, 'a'>): void {
|
|
67
|
+
assertType.isString(input.b)
|
|
68
|
+
}
|
|
69
|
+
foo({ b: '1' })
|
|
70
|
+
})
|
|
71
|
+
|
|
72
|
+
test('omit properties from object', () => {
|
|
73
|
+
const actual = omit({ a: 1, b: 2 }, 'a')
|
|
74
|
+
|
|
75
|
+
expect(actual).toEqual({ b: 2 })
|
|
76
|
+
})
|
|
77
|
+
|
|
78
|
+
test('omit all', () => {
|
|
79
|
+
const actual = omit({ a: 1 }, 'a')
|
|
80
|
+
|
|
81
|
+
expect(actual).toEqual({})
|
|
82
|
+
assertType.isTrue(true as Equal<keyof typeof actual, never>)
|
|
83
|
+
})
|
|
84
|
+
})
|
|
85
|
+
|
|
86
|
+
describe('Except()', () => {
|
|
87
|
+
test('Remove properties', () => {
|
|
88
|
+
type Foo = {
|
|
89
|
+
a: number,
|
|
90
|
+
b: string,
|
|
91
|
+
c: boolean,
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
type Actual = Except<Foo, 'c'>
|
|
95
|
+
const a: Actual = { a: 0, b: '' }
|
|
96
|
+
assertType.isNumber(a.a)
|
|
97
|
+
assertType.isString(a.b)
|
|
98
|
+
|
|
99
|
+
// tslint:disable-next-line: deprecation
|
|
100
|
+
type Revert = Except<Foo, keyof Actual>
|
|
101
|
+
const r: Revert = { c: false }
|
|
102
|
+
assertType.isBoolean(r.c)
|
|
103
|
+
})
|
|
104
|
+
})
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { AnyRecord, reduceByKey } from '../object'
|
|
2
|
+
import { UnionKeys } from '../UnionKeys'
|
|
3
|
+
import { Pick } from './pick'
|
|
4
|
+
|
|
5
|
+
// by Titian Cernicova-Dragomir
|
|
6
|
+
// https://github.com/microsoft/TypeScript/issues/28339#issuecomment-463577347
|
|
7
|
+
// type-zoo
|
|
8
|
+
export type Omit<T, K extends UnionKeys<T>> = T extends T
|
|
9
|
+
? keyof T extends K
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
11
|
+
? {}
|
|
12
|
+
: Pick<T, Exclude<keyof T, K>> : never
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @deprecated replaced by `Omit`
|
|
16
|
+
*/
|
|
17
|
+
export type Except<T, K extends keyof T> = Omit<T, K>
|
|
18
|
+
|
|
19
|
+
export function omit<T extends AnyRecord, P1 extends UnionKeys<T>>(subject: T, prop1: P1): Omit<T, P1>
|
|
20
|
+
export function omit<T extends AnyRecord, P1 extends UnionKeys<T>, P2 extends UnionKeys<T>>(subject: T, prop1: P1, prop2: P2): Omit<T, P1 | P2>
|
|
21
|
+
export function omit<T extends AnyRecord, P1 extends UnionKeys<T>, P2 extends UnionKeys<T>, P3 extends UnionKeys<T>>(subject: T, prop1: P1, prop2: P2, prop3: P3): Omit<T, P1 | P2 | P3>
|
|
22
|
+
export function omit<T extends AnyRecord, P1 extends UnionKeys<T>, P2 extends UnionKeys<T>, P3 extends UnionKeys<T>, P4 extends UnionKeys<T>>(subject: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4): Omit<T, P1 | P2 | P3 | P4>
|
|
23
|
+
export function omit<T extends AnyRecord, P1 extends UnionKeys<T>, P2 extends UnionKeys<T>, P3 extends UnionKeys<T>, P4 extends UnionKeys<T>, P5 extends UnionKeys<T>>(subject: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4, prop5: P5): Omit<T, P1 | P2 | P3 | P4 | P5>
|
|
24
|
+
export function omit<T extends AnyRecord, P1 extends UnionKeys<T>, P2 extends UnionKeys<T>, P3 extends UnionKeys<T>, P4 extends UnionKeys<T>, P5 extends UnionKeys<T>, P6 extends UnionKeys<T>>(subject: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4, prop5: P5, prop6: P6): Omit<T, P1 | P2 | P3 | P4 | P5 | P6>
|
|
25
|
+
export function omit<T extends AnyRecord, P1 extends UnionKeys<T>, P2 extends UnionKeys<T>, P3 extends UnionKeys<T>, P4 extends UnionKeys<T>, P5 extends UnionKeys<T>, P6 extends UnionKeys<T>, P7 extends UnionKeys<T>>(subject: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4, prop5: P5, prop6: P6, prop7: P7): Omit<T, P1 | P2 | P3 | P4 | P5 | P6 | P7>
|
|
26
|
+
export function omit<T extends AnyRecord, P1 extends UnionKeys<T>, P2 extends UnionKeys<T>, P3 extends UnionKeys<T>, P4 extends UnionKeys<T>, P5 extends UnionKeys<T>, P6 extends UnionKeys<T>, P7 extends UnionKeys<T>, P8 extends UnionKeys<T>>(subject: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4, prop5: P5, prop6: P6, prop7: P7, prop8: P8): Omit<T, P1 | P2 | P3 | P4 | P5 | P6 | P7 | P8>
|
|
27
|
+
export function omit<T extends AnyRecord, P1 extends UnionKeys<T>, P2 extends UnionKeys<T>, P3 extends UnionKeys<T>, P4 extends UnionKeys<T>, P5 extends UnionKeys<T>, P6 extends UnionKeys<T>, P7 extends UnionKeys<T>, P8 extends UnionKeys<T>, P9 extends UnionKeys<T>>(subject: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4, prop5: P5, prop6: P6, prop7: P7, prop8: P8, prop9: P9): Omit<T, P1 | P2 | P3 | P4 | P5 | P6 | P7 | P8 | P9>
|
|
28
|
+
export function omit<T extends AnyRecord, P1 extends UnionKeys<T>, P2 extends UnionKeys<T>, P3 extends UnionKeys<T>, P4 extends UnionKeys<T>, P5 extends UnionKeys<T>, P6 extends UnionKeys<T>, P7 extends UnionKeys<T>, P8 extends UnionKeys<T>, P9 extends UnionKeys<T>, P10 extends UnionKeys<T>>(subject: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4, prop5: P5, prop6: P6, prop7: P7, prop8: P8, prop9: P9, prop10: P10): Omit<T, P1 | P2 | P3 | P4 | P5 | P6 | P7 | P8 | P9 | P10>
|
|
29
|
+
export function omit<T extends AnyRecord, P1 extends UnionKeys<T>, P2 extends UnionKeys<T>, P3 extends UnionKeys<T>, P4 extends UnionKeys<T>, P5 extends UnionKeys<T>, P6 extends UnionKeys<T>, P7 extends UnionKeys<T>, P8 extends UnionKeys<T>, P9 extends UnionKeys<T>, P10 extends UnionKeys<T>, P11 extends UnionKeys<T>>(subject: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4, prop5: P5, prop6: P6, prop7: P7, prop8: P8, prop9: P9, prop10: P10, prop11: P11): Omit<T, P1 | P2 | P3 | P4 | P5 | P6 | P7 | P8 | P9 | P10 | P11>
|
|
30
|
+
export function omit<T extends AnyRecord, P1 extends UnionKeys<T>, P2 extends UnionKeys<T>, P3 extends UnionKeys<T>, P4 extends UnionKeys<T>, P5 extends UnionKeys<T>, P6 extends UnionKeys<T>, P7 extends UnionKeys<T>, P8 extends UnionKeys<T>, P9 extends UnionKeys<T>, P10 extends UnionKeys<T>, P11 extends UnionKeys<T>, P12 extends UnionKeys<T>>(subject: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4, prop5: P5, prop6: P6, prop7: P7, prop8: P8, prop9: P9, prop10: P10, prop11: P11, prop12: P12): Omit<T, P1 | P2 | P3 | P4 | P5 | P6 | P7 | P8 | P9 | P10 | P11 | P12>
|
|
31
|
+
export function omit<T extends AnyRecord>(subject: T, ...props: Array<UnionKeys<T>>) {
|
|
32
|
+
return reduceByKey(subject, (p, k) => {
|
|
33
|
+
if (props.indexOf(k) === -1) p[k] = subject[k]
|
|
34
|
+
return p
|
|
35
|
+
}, {} as AnyRecord)
|
|
36
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { assertType, canAssign, Equal, Pick, pick } from '..'
|
|
2
|
+
|
|
3
|
+
test('pick properties from object', () => {
|
|
4
|
+
const actual = pick({ a: 1, b: 2 }, 'a')
|
|
5
|
+
|
|
6
|
+
expect(actual).toEqual({ a: 1 })
|
|
7
|
+
})
|
|
8
|
+
|
|
9
|
+
test('distributive pick', () => {
|
|
10
|
+
type Action = InvokeAction | ReturnAction
|
|
11
|
+
|
|
12
|
+
type InvokeAction = {
|
|
13
|
+
type: 'invoke',
|
|
14
|
+
id: string,
|
|
15
|
+
payload: string[],
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
type ReturnAction = {
|
|
19
|
+
type: 'return',
|
|
20
|
+
id: string,
|
|
21
|
+
payload: string,
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const x: Pick<Action, 'type' | 'payload'> = { type: 'invoke', payload: [] }
|
|
25
|
+
|
|
26
|
+
const actions: Action[] = []
|
|
27
|
+
|
|
28
|
+
actions.push({ ...x, id: '1' })
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
test('distributive pick with disjoined keys', () => {
|
|
32
|
+
type Union = {
|
|
33
|
+
type: 'A',
|
|
34
|
+
foo: string,
|
|
35
|
+
} | {
|
|
36
|
+
type: 'B',
|
|
37
|
+
foo: string,
|
|
38
|
+
bar: string,
|
|
39
|
+
}
|
|
40
|
+
type Id<T> = { [P in keyof T]: T[P] }
|
|
41
|
+
let x: Id<Pick<Union, 'type' | 'bar'>> = { type: 'A' }
|
|
42
|
+
x = { type: 'B', bar: 'bar' }
|
|
43
|
+
|
|
44
|
+
expect(x.bar).toBe('bar')
|
|
45
|
+
})
|
|
46
|
+
|
|
47
|
+
test('intersection types with generic', () => {
|
|
48
|
+
type Foo = { a: string, b: string }
|
|
49
|
+
function foo<T>(input: Pick<Foo & T, 'a'>): void {
|
|
50
|
+
assertType.isString(input.a)
|
|
51
|
+
}
|
|
52
|
+
foo({ a: '1' })
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
test('optional property remains optional', () => {
|
|
56
|
+
type Foo = { a?: string, b: string }
|
|
57
|
+
type A = Pick<Foo, 'a'>
|
|
58
|
+
assertType.isTrue(canAssign<A>()({}))
|
|
59
|
+
})
|
|
60
|
+
|
|
61
|
+
test('pick never gets empty object', () => {
|
|
62
|
+
type A = { a: number }
|
|
63
|
+
type S = Pick<A, never>
|
|
64
|
+
type K = keyof S
|
|
65
|
+
assertType.isTrue(true as Equal<K, never>)
|
|
66
|
+
})
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { UnionKeys } from '../UnionKeys'
|
|
2
|
+
import { AnyRecord } from './AnyRecord'
|
|
3
|
+
import { reduceByKey } from './reduceKey'
|
|
4
|
+
|
|
5
|
+
export function pick<T extends AnyRecord, P1 extends UnionKeys<T>>(subject: T, prop1: P1): Pick<T, P1>
|
|
6
|
+
export function pick<T extends AnyRecord, P1 extends UnionKeys<T>, P2 extends UnionKeys<T>>(subject: T, prop1: P1, prop2: P2): Pick<T, P1 | P2>
|
|
7
|
+
export function pick<T extends AnyRecord, P1 extends UnionKeys<T>, P2 extends UnionKeys<T>, P3 extends UnionKeys<T>>(subject: T, prop1: P1, prop2: P2, prop3: P3): Pick<T, P1 | P2 | P3>
|
|
8
|
+
export function pick<T extends AnyRecord, P1 extends UnionKeys<T>, P2 extends UnionKeys<T>, P3 extends UnionKeys<T>, P4 extends UnionKeys<T>>(subject: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4): Pick<T, P1 | P2 | P3 | P4>
|
|
9
|
+
export function pick<T extends AnyRecord, P1 extends UnionKeys<T>, P2 extends UnionKeys<T>, P3 extends UnionKeys<T>, P4 extends UnionKeys<T>, P5 extends UnionKeys<T>>(subject: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4, prop5: P5): Pick<T, P1 | P2 | P3 | P4 | P5>
|
|
10
|
+
export function pick<T extends AnyRecord, P1 extends UnionKeys<T>, P2 extends UnionKeys<T>, P3 extends UnionKeys<T>, P4 extends UnionKeys<T>, P5 extends UnionKeys<T>, P6 extends UnionKeys<T>>(subject: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4, prop5: P5, prop6: P6): Pick<T, P1 | P2 | P3 | P4 | P5 | P6>
|
|
11
|
+
export function pick<T extends AnyRecord, P1 extends UnionKeys<T>, P2 extends UnionKeys<T>, P3 extends UnionKeys<T>, P4 extends UnionKeys<T>, P5 extends UnionKeys<T>, P6 extends UnionKeys<T>, P7 extends UnionKeys<T>>(subject: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4, prop5: P5, prop6: P6, prop7: P7): Pick<T, P1 | P2 | P3 | P4 | P5 | P6 | P7>
|
|
12
|
+
export function pick<T extends AnyRecord, P1 extends UnionKeys<T>, P2 extends UnionKeys<T>, P3 extends UnionKeys<T>, P4 extends UnionKeys<T>, P5 extends UnionKeys<T>, P6 extends UnionKeys<T>, P7 extends UnionKeys<T>, P8 extends UnionKeys<T>>(subject: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4, prop5: P5, prop6: P6, prop7: P7, prop8: P8): Pick<T, P1 | P2 | P3 | P4 | P5 | P6 | P7 | P8>
|
|
13
|
+
export function pick<T extends AnyRecord, P1 extends UnionKeys<T>, P2 extends UnionKeys<T>, P3 extends UnionKeys<T>, P4 extends UnionKeys<T>, P5 extends UnionKeys<T>, P6 extends UnionKeys<T>, P7 extends UnionKeys<T>, P8 extends UnionKeys<T>, P9 extends UnionKeys<T>>(subject: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4, prop5: P5, prop6: P6, prop7: P7, prop8: P8, prop9: P9): Pick<T, P1 | P2 | P3 | P4 | P5 | P6 | P7 | P8 | P9>
|
|
14
|
+
export function pick<T extends AnyRecord, P1 extends UnionKeys<T>, P2 extends UnionKeys<T>, P3 extends UnionKeys<T>, P4 extends UnionKeys<T>, P5 extends UnionKeys<T>, P6 extends UnionKeys<T>, P7 extends UnionKeys<T>, P8 extends UnionKeys<T>, P9 extends UnionKeys<T>, P10 extends UnionKeys<T>>(subject: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4, prop5: P5, prop6: P6, prop7: P7, prop8: P8, prop9: P9, prop10: P10): Pick<T, P1 | P2 | P3 | P4 | P5 | P6 | P7 | P8 | P9 | P10>
|
|
15
|
+
export function pick<T extends AnyRecord, P1 extends UnionKeys<T>, P2 extends UnionKeys<T>, P3 extends UnionKeys<T>, P4 extends UnionKeys<T>, P5 extends UnionKeys<T>, P6 extends UnionKeys<T>, P7 extends UnionKeys<T>, P8 extends UnionKeys<T>, P9 extends UnionKeys<T>, P10 extends UnionKeys<T>, P11 extends UnionKeys<T>>(subject: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4, prop5: P5, prop6: P6, prop7: P7, prop8: P8, prop9: P9, prop10: P10, prop11: P11): Pick<T, P1 | P2 | P3 | P4 | P5 | P6 | P7 | P8 | P9 | P10 | P11>
|
|
16
|
+
export function pick<T extends AnyRecord, P1 extends UnionKeys<T>, P2 extends UnionKeys<T>, P3 extends UnionKeys<T>, P4 extends UnionKeys<T>, P5 extends UnionKeys<T>, P6 extends UnionKeys<T>, P7 extends UnionKeys<T>, P8 extends UnionKeys<T>, P9 extends UnionKeys<T>, P10 extends UnionKeys<T>, P11 extends UnionKeys<T>, P12 extends UnionKeys<T>>(subject: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4, prop5: P5, prop6: P6, prop7: P7, prop8: P8, prop9: P9, prop10: P10, prop11: P11, prop12: P12): Pick<T, P1 | P2 | P3 | P4 | P5 | P6 | P7 | P8 | P9 | P10 | P11 | P12>
|
|
17
|
+
export function pick<T extends AnyRecord>(subject: T, ...props: Array<UnionKeys<T>>) {
|
|
18
|
+
return reduceByKey(subject, (p, k) => {
|
|
19
|
+
if (props.indexOf(k) >= 0) p[k] = subject[k]
|
|
20
|
+
return p
|
|
21
|
+
}, {} as T)
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Pick properties `K` from `T`.
|
|
26
|
+
* Works with union.
|
|
27
|
+
*
|
|
28
|
+
* Original type by Titian Cernicova-Dragomir
|
|
29
|
+
* @see <https://github.com/microsoft/TypeScript/issues/28339#issuecomment-463577347>
|
|
30
|
+
*/
|
|
31
|
+
export type Pick<T, K extends UnionKeys<T>> = T extends unknown ? Pick._<T, keyof T & K> : never
|
|
32
|
+
|
|
33
|
+
export namespace Pick {
|
|
34
|
+
export type _<T, K extends keyof T> = { [P in K]: T[P] }
|
|
35
|
+
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { typeOverrideIncompatible } from '..'
|
|
2
|
+
|
|
3
|
+
test('same type override has no property', () => {
|
|
4
|
+
type A = { a: 1 }
|
|
5
|
+
const transform = typeOverrideIncompatible<A>()
|
|
6
|
+
|
|
7
|
+
// TODO: find a way to assert `override` has no property
|
|
8
|
+
transform({ a: 1 }, {})
|
|
9
|
+
})
|
|
10
|
+
|
|
11
|
+
test('disjoint type override is A', () => {
|
|
12
|
+
type A = { a: 1 }
|
|
13
|
+
const transform = typeOverrideIncompatible<A>()
|
|
14
|
+
|
|
15
|
+
transform({ b: 2 }, { a: 1 })
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
test('intersect type override is ANotB', () => {
|
|
19
|
+
const a = { a: 1, b: 2 } as const
|
|
20
|
+
const b = { b: 3, c: 3 } as const
|
|
21
|
+
const transform = typeOverrideIncompatible<typeof a>()
|
|
22
|
+
|
|
23
|
+
transform(b, { a: 1, b: 2 })
|
|
24
|
+
})
|