type-plus 3.13.0 → 4.0.0
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 +32 -88
- package/cjs/ComposableTypes.d.ts +8 -0
- package/cjs/ComposableTypes.js +3 -0
- package/cjs/ComposableTypes.js.map +1 -0
- package/{lib → cjs}/JSONTypes.d.ts +0 -0
- package/cjs/JSONTypes.js +27 -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/{lib → cjs}/array/index.d.ts +0 -0
- package/{lib → cjs}/array/index.js +0 -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/cjs/assertion/assertType.d.ts +32 -0
- package/cjs/assertion/assertType.js +107 -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/{lib → cjs}/class/index.d.ts +0 -0
- package/{lib → cjs}/class/index.js +0 -0
- package/cjs/class/index.js.map +1 -0
- package/{lib → cjs}/class/isConstructor.d.ts +0 -0
- package/cjs/class/isConstructor.js +17 -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/{lib → cjs}/function/index.d.ts +0 -0
- package/{lib → cjs}/function/index.js +0 -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/{lib → cjs}/functional/index.d.ts +0 -0
- package/{lib → cjs}/functional/index.js +0 -0
- package/cjs/functional/index.js.map +1 -0
- package/cjs/index.d.ts +17 -0
- package/cjs/index.js +37 -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/{lib → cjs}/math/index.d.ts +0 -0
- package/{lib → cjs}/math/index.js +0 -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/{lib → cjs}/object/index.d.ts +0 -0
- package/{lib → cjs}/object/index.js +0 -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/cjs/object/mapProperties.js +18 -0
- package/cjs/object/mapProperties.js.map +1 -0
- package/{lib → cjs}/object/omit.d.ts +0 -0
- package/cjs/object/omit.js +17 -0
- package/cjs/object/omit.js.map +1 -0
- package/{lib → cjs}/object/pick.d.ts +0 -0
- package/cjs/object/pick.js +17 -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/{lib → cjs}/predicates/CanAssign.d.ts +0 -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 → cjs}/predicates/index.d.ts +0 -0
- package/{lib → cjs}/predicates/index.js +0 -0
- package/cjs/predicates/index.js.map +1 -0
- package/{lib → cjs}/predicates/isEmptyObject.d.ts +0 -0
- package/{lib → cjs}/predicates/isEmptyObject.js +0 -0
- package/cjs/predicates/isEmptyObject.js.map +1 -0
- package/cjs/predicates/isType.d.ts +10 -0
- package/cjs/predicates/isType.js +28 -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/{lib → cjs}/promise/index.d.ts +0 -0
- package/{lib → cjs}/promise/index.js +0 -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/{lib → cjs}/utils/index.d.ts +0 -0
- package/{lib → cjs}/utils/index.js +0 -0
- package/cjs/utils/index.js.map +1 -0
- package/esm/ComposableTypes.js +2 -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/{libm → esm}/array/index.js +0 -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/{libm → esm}/class/index.js +0 -0
- package/esm/class/index.js.map +1 -0
- package/esm/class/isConstructor.js +13 -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/{libm → esm}/function/index.js +0 -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/{libm → esm}/functional/index.js +0 -0
- package/esm/functional/index.js.map +1 -0
- package/esm/index.js +22 -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/{libm → esm}/math/index.js +0 -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/{libm → esm}/object/index.js +0 -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/{libm → esm}/predicates/index.js +0 -0
- package/esm/predicates/index.js.map +1 -0
- package/{libm → esm}/predicates/isEmptyObject.js +0 -0
- package/esm/predicates/isEmptyObject.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/{libm → esm}/promise/index.js +0 -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/{libm → esm}/utils/index.js +0 -0
- package/esm/utils/index.js.map +1 -0
- package/package.json +47 -51
- package/ts/ComposableTypes.spec.ts +29 -0
- package/ts/ComposableTypes.ts +10 -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/{src → ts}/binary/_binary.ts +0 -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/{src → ts}/class/index.ts +0 -0
- package/ts/class/isConstructor.spec.ts +35 -0
- package/ts/class/isConstructor.ts +14 -0
- package/ts/function/AnyFunction.spec.ts +21 -0
- package/{src → ts}/function/AnyFunction.ts +0 -0
- package/{src → ts}/function/index.ts +0 -0
- package/ts/functional/ChainFn.spec.ts +7 -0
- package/ts/functional/ChainFn.ts +6 -0
- package/ts/functional/Maybe.spec.ts +42 -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/ts/object/getField.ts +21 -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/{src → ts}/predicates/CanAssign.ts +0 -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/index.spec.ts +73 -0
- package/ts/predicates/index.ts +17 -0
- package/ts/predicates/isEmptyObject.spec.ts +15 -0
- package/ts/predicates/isEmptyObject.ts +2 -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/{src → ts}/promise/index.ts +0 -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/JSONTypes.js +0 -23
- 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.js.map +0 -1
- package/lib/array/literalArray.js.map +0 -1
- package/lib/array/reduceWhile.js.map +0 -1
- package/lib/assertion/assertType.d.ts +0 -78
- package/lib/assertion/assertType.js +0 -107
- 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.js.map +0 -1
- package/lib/class/isConstructor.js +0 -18
- package/lib/class/isConstructor.js.map +0 -1
- package/lib/function/AnyFunction.js.map +0 -1
- package/lib/function/index.js.map +0 -1
- package/lib/functional/ChainFn.js.map +0 -1
- package/lib/functional/index.js.map +0 -1
- package/lib/index.d.ts +0 -19
- package/lib/index.js +0 -48
- 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.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.js.map +0 -1
- package/lib/object/mapKey.js.map +0 -1
- package/lib/object/mapProperties.js +0 -18
- package/lib/object/mapProperties.js.map +0 -1
- package/lib/object/omit.js +0 -17
- package/lib/object/omit.js.map +0 -1
- package/lib/object/pick.js +0 -17
- 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.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.js.map +0 -1
- package/lib/predicates/isEmptyObject.js.map +0 -1
- package/lib/predicates/isType.d.ts +0 -20
- package/lib/predicates/isType.js +0 -28
- 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.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 -46
- package/lib/types/Number.js.map +0 -1
- package/lib/types/Object.d.ts +0 -329
- 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 -47
- 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 -39
- 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 -48
- 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 -158
- 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 -116
- 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 -344
- package/lib/types/optional.js +0 -33
- package/lib/types/optional.js.map +0 -1
- package/lib/types/required.d.ts +0 -696
- 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.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.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.map +0 -1
- package/libm/class/isConstructor.js +0 -14
- package/libm/class/isConstructor.js.map +0 -1
- package/libm/function/AnyFunction.js.map +0 -1
- package/libm/function/index.js.map +0 -1
- package/libm/functional/ChainFn.js.map +0 -1
- package/libm/functional/index.js.map +0 -1
- package/libm/index.js +0 -20
- 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.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.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.map +0 -1
- 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.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.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/class/AnyConstructor.spec.ts +0 -13
- package/src/class/isConstructor.spec.ts +0 -35
- package/src/class/isConstructor.ts +0 -15
- package/src/function/AnyFunction.spec.ts +0 -21
- package/src/functional/ChainFn.spec.ts +0 -7
- package/src/functional/ChainFn.ts +0 -6
- package/src/functional/Maybe.spec.ts +0 -43
- package/src/functional/Maybe.ts +0 -19
- package/src/functional/index.ts +0 -2
- package/src/index.ts +0 -19
- 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/getField.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/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/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
|
@@ -1,36 +0,0 @@
|
|
|
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
|
-
|
package/src/object/facade.ts
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
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
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
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
|
-
})
|
package/src/object/getField.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { UnionKeys } from '../UnionKeys'
|
|
2
|
-
|
|
3
|
-
export function getField<
|
|
4
|
-
T,
|
|
5
|
-
TX extends Exclude<T, undefined | null>,
|
|
6
|
-
K extends UnionKeys<TX>,
|
|
7
|
-
>(subject: T, key: K): TX[K]
|
|
8
|
-
export function getField<
|
|
9
|
-
T,
|
|
10
|
-
TX extends Exclude<T, undefined | null>,
|
|
11
|
-
K extends UnionKeys<TX>,
|
|
12
|
-
DV extends Exclude<TX[K], undefined>
|
|
13
|
-
>(subject: T, key: K, defaultValue: DV): DV
|
|
14
|
-
export function getField<
|
|
15
|
-
T,
|
|
16
|
-
TX extends Exclude<T, undefined | null>,
|
|
17
|
-
K extends UnionKeys<TX>,
|
|
18
|
-
DV extends Exclude<TX[K], undefined>
|
|
19
|
-
>(subject: T, key: K, defaultValue?: DV) {
|
|
20
|
-
return subject && (subject as { [k in K]: TX[K] | DV })[key] || defaultValue
|
|
21
|
-
}
|
package/src/object/hasKey.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
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
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
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
|
-
})
|
package/src/object/index.ts
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
export * from '../object/IsDisjoint'
|
|
2
|
-
export * from './ANotB'
|
|
3
|
-
export * from './AnyRecord'
|
|
4
|
-
export * from './everyKey'
|
|
5
|
-
export * from './ExcludePropType'
|
|
6
|
-
export * from './facade'
|
|
7
|
-
export * from './filterKey'
|
|
8
|
-
export * from './findKey'
|
|
9
|
-
export * from './forEachKey'
|
|
10
|
-
export * from './getField'
|
|
11
|
-
export * from './hasKey'
|
|
12
|
-
export * from './hasProperty'
|
|
13
|
-
export * from './IsRecord'
|
|
14
|
-
export * from './KeyofOptional'
|
|
15
|
-
export * from './KeysWithDiffType'
|
|
16
|
-
export * from './KeyTypes'
|
|
17
|
-
export * from './KnownKeys'
|
|
18
|
-
export * from './mapKey'
|
|
19
|
-
export * from './mapProperties'
|
|
20
|
-
export * from './omit'
|
|
21
|
-
export * from './OptionalKeys'
|
|
22
|
-
export * from './Partial'
|
|
23
|
-
export * from './pick'
|
|
24
|
-
export * from './RecursiveIntersect'
|
|
25
|
-
export * from './RecursivePartial'
|
|
26
|
-
export * from './RecursiveRequired'
|
|
27
|
-
export * from './reduceKey'
|
|
28
|
-
export * from './replaceProperty'
|
|
29
|
-
export * from './Required'
|
|
30
|
-
export * from './RequiredKeys'
|
|
31
|
-
export * from './someKey'
|
|
32
|
-
export * from './SpreadRecord'
|
|
33
|
-
export * from './typeOverrideIncompatible'
|
|
34
|
-
export * from './ValueOf'
|
|
35
|
-
|
|
@@ -1,27 +0,0 @@
|
|
|
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
|
-
})
|
package/src/object/omit.spec.ts
DELETED
|
@@ -1,104 +0,0 @@
|
|
|
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
|
-
})
|
package/src/object/omit.ts
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
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
|
-
}
|
package/src/object/pick.spec.ts
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
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
|
-
})
|
package/src/object/pick.ts
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
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
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
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
|
-
})
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { assertType, CanAssign, canAssign } from '..'
|
|
2
|
-
|
|
3
|
-
describe('CanAssign<A, B>', () => {
|
|
4
|
-
test('literal type to widen', () => {
|
|
5
|
-
assertType.isTrue(true as CanAssign<1, number>)
|
|
6
|
-
assertType.isTrue(true as CanAssign<1, 1>)
|
|
7
|
-
assertType.isTrue(true as CanAssign<number, number>)
|
|
8
|
-
assertType.isTrue(true as CanAssign<'a', string>)
|
|
9
|
-
assertType.isTrue(true as CanAssign<'a', 'a'>)
|
|
10
|
-
assertType.isTrue(true as CanAssign<string, string>)
|
|
11
|
-
assertType.isTrue(true as CanAssign<false, boolean>)
|
|
12
|
-
assertType.isTrue(true as CanAssign<true, boolean>)
|
|
13
|
-
assertType.isTrue(true as CanAssign<boolean, boolean>)
|
|
14
|
-
})
|
|
15
|
-
test('base type to literal type fails', () => {
|
|
16
|
-
assertType.isFalse(false as CanAssign<number, 1>)
|
|
17
|
-
assertType.isFalse(false as CanAssign<string, 'a'>)
|
|
18
|
-
assertType.isFalse(false as CanAssign<true, false>)
|
|
19
|
-
assertType.isFalse(false as CanAssign<false, true>)
|
|
20
|
-
assertType.isFalse(false as CanAssign<boolean, false>)
|
|
21
|
-
assertType.isFalse(false as CanAssign<boolean, true>)
|
|
22
|
-
})
|
|
23
|
-
test('super set to sub set', () => {
|
|
24
|
-
assertType.isTrue(true as CanAssign<{ a: string, b: number }, { a: string }>)
|
|
25
|
-
})
|
|
26
|
-
test('sub set to super set fail', () => {
|
|
27
|
-
assertType.isFalse(false as CanAssign<{ a: string }, { a: string, b: number }>)
|
|
28
|
-
})
|
|
29
|
-
})
|
|
30
|
-
|
|
31
|
-
describe('canAssign()', () => {
|
|
32
|
-
describe('without subject', () => {
|
|
33
|
-
test('returns a function that check type at compile time', () => {
|
|
34
|
-
assertType.isTrue(canAssign<{ a: string }>()({ a: 'a' }))
|
|
35
|
-
assertType.isTrue(canAssign<{ a: string }>()({ a: 'a', b: 'b' }))
|
|
36
|
-
|
|
37
|
-
// fails at compile time
|
|
38
|
-
// canAssign<{ a: string }>()({ a: 1 })
|
|
39
|
-
})
|
|
40
|
-
test('work with falsy value such as empty string', () => {
|
|
41
|
-
const s = ''
|
|
42
|
-
assertType.isTrue(canAssign<''>()(s))
|
|
43
|
-
})
|
|
44
|
-
test('work with undefined', () => {
|
|
45
|
-
assertType.isTrue(canAssign<number | undefined>()(undefined))
|
|
46
|
-
})
|
|
47
|
-
test('canAssign false', () => {
|
|
48
|
-
const t = canAssign<{ a: string }>(false)
|
|
49
|
-
assertType.isTrue(t(undefined))
|
|
50
|
-
assertType.isTrue(t({ a: 1 }))
|
|
51
|
-
|
|
52
|
-
// these fails
|
|
53
|
-
// t({ a: '' })
|
|
54
|
-
// t({ a: '', b: '' })
|
|
55
|
-
})
|
|
56
|
-
})
|
|
57
|
-
})
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { assertType, Equal, NotEqual } from '..'
|
|
2
|
-
|
|
3
|
-
describe('TypeEquals', () => {
|
|
4
|
-
test('match', () => {
|
|
5
|
-
assertType.isTrue(true as Equal<false, false>)
|
|
6
|
-
})
|
|
7
|
-
|
|
8
|
-
test('not match', () => {
|
|
9
|
-
assertType.isFalse(false as Equal<string, number>)
|
|
10
|
-
})
|
|
11
|
-
|
|
12
|
-
test('literal is not equal to widen type', () => {
|
|
13
|
-
assertType.isFalse(false as Equal<1, number>)
|
|
14
|
-
assertType.isFalse(false as Equal<number, 1>)
|
|
15
|
-
})
|
|
16
|
-
|
|
17
|
-
test('super set and sub set are not equal', () => {
|
|
18
|
-
assertType.isFalse(false as Equal<{ a: 1 }, { a: 1, b: 2 }>)
|
|
19
|
-
assertType.isFalse(false as Equal<{ a: 1, b: 2 }, { a: 1 }>)
|
|
20
|
-
})
|
|
21
|
-
|
|
22
|
-
test('boolean', () => {
|
|
23
|
-
assertType.isTrue(true as Equal<boolean, boolean>)
|
|
24
|
-
assertType.isTrue(true as Equal<true, true>)
|
|
25
|
-
assertType.isTrue(true as Equal<false, false>)
|
|
26
|
-
assertType.isFalse(false as Equal<boolean, true>)
|
|
27
|
-
assertType.isFalse(false as Equal<true, boolean>)
|
|
28
|
-
assertType.isFalse(false as Equal<boolean, false>)
|
|
29
|
-
assertType.isFalse(false as Equal<false, boolean>)
|
|
30
|
-
assertType.isFalse(false as Equal<false, true>)
|
|
31
|
-
assertType.isFalse(false as Equal<true, false>)
|
|
32
|
-
})
|
|
33
|
-
|
|
34
|
-
test('same type is true', () => {
|
|
35
|
-
assertType.isTrue(true as Equal<{ a: 1 }, { a: 1 }>)
|
|
36
|
-
})
|
|
37
|
-
|
|
38
|
-
test('different type is false', () => {
|
|
39
|
-
assertType.isFalse(false as Equal<{ a: 1 }, { b: 1 }>)
|
|
40
|
-
})
|
|
41
|
-
|
|
42
|
-
test('A subset of B is false', () => {
|
|
43
|
-
assertType.isFalse(false as Equal<{ a: 1 }, { a: 1, b: 1 }>)
|
|
44
|
-
})
|
|
45
|
-
|
|
46
|
-
test('B subset of A is false', () => {
|
|
47
|
-
assertType.isFalse(false as Equal<{ a: 1, b: 1 }, { a: 1 }>)
|
|
48
|
-
})
|
|
49
|
-
|
|
50
|
-
test('disjoin is false', () => {
|
|
51
|
-
assertType.isFalse(false as Equal<{ b: 1 }, { a: 1 }>)
|
|
52
|
-
})
|
|
53
|
-
|
|
54
|
-
test('overlap is false', () => {
|
|
55
|
-
assertType.isFalse(false as Equal<{ a: 1, b: 1 }, { a: 1, c: 2 }>)
|
|
56
|
-
})
|
|
57
|
-
})
|
|
58
|
-
|
|
59
|
-
describe('TypeNotEquals', () => {
|
|
60
|
-
test('boolean', () => {
|
|
61
|
-
assertType.isFalse(false as NotEqual<boolean, boolean>)
|
|
62
|
-
assertType.isFalse(false as NotEqual<true, true>)
|
|
63
|
-
assertType.isFalse(false as NotEqual<false, false>)
|
|
64
|
-
assertType.isTrue(true as NotEqual<boolean, true>)
|
|
65
|
-
assertType.isTrue(true as NotEqual<true, boolean>)
|
|
66
|
-
assertType.isTrue(true as NotEqual<boolean, false>)
|
|
67
|
-
assertType.isTrue(true as NotEqual<false, boolean>)
|
|
68
|
-
assertType.isTrue(true as NotEqual<false, true>)
|
|
69
|
-
assertType.isTrue(true as NotEqual<true, false>)
|
|
70
|
-
})
|
|
71
|
-
})
|
package/src/predicates/Equal.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Checks if two types are equal.
|
|
3
|
-
* Borrow from `typepark`.
|
|
4
|
-
* The simple `A extends B ? B extends A ? true : false : false`
|
|
5
|
-
* does not work with boolean type.
|
|
6
|
-
*/
|
|
7
|
-
export type Equal<A, B, Then = true, Else = false> =
|
|
8
|
-
(<T>() => T extends A ? 1 : 2) extends (<T>() => T extends B ? 1 : 2)
|
|
9
|
-
? Then : Else
|
|
10
|
-
export type IsEqual<A, B> = Equal<A, B>
|
|
11
|
-
|
|
12
|
-
export type NotEqual<A, B, Then = true, Else = false> =
|
|
13
|
-
(<T>() => T extends A ? 1 : 2) extends (<T>() => T extends B ? 1 : 2) ? Else : Then
|
|
14
|
-
export type IsNotEqual<A, B> = NotEqual<A, B>
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export type Extendable<A, B> = A extends B ? A : never
|
|
2
|
-
export type NotExtendable<A, B> = A extends B ? never : A
|
|
3
|
-
export type IsExtend<A, B, Then = true, Else = false> = A extends B ? Then : Else
|
|
4
|
-
export type IsNotExtend<A, B, Then = true, Else = false> = A extends B ? Else : Then
|