Socket
Socket
Sign inDemoInstall

typescript-tuple

Package Overview
Dependencies
Maintainers
1
Versions
32
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

typescript-tuple - npm Package Compare versions

Comparing version 4.0.0 to 5.0.0-rc.0

52

lib/utils.d.ts

@@ -1,18 +0,5 @@

export declare type IsFinite<Tuple extends any[], Finite, Infinite> = {
empty: Finite;
nonEmpty: ((..._: Tuple) => any) extends ((_: infer First, ..._1: infer Rest) => any) ? IsFinite<Rest, Finite, Infinite> : never;
infinite: Infinite;
}[Tuple extends [] ? 'empty' : Tuple extends (infer Element)[] ? Element[] extends Tuple ? 'infinite' : 'nonEmpty' : never];
export declare type _SplitInfiniteTuple<Tuple extends any[], Holder extends any[] = []> = {
matched: [Holder, Tuple];
unmatched: ((..._: Tuple) => any) extends ((_: infer First, ..._1: infer Rest) => any) ? _SplitInfiniteTuple<Rest, Prepend<Holder, First>> : never;
finite: [Tuple, []];
}[Tuple extends (infer Element)[] ? Element[] extends Tuple ? 'matched' : 'unmatched' : never];
export declare type IsFinite<Tuple extends any[], Finite, Infinite> = Tuple extends [] ? Finite : Tuple extends Array<infer Element> ? Element[] extends Tuple ? Infinite : Tuple extends [any, ...infer Rest] ? IsFinite<Rest, Finite, Infinite> : never : never;
export declare type _SplitInfiniteTuple<Tuple extends any[], Holder extends any[] = []> = Tuple extends Array<infer Element> ? Element[] extends Tuple ? [Tuple, Holder] : Tuple extends [infer First, ...infer Rest] ? _SplitInfiniteTuple<Rest, Prepend<Holder, First>> : never : never;
export declare type First<Tuple extends any[], Default = never> = Tuple extends [any, ...any[]] ? Tuple[0] : Default;
export declare type Last<Tuple extends any[], Default = never> = {
empty: Default;
single: Tuple extends [infer SoleElement] ? SoleElement : never;
multi: ((..._: Tuple) => any) extends ((_: any, ..._1: infer Next) => any) ? Last<Next> : Default;
infinite: Tuple extends (infer Element)[] ? Element : never;
}[Tuple extends [] ? 'empty' : Tuple extends [any] ? 'single' : Tuple extends (infer Element)[] ? Element[] extends Tuple ? 'infinite' : 'multi' : never];
export declare type Last<Tuple extends any[], Default = never> = Tuple extends [] ? Default : Tuple extends [infer SoleElement] ? SoleElement : Tuple extends Array<infer Element> ? Element[] extends Tuple ? Element : Tuple extends [any, ...infer Next] ? Last<Next> : Default : never;
export declare type Tail<Tuple extends any[]> = ((...args: Tuple) => any) extends ((_: any, ..._1: infer Rest) => any) ? Rest : never;

@@ -22,3 +9,3 @@ export declare type Prepend<Tuple extends any[], Addend> = [Addend, ...Tuple];

empty: Prefix;
nonEmpty: ((..._: Tuple) => any) extends ((_: infer First, ..._1: infer Next) => any) ? Reverse<Next, Prepend<Prefix, First>> : never;
nonEmpty: Tuple extends [infer First, ...infer Next] ? Reverse<Next, Prepend<Prefix, First>> : never;
infinite: {

@@ -30,7 +17,3 @@ ERROR: 'Cannot reverse an infinite tuple';

export declare type Concat<Left extends any[], Right extends any[]> = [...Left, ...Right];
export declare type Repeat<Type, Count extends number, Holder extends any[] = []> = Count extends never ? never : number extends Count ? Type[] : {
fit: Holder;
unfit: Repeat<Type, Count, Prepend<Holder, Type>>;
union: Count extends Holder['length'] | infer Rest ? Rest extends number ? Repeat<Type, Holder['length']> | Repeat<Type, Rest> : never : never;
}[Holder['length'] extends Count ? Count extends Holder['length'] ? 'fit' : 'union' : 'unfit'];
export declare type Repeat<Type, Count extends number, Holder extends any[] = []> = Count extends never ? never : number extends Count ? Type[] : Holder['length'] extends Count ? Count extends Holder['length'] ? Holder : Count extends Holder['length'] | infer Rest ? Rest extends number ? Repeat<Type, Holder['length']> | Repeat<Type, Rest> : never : never : Repeat<Type, Count, Prepend<Holder, Type>>;
export declare type ConcatMultiple<TupleSet extends any[][]> = {

@@ -44,22 +27,10 @@ empty: [];

}[TupleSet extends [] ? 'empty' : IsFinite<TupleSet, 'nonEmpty', 'infinite'>];
export declare type Drop<Tuple extends any[], Quantity extends number, Count extends any[] = []> = {
matched: Tuple;
unmatched: ((...args: Tuple) => any) extends ((_: any, ..._1: infer Rest) => any) ? Drop<Rest, Quantity, Prepend<Count, Count['length']>> : never;
}[Tuple extends [] ? 'matched' : Quantity extends Count['length'] ? 'matched' : 'unmatched'];
export declare type SliceStartQuantity<Tuple extends any[], Start extends number, Quantity extends number, Holder extends any[] = [], Count extends any[] = []> = {
before: SliceStartQuantity<Tail<Tuple>, Start, Quantity, Holder, Prepend<Count, Count['length']>>;
start: ((...args: Tuple) => any) extends ((_: infer First, ..._1: infer Rest) => any) ? SliceStartQuantity<Rest, Start, Quantity, Prepend<Holder, First>, Count> : never;
end: Reverse<Holder>;
}[Tuple extends [] ? 'end' : Quantity extends Holder['length'] ? 'end' : Start extends Count['length'] ? 'start' : 'before'];
export declare type Drop<Tuple extends any[], Quantity extends number, Count extends any[] = []> = Tuple extends [] ? Tuple : Quantity extends Count['length'] ? Tuple : ((...args: Tuple) => any) extends ((_: any, ..._1: infer Rest) => any) ? Drop<Rest, Quantity, Prepend<Count, Count['length']>> : never;
export declare type SliceStartQuantity<Tuple extends any[], Start extends number, Quantity extends number, Holder extends any[] = [], Count extends any[] = []> = Tuple extends [] ? Reverse<Holder> : Quantity extends Holder['length'] ? Reverse<Holder> : Start extends Count['length'] ? Tuple extends [infer First, ...infer Rest] ? SliceStartQuantity<Rest, Start, Quantity, Prepend<Holder, First>, Count> : never : SliceStartQuantity<Tail<Tuple>, Start, Quantity, Holder, Prepend<Count, Count['length']>>;
export declare type FillTuple<Tuple extends any[], Replacement, Holder extends any[] = []> = {
empty: Holder;
nonEmpty: ((...a: Tuple) => any) extends ((a: infer First, ...b: infer Rest) => any) ? FillTuple<Rest, Replacement, Prepend<Holder, Replacement>> : never;
nonEmpty: Tuple extends [any, ...infer Rest] ? FillTuple<Rest, Replacement, Prepend<Holder, Replacement>> : never;
infinite: Replacement[];
}[Tuple extends [] ? 'empty' : IsFinite<Tuple, 'nonEmpty', 'infinite'>];
export declare type CompareLength<Left extends any[], Right extends any[]> = {
fitBoth: 'equal';
fitLeft: 'shorterLeft';
fitRight: 'shorterRight';
unfit: ((..._: Left) => any) extends ((_: any, ..._1: infer LeftRest) => any) ? ((..._: Right) => any) extends ((_: any, ..._1: infer RightRest) => any) ? CompareLength<LeftRest, RightRest> : never : never;
}[Left['length'] extends Right['length'] ? 'fitBoth' : Left extends [] ? 'fitLeft' : Right extends [] ? 'fitRight' : 'unfit'];
export declare type CompareLength<Left extends any[], Right extends any[]> = Left['length'] extends Right['length'] ? 'equal' : Left extends [] ? 'shorterLeft' : Right extends [] ? 'shorterRight' : CompareLength<Tail<Left>, Tail<Right>>;
export declare type SortTwoTuple<Left extends any[], Right extends any[], WhenEqual = [Left, Right]> = {

@@ -70,6 +41,3 @@ equal: WhenEqual;

}[CompareLength<Left, Right>];
export declare type ShortestTuple<TupleSet extends any[][], Shortest = any[]> = {
empty: Shortest;
nonEmpty: ((..._: TupleSet) => any) extends ((_: infer Head, ..._1: infer Tail) => any) ? Tail extends any[] ? Shortest extends any[] ? Head extends any[] ? Tail extends Head[] ? SortTwoTuple<Shortest, Head>[0] : ShortestTuple<Tail, SortTwoTuple<Shortest, Head>[0]> : never : never : never : never;
}[TupleSet extends [] ? 'empty' : 'nonEmpty'];
export declare type ShortestTuple<TupleSet extends any[][], Shortest extends any[] = any[]> = TupleSet extends [] ? Shortest : ((..._: TupleSet) => any) extends ((_: infer Head, ..._1: infer Tail) => any) ? Tail extends any[] ? Head extends any[] ? Tail extends Head[] ? SortTwoTuple<Shortest, Head>[0] : ShortestTuple<Tail, SortTwoTuple<Shortest, Head>[0]> : never : never : never;
export declare type LongestTuple<TupleSet extends any[][], Longest = []> = {

@@ -76,0 +44,0 @@ empty: Longest;

6

package.json
{
"name": "typescript-tuple",
"version": "4.0.0",
"version": "5.0.0-rc.0",
"description": "Generics to work with tuples in TypeScript",

@@ -35,6 +35,6 @@ "main": "index.js",

"devDependencies": {
"typescript": "~4.0.2",
"typescript": "~4.1.2",
"tslint": "^6.1.3",
"tslint-config-standard": "^9.0.0",
"static-type-assert": "^4.0.0",
"static-type-assert": "^4.0.1",
"toolcheck": "^0.1.4",

@@ -41,0 +41,0 @@ "clean-typescript-build": "^0.1.5"

@@ -7,3 +7,3 @@ # TypeScript Tuple

* TypeScript ≥ 4.0.0
* TypeScript ≥ 4.1.0

@@ -10,0 +10,0 @@ ## Usage

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc