hkt-toolbelt
Advanced tools
Comparing version 0.19.3 to 0.20.0
@@ -19,2 +19,3 @@ export * from "./add"; | ||
export * from "./to-string"; | ||
export * from "./to-number"; | ||
export * from "./trim"; |
@@ -0,2 +1,5 @@ | ||
export * from "./concat"; | ||
export * from "./every"; | ||
export * from "./flatten"; | ||
export * from "./flatten-n"; | ||
export * from "./filter"; | ||
@@ -13,9 +16,13 @@ export * from "./find"; | ||
export * from "./pop"; | ||
export * from "./pop-n"; | ||
export * from "./push"; | ||
export * from "./reduce"; | ||
export * from "./repeat"; | ||
export * from "./reverse"; | ||
export * from "./shift"; | ||
export * from "./shift-n"; | ||
export * from "./slice"; | ||
export * from "./splice"; | ||
export * from "./some"; | ||
export * from "./times"; | ||
export * from "./unshift"; |
@@ -1,10 +0,10 @@ | ||
import { NaturalNumber, Number, DigitList, Digit, Kind, Type } from ".."; | ||
type _$slice2<T extends unknown[], N extends DigitList.DigitList> = 0 extends 1 ? never : T extends [unknown, ...infer Tail] ? N extends [Digit.Zero] ? T : _$slice2<Tail, DigitList._$decrement<N>> : []; | ||
export type _$slice<T extends unknown[], N extends Number.Number> = Number._$isNatural<N> extends true ? _$slice2<T, NaturalNumber._$toList<N>> : never; | ||
interface Slice_T<N extends Number.Number> extends Kind.Kind { | ||
import { NaturalNumber, Number, DigitList, Digit, Kind, Type, List } from ".."; | ||
type _$slice2<T extends unknown[], START extends Number.Number, END extends Number.Number, T_LENGTH extends DigitList.DigitList = NaturalNumber._$toList<T["length"]>, START_ABS extends DigitList.DigitList = NaturalNumber._$toList<Number._$absolute<START>>, END_ABS extends DigitList.DigitList = NaturalNumber._$toList<Number._$absolute<END>>, SHIFT_NORM extends DigitList.DigitList = Number._$isNatural<START> extends true ? START_ABS : DigitList._$compare<T_LENGTH, START_ABS> extends -1 ? [Digit.Zero] : DigitList._$subtract<T_LENGTH, START_ABS>, POP_NORM extends DigitList.DigitList = Number._$isNatural<END> extends true ? DigitList._$compare<T_LENGTH, END_ABS> extends -1 ? [Digit.Zero] : DigitList._$subtract<T_LENGTH, END_ABS> : END_ABS, SHIFT_COUNT extends Number.Number = DigitList._$toNumber<SHIFT_NORM>, POP_COUNT extends Number.Number = DigitList._$toNumber<POP_NORM>, RESULT extends List.List = List._$shiftN<List._$popN<T, POP_COUNT>, SHIFT_COUNT>> = RESULT; | ||
export type _$slice<T extends unknown[], RANGE extends [Number.Number, Number.Number], RESULT extends List.List = RANGE["length"] extends 2 ? List._$every<Number.IsInteger, RANGE> extends true ? _$slice2<T, RANGE[0], RANGE[1]> : never : never> = RESULT; | ||
interface Slice_T<N extends [Number.Number, Number.Number]> extends Kind.Kind { | ||
f(x: Type._$cast<this[Kind._], unknown[]>): _$slice<typeof x, N>; | ||
} | ||
export interface Slice extends Kind.Kind { | ||
f(x: Type._$cast<this[Kind._], Number.Number>): Slice_T<typeof x>; | ||
f(x: Type._$cast<this[Kind._], [Number.Number, Number.Number]>): Slice_T<typeof x>; | ||
} | ||
export {}; |
import { Type, Number, Kind, DigitList, NaturalNumber } from ".."; | ||
export type _$add<A extends Number.Number, B extends Number.Number, A_LIST extends DigitList.DigitList = NaturalNumber._$toList<A>, B_LIST extends DigitList.DigitList = NaturalNumber._$toList<B>, SUM_LIST extends DigitList.DigitList = DigitList._$add<A_LIST, B_LIST>, SUM = Number._$fromString<DigitList._$toString<SUM_LIST>>> = SUM; | ||
export type _$add<A extends Number.Number, B extends Number.Number, A_LIST extends DigitList.DigitList = NaturalNumber._$toList<A>, B_LIST extends DigitList.DigitList = NaturalNumber._$toList<B>, SUM_LIST extends DigitList.DigitList = DigitList._$add<A_LIST, B_LIST>, SUM = DigitList._$toNumber<SUM_LIST>> = SUM; | ||
interface Add_T<A extends Number.Number> extends Kind.Kind { | ||
@@ -4,0 +4,0 @@ f(x: Type._$cast<this[Kind._], Number.Number>): Number._$isNatural<typeof x> extends true ? _$add<A, typeof x> : never; |
import { Type, Number, Kind, DigitList, NaturalNumber } from ".."; | ||
export type _$divide<A extends Number.Number, B extends Number.Number, A_LIST extends DigitList.DigitList = NaturalNumber._$toList<A>, B_LIST extends DigitList.DigitList = NaturalNumber._$toList<B>, QUOTIENT_LIST extends DigitList.DigitList = DigitList._$divide<A_LIST, B_LIST>, QUOTIENT = Number._$fromString<DigitList._$toString<QUOTIENT_LIST>>> = QUOTIENT; | ||
export type _$divide<A extends Number.Number, B extends Number.Number, A_LIST extends DigitList.DigitList = NaturalNumber._$toList<A>, B_LIST extends DigitList.DigitList = NaturalNumber._$toList<B>, QUOTIENT_LIST extends DigitList.DigitList = DigitList._$divide<A_LIST, B_LIST>, QUOTIENT = DigitList._$toNumber<QUOTIENT_LIST>> = QUOTIENT; | ||
interface Divide_T<A extends Number.Number> extends Kind.Kind { | ||
@@ -4,0 +4,0 @@ f(x: Type._$cast<this[Kind._], Number.Number>): Number._$isNatural<typeof x> extends true ? _$divide<A, typeof x> : never; |
import { Type, Number, Kind, DigitList, NaturalNumber } from ".."; | ||
export type _$modulo<A extends Number.Number, B extends Number.Number, A_LIST extends DigitList.DigitList = NaturalNumber._$toList<A>, B_LIST extends DigitList.DigitList = NaturalNumber._$toList<B>, MODULUS_LIST extends DigitList.DigitList = DigitList._$modulo<A_LIST, B_LIST>, MODULUS = Number._$fromString<DigitList._$toString<MODULUS_LIST>>> = MODULUS; | ||
export type _$modulo<A extends Number.Number, B extends Number.Number, A_LIST extends DigitList.DigitList = NaturalNumber._$toList<A>, B_LIST extends DigitList.DigitList = NaturalNumber._$toList<B>, MODULUS_LIST extends DigitList.DigitList = DigitList._$modulo<A_LIST, B_LIST>, MODULUS = DigitList._$toNumber<MODULUS_LIST>> = MODULUS; | ||
interface Modulo_T<A extends Number.Number> extends Kind.Kind { | ||
@@ -4,0 +4,0 @@ f(x: Type._$cast<this[Kind._], Number.Number>): Number._$isNatural<typeof x> extends true ? _$modulo<A, typeof x> : never; |
import { Type, Number, Kind, DigitList, NaturalNumber } from ".."; | ||
export type _$multiply<A extends Number.Number, B extends Number.Number, A_LIST extends DigitList.DigitList = NaturalNumber._$toList<A>, B_LIST extends DigitList.DigitList = NaturalNumber._$toList<B>, PRODUCT_LIST extends DigitList.DigitList = DigitList._$multiply<A_LIST, B_LIST>, PRODUCT = Number._$fromString<DigitList._$toString<PRODUCT_LIST>>> = PRODUCT; | ||
export type _$multiply<A extends Number.Number, B extends Number.Number, A_LIST extends DigitList.DigitList = NaturalNumber._$toList<A>, B_LIST extends DigitList.DigitList = NaturalNumber._$toList<B>, PRODUCT_LIST extends DigitList.DigitList = DigitList._$multiply<A_LIST, B_LIST>, PRODUCT = DigitList._$toNumber<PRODUCT_LIST>> = PRODUCT; | ||
interface Multiply_T<A extends Number.Number> extends Kind.Kind { | ||
@@ -4,0 +4,0 @@ f(x: Type._$cast<this[Kind._], Number.Number>): Number._$isNatural<typeof x> extends true ? _$multiply<A, typeof x> : never; |
import { Number, NaturalNumber, DigitList, Type, Kind } from ".."; | ||
export type _$subtract<A extends Number.Number, B extends Number.Number, A_LIST extends DigitList.DigitList = NaturalNumber._$toList<A>, B_LIST extends DigitList.DigitList = NaturalNumber._$toList<B>, SUB_LIST extends DigitList.DigitList = DigitList._$subtract<A_LIST, B_LIST>, RESULT = Number._$fromString<DigitList._$toString<SUB_LIST>>> = RESULT; | ||
export type _$subtract<A extends Number.Number, B extends Number.Number, A_LIST extends DigitList.DigitList = NaturalNumber._$toList<A>, B_LIST extends DigitList.DigitList = NaturalNumber._$toList<B>, SUB_LIST extends DigitList.DigitList = DigitList._$subtract<A_LIST, B_LIST>, RESULT = DigitList._$toNumber<SUB_LIST>> = RESULT; | ||
interface Subtract_T<X extends Number.Number> extends Kind.Kind { | ||
@@ -4,0 +4,0 @@ f(x: Type._$cast<this[Kind._], Number.Number>): Number._$isNatural<typeof x> extends true ? _$subtract<X, typeof x> : never; |
@@ -0,1 +1,2 @@ | ||
export * from "./absolute"; | ||
export * from "./from-string"; | ||
@@ -2,0 +3,0 @@ export * from "./is-fractional"; |
{ | ||
"name": "hkt-toolbelt", | ||
"version": "0.19.3", | ||
"version": "0.20.0", | ||
"description": "Functional and composable type utilities", | ||
@@ -5,0 +5,0 @@ "types": "./dist/index.d.ts", |
import { Kind, Type, String, Number, List } from ".."; | ||
export type _$slice<S extends string, N extends Number.Number> = String._$fromList<List._$slice<String._$toList<S>, N>>; | ||
export type _$slice<S extends string, N extends Number.Number> = String._$fromList<List._$shiftN<String._$toList<S>, N>>; | ||
interface Slice_T<N extends Number.Number> extends Kind.Kind { | ||
@@ -4,0 +4,0 @@ f(x: Type._$cast<this[Kind._], string>): _$slice<typeof x, N>; |
127940
219
3364