inferred-types 0.49.9 → 0.50.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/dist/constants/Characters.d.ts +1 -1
- package/dist/constants/Characters.d.ts.map +1 -1
- package/dist/constants/Characters.js +2 -1
- package/dist/constants/tsconfig.tsbuildinfo +1 -1
- package/dist/inferred-types/index.cjs +38 -8
- package/dist/inferred-types/tsconfig.tsbuildinfo +1 -1
- package/dist/runtime/literals/index.d.ts +1 -0
- package/dist/runtime/literals/index.d.ts.map +1 -1
- package/dist/runtime/literals/index.js +1 -0
- package/dist/runtime/literals/pluralize.d.ts.map +1 -1
- package/dist/runtime/literals/pluralize.js +15 -13
- package/dist/runtime/literals/retainAfter.d.ts +19 -2
- package/dist/runtime/literals/retainAfter.d.ts.map +1 -1
- package/dist/runtime/literals/retainAfter.js +35 -5
- package/dist/runtime/literals/rightWhitespace.d.ts +9 -0
- package/dist/runtime/literals/rightWhitespace.d.ts.map +1 -0
- package/dist/runtime/literals/rightWhitespace.js +11 -0
- package/dist/runtime/tsconfig.tsbuildinfo +1 -1
- package/dist/types/boolean-logic/combinators/Compare.d.ts +10 -3
- package/dist/types/boolean-logic/combinators/Compare.d.ts.map +1 -1
- package/dist/types/lists/AsNumericArray.d.ts +16 -0
- package/dist/types/lists/AsNumericArray.d.ts.map +1 -0
- package/dist/types/lists/AsNumericArray.js +1 -0
- package/dist/types/lists/FilterByProp.d.ts +3 -17
- package/dist/types/lists/FilterByProp.d.ts.map +1 -1
- package/dist/types/lists/MaxLength.d.ts +17 -0
- package/dist/types/lists/MaxLength.d.ts.map +1 -0
- package/dist/types/lists/MaxLength.js +1 -0
- package/dist/types/lists/NumericSort.d.ts +65 -0
- package/dist/types/lists/NumericSort.d.ts.map +1 -0
- package/dist/types/lists/NumericSort.js +1 -0
- package/dist/types/lists/index.d.ts +3 -0
- package/dist/types/lists/index.d.ts.map +1 -1
- package/dist/types/lists/index.js +3 -0
- package/dist/types/string-literals/FindIndex.d.ts +68 -0
- package/dist/types/string-literals/FindIndex.d.ts.map +1 -0
- package/dist/types/string-literals/FindIndex.js +1 -0
- package/dist/types/string-literals/Pluralize.d.ts +6 -2
- package/dist/types/string-literals/Pluralize.d.ts.map +1 -1
- package/dist/types/string-literals/RetainAfter.d.ts +20 -8
- package/dist/types/string-literals/RetainAfter.d.ts.map +1 -1
- package/dist/types/string-literals/character-sets/css/object.d.ts +1 -1
- package/dist/types/string-literals/character-sets/css/object.d.ts.map +1 -1
- package/dist/types/string-literals/character-sets/css/sizing.d.ts +2 -2
- package/dist/types/string-literals/character-sets/css/sizing.d.ts.map +1 -1
- package/dist/types/string-literals/index.d.ts +1 -0
- package/dist/types/string-literals/index.d.ts.map +1 -1
- package/dist/types/string-literals/index.js +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -1,11 +1,18 @@
|
|
|
1
|
-
import { Contains, DoesExtend, IsEqual, StartsWith, TupleToUnion, EndsWith, Tuple, ErrorCondition, Extends, NumberLike, TypedFunction, IsGreaterThan, As, IsLessThan, WhenNever, And } from "../../index";
|
|
1
|
+
import { Contains, DoesExtend, IsEqual, StartsWith, TupleToUnion, EndsWith, Tuple, ErrorCondition, Extends, NumberLike, TypedFunction, IsGreaterThan, As, IsLessThan, WhenNever, And, IsGreaterThanOrEqual, IsLessThanOrEqual } from "../../index";
|
|
2
|
+
/**
|
|
3
|
+
* comparison operators which require the base type to be a string
|
|
4
|
+
*/
|
|
5
|
+
export type StringComparatorOperation = "startsWith" | "endsWith";
|
|
6
|
+
export type NumericComparatorOperation = "greaterThan" | "greaterThanOrEqual" | "lessThan" | "lessThanOrEqual";
|
|
2
7
|
/**
|
|
3
8
|
* **ComparatorOperation**
|
|
4
9
|
*
|
|
5
10
|
* A union type providing various ways in which two values
|
|
6
11
|
* can be compared.
|
|
12
|
+
*
|
|
13
|
+
* **Related:** `StringComparatorOperation`, `NumericComparatorOperation`
|
|
7
14
|
*/
|
|
8
|
-
export type ComparatorOperation = "extends" | "equals" |
|
|
15
|
+
export type ComparatorOperation = "extends" | "equals" | StringComparatorOperation | "contains" | "containsAll" | NumericComparatorOperation | "returnEquals" | "returnExtends";
|
|
9
16
|
/**
|
|
10
17
|
* **ParamsForComparison**`<T>`
|
|
11
18
|
*
|
|
@@ -35,7 +42,7 @@ export type Comparison<TOp extends ComparatorOperation = ComparatorOperation, TA
|
|
|
35
42
|
fn: TFn;
|
|
36
43
|
} : ErrorCondition<"invalid-comparison">;
|
|
37
44
|
type Unionize<T> = T extends readonly unknown[] ? TupleToUnion<T> : T;
|
|
38
|
-
type Process<TVal, TOp extends ComparatorOperation, TComparator> = TOp extends "extends" ? DoesExtend<TVal, Unionize<TComparator>> : TOp extends "equals" ? IsEqual<TVal, Unionize<TComparator>> : TOp extends "contains" ? [TVal] extends [string | number | Tuple] ? Contains<TVal, TComparator> : never : TOp extends "containsAll" ? [TVal] extends [Tuple] ? [TComparator] extends [string | number | readonly string[]] ? Contains<TVal, TComparator> : never : never : TOp extends "startsWith" ? [TVal] extends [string | number] ? [TComparator] extends [string | number | readonly string[]] ? StartsWith<TVal, TComparator> : never : never : TOp extends "greaterThan" ? And<[Extends<TComparator, NumberLike>, Extends<TVal, NumberLike>]> extends true ? IsGreaterThan<As<TVal, NumberLike>, As<TComparator, NumberLike>> : never : TOp extends "lessThan" ? And<[Extends<TComparator, NumberLike>, Extends<TVal, NumberLike>]> extends true ? IsLessThan<As<TVal, NumberLike>, As<TComparator, NumberLike>> : never : TOp extends "endsWith" ? [TVal] extends [string | number] ? [TComparator] extends [string | number | readonly string[]] ? EndsWith<TVal, TComparator> : never : never : TOp extends "returnEquals" ? TVal extends ((...args: any[]) => any) ? IsEqual<ReturnType<TVal>, TComparator> : false : TOp extends "returnExtends" ? TVal extends ((...args: any[]) => any) ? IsEqual<ReturnType<TVal>, TComparator> : false : never;
|
|
45
|
+
type Process<TVal, TOp extends ComparatorOperation, TComparator> = TOp extends "extends" ? DoesExtend<TVal, Unionize<TComparator>> : TOp extends "equals" ? IsEqual<TVal, Unionize<TComparator>> : TOp extends "contains" ? [TVal] extends [string | number | Tuple] ? Contains<TVal, TComparator> : never : TOp extends "containsAll" ? [TVal] extends [Tuple] ? [TComparator] extends [string | number | readonly string[]] ? Contains<TVal, TComparator> : never : never : TOp extends "startsWith" ? [TVal] extends [string | number] ? [TComparator] extends [string | number | readonly string[]] ? StartsWith<TVal, TComparator> : never : never : TOp extends "greaterThan" ? And<[Extends<TComparator, NumberLike>, Extends<TVal, NumberLike>]> extends true ? IsGreaterThan<As<TVal, NumberLike>, As<TComparator, NumberLike>> : never : TOp extends "greaterThanOrEqual" ? And<[Extends<TComparator, NumberLike>, Extends<TVal, NumberLike>]> extends true ? IsGreaterThanOrEqual<As<TVal, NumberLike>, As<TComparator, NumberLike>> : never : TOp extends "lessThan" ? And<[Extends<TComparator, NumberLike>, Extends<TVal, NumberLike>]> extends true ? IsLessThan<As<TVal, NumberLike>, As<TComparator, NumberLike>> : never : TOp extends "lessThanOrEqual" ? And<[Extends<TComparator, NumberLike>, Extends<TVal, NumberLike>]> extends true ? IsLessThanOrEqual<As<TVal, NumberLike>, As<TComparator, NumberLike>> : never : TOp extends "endsWith" ? [TVal] extends [string | number] ? [TComparator] extends [string | number | readonly string[]] ? EndsWith<TVal, TComparator> : never : never : TOp extends "returnEquals" ? TVal extends ((...args: any[]) => any) ? IsEqual<ReturnType<TVal>, TComparator> : false : TOp extends "returnExtends" ? TVal extends ((...args: any[]) => any) ? IsEqual<ReturnType<TVal>, TComparator> : false : never;
|
|
39
46
|
/**
|
|
40
47
|
* **Compare**`<TVal,TOp,TComparator>`
|
|
41
48
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Compare.d.ts","sourceRoot":"","sources":["../../../../src/types/boolean-logic/combinators/Compare.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,QAAQ,EACR,UAAU,EACV,OAAO,EACP,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,KAAK,EACL,cAAc,EACd,OAAO,EACP,UAAU,EACV,aAAa,EACb,aAAa,EACb,EAAE,EACF,UAAU,EACV,SAAS,EACT,GAAG,
|
|
1
|
+
{"version":3,"file":"Compare.d.ts","sourceRoot":"","sources":["../../../../src/types/boolean-logic/combinators/Compare.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { RemoveNever } from "../containers";
|
|
2
|
+
import { NumberLike } from "../numeric-literals";
|
|
3
|
+
import { AsNumber } from "../type-conversion";
|
|
4
|
+
/**
|
|
5
|
+
* **AsNumericArray**`<T>`
|
|
6
|
+
*
|
|
7
|
+
* Converts into a numeric array:
|
|
8
|
+
*
|
|
9
|
+
* - `number` values are proxied through
|
|
10
|
+
* - `${number}` values are converted to a number
|
|
11
|
+
* - all other types are converted to `never` and removed
|
|
12
|
+
*/
|
|
13
|
+
export type AsNumericArray<T> = T extends readonly unknown[] ? RemoveNever<{
|
|
14
|
+
[K in keyof T]: T[K] extends NumberLike ? AsNumber<T[K]> : never;
|
|
15
|
+
}> : never;
|
|
16
|
+
//# sourceMappingURL=AsNumericArray.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AsNumericArray.d.ts","sourceRoot":"","sources":["../../../src/types/lists/AsNumericArray.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C;;;;;;;;GAQG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,OAAO,EAAE,GAC1D,WAAW,CAAC;KACX,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,UAAU,GACnC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACd,KAAK;CACV,CAAC,GACA,KAAK,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { ComparatorOperation, Compare,
|
|
1
|
+
import { ComparatorOperation, Compare, IfNever, RemoveNever, IsDotPath, Throw, Get } from "../index";
|
|
2
2
|
/**
|
|
3
3
|
* Iterates over each element of the Tuple
|
|
4
4
|
*/
|
|
5
5
|
type SingleFilter<TList extends readonly unknown[], TComparator, TProp extends string, TOp extends ComparatorOperation, Result extends unknown[] = []> = TList extends [infer Head, ...infer Rest] ? [
|
|
6
6
|
Compare<Get<Head, TProp>, TOp, TComparator>
|
|
7
7
|
] extends [true] ? SingleFilter<Rest, TComparator, TProp, TOp, Result> : SingleFilter<Rest, TComparator, TProp, TOp, [...Result, Head]> : Result;
|
|
8
|
-
type Process<TList extends
|
|
8
|
+
type Process<TList extends readonly unknown[], TComparator, TProp extends string, TOp extends ComparatorOperation> = TList extends unknown[] ? SingleFilter<TList, TComparator, TProp, TOp> : TList extends readonly unknown[] ? Readonly<SingleFilter<[...TList], TComparator, TProp, TOp>> : never;
|
|
9
9
|
/**
|
|
10
10
|
* **FilterByProp**`<TList, TComparator, TProp, [TOp]>`
|
|
11
11
|
*
|
|
@@ -16,22 +16,8 @@ type Process<TList extends unknown[] | readonly unknown[], TComparator, TProp ex
|
|
|
16
16
|
* - How the list is _compared_ depends on `TOp` which defaults to "extends"
|
|
17
17
|
* - other values include "equals", "does-not-extend", "does-not-equal"
|
|
18
18
|
*
|
|
19
|
-
* By default `TOp` is set to _extends_ which ensures that those values in the list which
|
|
20
|
-
* _extend_ `TValue` are retained but the remaining filtered out.
|
|
21
|
-
*
|
|
22
|
-
* ```ts
|
|
23
|
-
* type T = [1,"foo",3];
|
|
24
|
-
* // [1,3]
|
|
25
|
-
* type T2 = Filter<T, string>;
|
|
26
|
-
* ```
|
|
27
|
-
* - `TComparator` can be single value or a Tuple of values
|
|
28
|
-
* - in the case of a Tuple of values being found in `TComparator`, an "OR" operation
|
|
29
|
-
* will be used ... meaning that the elements in `TList` will be kept if an element
|
|
30
|
-
* extends _any_ of the `TFilter` entries
|
|
31
|
-
* - any non-container based value in `TList` will be discarded
|
|
32
|
-
*
|
|
33
19
|
* **Related:** `RetainByProp`, `Filter`, `RetainFromList`, `RemoveFromList`, `FilterProps`
|
|
34
20
|
*/
|
|
35
|
-
export type FilterByProp<TList extends readonly unknown[], TComparator, TProp extends string, TOp extends ComparatorOperation = "extends"> = IsDotPath<TProp> extends false ? Throw<"invalid-dot-path", `the property value TProp must be a valid dotpath but "${TProp}" is not valid!`> : TList extends readonly unknown[] ? IfNever<TComparator, RemoveNever<TList>,
|
|
21
|
+
export type FilterByProp<TList extends readonly unknown[], TComparator, TProp extends string, TOp extends ComparatorOperation = "extends"> = IsDotPath<TProp> extends false ? Throw<"invalid-dot-path", `the property value TProp must be a valid dotpath but "${TProp}" is not valid!`> : TList extends readonly unknown[] ? IfNever<TComparator, RemoveNever<TList>, TComparator extends any[] ? Process<TList, TComparator[number], TProp, TOp> : Process<TList, TComparator, TProp, TOp>> : never;
|
|
36
22
|
export {};
|
|
37
23
|
//# sourceMappingURL=FilterByProp.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterByProp.d.ts","sourceRoot":"","sources":["../../../src/types/lists/FilterByProp.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,OAAO,EACP,OAAO,EACP,
|
|
1
|
+
{"version":3,"file":"FilterByProp.d.ts","sourceRoot":"","sources":["../../../src/types/lists/FilterByProp.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,OAAO,EACP,OAAO,EACP,WAAW,EACX,SAAS,EACT,KAAK,EACL,GAAG,EACJ,iBAAwB;AAGzB;;GAEG;AACH,KAAK,YAAY,CACf,KAAK,SAAS,SAAS,OAAO,EAAE,EAChC,WAAW,EACX,KAAK,SAAS,MAAM,EACpB,GAAG,SAAS,mBAAmB,EAC/B,MAAM,SAAS,OAAO,EAAE,GAAG,EAAE,IAC3B,KAAK,SAAS,CAAC,MAAM,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,GACzC;IACE,OAAO,CACL,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,EAChB,GAAG,EACH,WAAW,CACZ;CACF,SAAS,CAAC,IAAI,CAAC,GACd,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,GACnD,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,CAAC,GAChE,MAAM,CAAC;AAIX,KAAK,OAAO,CACV,KAAK,SAAS,SAAS,OAAO,EAAE,EAChC,WAAW,EACX,KAAK,SAAS,MAAM,EACpB,GAAG,SAAS,mBAAmB,IAC5B,KAAK,SAAS,OAAO,EAAE,GAC1B,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,CAAC,GAE5C,KAAK,SAAS,SAAS,OAAO,EAAE,GAC5B,QAAQ,CACN,YAAY,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,CAAC,CAClD,GACD,KAAK,CAAC;AAEZ;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,YAAY,CACtB,KAAK,SAAS,SAAS,OAAO,EAAE,EAChC,WAAW,EACX,KAAK,SAAS,MAAM,EACpB,GAAG,SAAS,mBAAmB,GAAG,SAAS,IACzC,SAAS,CAAC,KAAK,CAAC,SAAS,KAAK,GAChC,KAAK,CAAC,kBAAkB,EAAE,yDAAyD,KAAK,iBAAiB,CAAC,GAE1G,KAAK,SAAS,SAAS,OAAO,EAAE,GAChC,OAAO,CACL,WAAW,EACX,WAAW,CAAC,KAAK,CAAC,EAClB,WAAW,SAAS,GAAG,EAAE,GACrB,OAAO,CACL,KAAK,EACL,WAAW,CAAC,MAAM,CAAC,EACnB,KAAK,EACL,GAAG,CACJ,GACD,OAAO,CACL,KAAK,EACL,WAAW,EACX,KAAK,EACL,GAAG,CACJ,CACJ,GACH,KAAK,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { IsGreaterThan } from "../boolean-logic";
|
|
2
|
+
import { If } from "../boolean-logic/branching/If";
|
|
3
|
+
import { StrLen } from "../string-literals";
|
|
4
|
+
import { AfterFirst } from "./AfterFirst";
|
|
5
|
+
import { First } from "./First";
|
|
6
|
+
type Reduce<T extends readonly ([string, number])[], TMax extends number = 0, TVal extends string = ""> = [] extends T ? TVal : Reduce<AfterFirst<T>, First<T> extends [string, infer Len extends number] ? If<IsGreaterThan<Len, TMax>, Len, TMax> : TMax, First<T> extends [infer Val extends string, infer Len extends number] ? If<IsGreaterThan<Len, TMax>, Val, TVal> : TVal>;
|
|
7
|
+
/**
|
|
8
|
+
* **MaxLength**`<T>`
|
|
9
|
+
*
|
|
10
|
+
* Utility which reduces a tuple of strings to only the
|
|
11
|
+
* string which is longest.
|
|
12
|
+
*/
|
|
13
|
+
export type MaxLength<T> = T extends readonly string[] ? Reduce<{
|
|
14
|
+
[K in keyof T]: T[K] extends string ? [T[K], StrLen<T[K]>] : never;
|
|
15
|
+
}> : never;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=MaxLength.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MaxLength.d.ts","sourceRoot":"","sources":["../../../src/types/lists/MaxLength.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,EAAE,EAAE,MAAM,+BAA+B,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,KAAK,MAAM,CACX,CAAC,SAAS,SAAS,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,EACvC,IAAI,SAAS,MAAM,GAAG,CAAC,EACvB,IAAI,SAAS,MAAM,GAAG,EAAE,IACpB,EAAE,SAAS,CAAC,GACd,IAAI,GACJ,MAAM,CACJ,UAAU,CAAC,CAAC,CAAC,EACb,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,CAAC,GACjD,EAAE,CACA,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,EACxB,GAAG,EACH,IAAI,CACL,GACD,IAAI,EACN,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,CAAC,GACnE,EAAE,CACA,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,EACxB,GAAG,EACH,IAAI,CACL,GACD,IAAI,CACP,CAAA;AAEH;;;;;GAKG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,IACvB,CAAC,SAAS,SAAS,MAAM,EAAE,GACzB,MAAM,CAAC;KACN,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAC/B,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACpB,KAAK;CACR,CAAC,GACF,KAAK,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Container } from "../base-types";
|
|
2
|
+
import { As, IsStringLiteral } from "../boolean-logic";
|
|
3
|
+
import { IsEqual } from "../boolean-logic/operators/IsEqual";
|
|
4
|
+
import { Get } from "../dictionary/Get";
|
|
5
|
+
import { AsNumericArray } from "./AsNumericArray";
|
|
6
|
+
import { RetainByProp } from "./RetainByProp";
|
|
7
|
+
import { Reverse } from "./Reverse";
|
|
8
|
+
type Iterator<N, iterator extends number[] = []> = iterator['length'] extends N ? iterator : Iterator<N, [any, ...iterator]>;
|
|
9
|
+
type Drop1<xs extends any[]> = xs extends [any, ...infer tail] ? tail : [];
|
|
10
|
+
type LessThanOrEqual<a extends number[], b extends number[]> = [
|
|
11
|
+
a,
|
|
12
|
+
b
|
|
13
|
+
] extends [[], [any, ...any]] ? true : [a, b] extends [[any, ...any], []] ? false : [a, b] extends [[], []] ? true : LessThanOrEqual<Drop1<a>, Drop1<b>>;
|
|
14
|
+
type GreaterThan<a extends number[], b extends number[]> = [
|
|
15
|
+
a,
|
|
16
|
+
b
|
|
17
|
+
] extends [[], [any, ...any]] ? false : [a, b] extends [[any, ...any], []] ? true : [a, b] extends [[], []] ? false : GreaterThan<Drop1<a>, Drop1<b>>;
|
|
18
|
+
type FilterLessThanOrEqual<TVal, TValues extends number[], TOut extends number[] = []> = TValues extends [infer head, ...infer tail extends number[]] ? LessThanOrEqual<Iterator<TVal>, Iterator<head>> extends true ? [...TOut, head, ...FilterLessThanOrEqual<TVal, tail, TOut>] : [...TOut, ...FilterLessThanOrEqual<TVal, tail, TOut>] : [];
|
|
19
|
+
type FilterGreaterThan<TVal, TValues extends number[], TOut extends number[] = []> = TValues extends [infer head, ...infer tail extends number[]] ? GreaterThan<Iterator<TVal>, Iterator<head>> extends true ? [...TOut, head, ...FilterGreaterThan<TVal, tail, TOut>] : [...TOut, ...FilterGreaterThan<TVal, tail, TOut>] : [];
|
|
20
|
+
/**
|
|
21
|
+
* Local Sort for values at root (aka, not offset)
|
|
22
|
+
*/
|
|
23
|
+
type _Sort<TValues extends readonly number[], TReverse extends boolean> = TValues extends [infer head, ...infer tail extends number[]] ? TReverse extends true ? [
|
|
24
|
+
..._Sort<FilterLessThanOrEqual<head, tail>, TReverse>,
|
|
25
|
+
head,
|
|
26
|
+
..._Sort<FilterGreaterThan<head, tail>, TReverse>
|
|
27
|
+
] : [
|
|
28
|
+
..._Sort<FilterGreaterThan<head, tail>, TReverse>,
|
|
29
|
+
head,
|
|
30
|
+
..._Sort<FilterLessThanOrEqual<head, tail>, TReverse>
|
|
31
|
+
] : [];
|
|
32
|
+
type _SortOffset<TContainers extends readonly Container[], TOffset extends string> = TContainers extends [infer head extends Container, ...infer rest extends Container[]] ? [
|
|
33
|
+
..._SortOffset<As<RetainByProp<rest, Get<head, TOffset>, TOffset, "lessThanOrEqual">, Container[]>, TOffset>,
|
|
34
|
+
head,
|
|
35
|
+
..._SortOffset<As<RetainByProp<rest, Get<head, TOffset>, TOffset, "greaterThan">, Container[]>, TOffset>
|
|
36
|
+
] : [];
|
|
37
|
+
export type NumericSupportOptions<TOrder extends "ASC" | "DESC" | undefined = "ASC" | "DESC" | undefined, TOffset extends string | undefined = string | undefined> = {
|
|
38
|
+
/**
|
|
39
|
+
* by default this is set to sort by _ascending_ order but this can be
|
|
40
|
+
* reversed by changing order to `DESC`.
|
|
41
|
+
*/
|
|
42
|
+
order?: TOrder;
|
|
43
|
+
/**
|
|
44
|
+
* by default, the sorting will expect the numeric value to exist
|
|
45
|
+
* as the base type, however, if you are using some sort of "container"
|
|
46
|
+
* object you may prefer to _offset_
|
|
47
|
+
*/
|
|
48
|
+
offset?: TOffset;
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* **NumericSort**`<TValues, [TOpt]>`
|
|
52
|
+
*
|
|
53
|
+
* Sorts the values in a tuple numerically.
|
|
54
|
+
*
|
|
55
|
+
* - _values_ can be a `number` or `${number}`
|
|
56
|
+
*
|
|
57
|
+
* Options:
|
|
58
|
+
* - `order`: defaults to `ASC` but can be set to `DESC`
|
|
59
|
+
* - `offset`: if you have _containers_ as values, you can specify an offset to use to look for the numeric value
|
|
60
|
+
*/
|
|
61
|
+
export type NumericSort<TValues extends any[], TOpt extends NumericSupportOptions = NumericSupportOptions> = IsStringLiteral<TOpt["offset"]> extends true ? [IsEqual<TOpt["order"], "ASC">] extends [true] ? _SortOffset<TValues, As<TOpt["offset"], string>> : Reverse<_SortOffset<TValues, As<TOpt["offset"], string>>> : _Sort<AsNumericArray<TValues>, [
|
|
62
|
+
IsEqual<TOpt["order"], "DESC">
|
|
63
|
+
] extends [true] ? true : false>;
|
|
64
|
+
export {};
|
|
65
|
+
//# sourceMappingURL=NumericSort.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NumericSort.d.ts","sourceRoot":"","sources":["../../../src/types/lists/NumericSort.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -13,6 +13,7 @@ export * from "./FilterLiterals";
|
|
|
13
13
|
export * from "./FilterWideTypes";
|
|
14
14
|
export * from "./Length";
|
|
15
15
|
export * from "./Last";
|
|
16
|
+
export * from "./MaxLength";
|
|
16
17
|
export * from "./IndexOf";
|
|
17
18
|
export * from "./UnionFromProp";
|
|
18
19
|
export * from "./Flatten";
|
|
@@ -43,4 +44,6 @@ export * from "./ToCSV";
|
|
|
43
44
|
export * from "./Push";
|
|
44
45
|
export * from "./TakeFirst";
|
|
45
46
|
export * from "./TakeLast";
|
|
47
|
+
export * from "./NumericSort";
|
|
48
|
+
export * from "./AsNumericArray";
|
|
46
49
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/lists/index.ts"],"names":[],"mappings":"AAOA,cAAc,cAAc,CAAC;AAC7B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/lists/index.ts"],"names":[],"mappings":"AAOA,cAAc,cAAc,CAAC;AAC7B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAC"}
|
|
@@ -18,6 +18,7 @@ export * from "./FilterLiterals.js";
|
|
|
18
18
|
export * from "./FilterWideTypes.js";
|
|
19
19
|
export * from "./Length.js";
|
|
20
20
|
export * from "./Last.js";
|
|
21
|
+
export * from "./MaxLength.js";
|
|
21
22
|
export * from "./IndexOf.js";
|
|
22
23
|
export * from "./UnionFromProp.js";
|
|
23
24
|
export * from "./Flatten.js";
|
|
@@ -48,6 +49,8 @@ export * from "./ToCSV.js";
|
|
|
48
49
|
export * from "./Push.js";
|
|
49
50
|
export * from "./TakeFirst.js";
|
|
50
51
|
export * from "./TakeLast.js";
|
|
52
|
+
export * from "./NumericSort.js";
|
|
53
|
+
export * from "./AsNumericArray.js";
|
|
51
54
|
// #endregion auto-indexed files
|
|
52
55
|
// see https://github.com/inocan-group/do-devops/docs/autoindex.md
|
|
53
56
|
// for more info
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { ComparatorOperation, Compare } from "../boolean-logic";
|
|
2
|
+
import { AfterFirst, First, Last } from "../lists";
|
|
3
|
+
import { Increment } from "../numeric-literals";
|
|
4
|
+
import { Chars } from "./Chars";
|
|
5
|
+
type _FindIndexes<TContent extends readonly unknown[], TFind, TOp extends ComparatorOperation = "extends", TIdx extends number = 0, TResults extends readonly number[] = []> = [] extends TContent ? TResults : _FindIndexes<AfterFirst<TContent>, TFind, TOp, Increment<TIdx>, Compare<First<TContent>, TOp, TFind> extends true ? [
|
|
6
|
+
...TResults,
|
|
7
|
+
TIdx
|
|
8
|
+
] : TResults>;
|
|
9
|
+
/**
|
|
10
|
+
* **FindIndexes**
|
|
11
|
+
*
|
|
12
|
+
* Utility which returns all _indexes_ in `TContent`
|
|
13
|
+
* where `TFind` is found.
|
|
14
|
+
*
|
|
15
|
+
* - by default, the comparision operation is "extends" but
|
|
16
|
+
* you can change this with `TOp`.
|
|
17
|
+
* - the content (`TContent`) can be either a string or a tuple
|
|
18
|
+
*
|
|
19
|
+
* **Related:** `FindFirstIndex`, `FindLastIndex`, `FindIndexesWithMeta`
|
|
20
|
+
*/
|
|
21
|
+
export type FindIndexes<TContent extends string | readonly unknown[], TFind, TOp extends ComparatorOperation = "extends"> = TContent extends string ? _FindIndexes<Chars<TContent>, TFind, TOp> : TContent extends readonly unknown[] ? _FindIndexes<TContent, TFind, TOp> : never;
|
|
22
|
+
/**
|
|
23
|
+
* **FindFirstIndex**`<TContent,TFind,[TOp]>`
|
|
24
|
+
*
|
|
25
|
+
* Utility which returns the _first_ index in the content
|
|
26
|
+
* which matches the
|
|
27
|
+
*/
|
|
28
|
+
export type FindFirstIndex<TContent extends string | readonly unknown[], TFind, TOp extends ComparatorOperation = "extends"> = First<FindIndexes<TContent, TFind, TOp>>;
|
|
29
|
+
export type FindLastIndex<TContent extends string | readonly unknown[], TFind, TOp extends ComparatorOperation = "extends"> = Last<FindIndexes<TContent, TFind, TOp>>;
|
|
30
|
+
export type FindIndexMetaOfString = {
|
|
31
|
+
start: number;
|
|
32
|
+
end: number;
|
|
33
|
+
break: unknown;
|
|
34
|
+
};
|
|
35
|
+
export type FindIndexMetaOfTuple = {
|
|
36
|
+
index: number;
|
|
37
|
+
break: unknown;
|
|
38
|
+
};
|
|
39
|
+
type _FindIndexesWithMeta__String<TOriginal extends readonly unknown[], TContent extends readonly unknown[], TFind, TOp extends ComparatorOperation = "extends", TIdx extends number = 0, TResults extends readonly FindIndexMetaOfString[] | [] = []> = [] extends TContent ? TResults : _FindIndexesWithMeta__String<TOriginal, AfterFirst<TContent>, TFind, TOp, Increment<TIdx>, Compare<First<TContent>, TOp, TFind> extends true ? [
|
|
40
|
+
...TResults,
|
|
41
|
+
{
|
|
42
|
+
start: TIdx;
|
|
43
|
+
end: Increment<TIdx>;
|
|
44
|
+
break: TOriginal[TIdx];
|
|
45
|
+
}
|
|
46
|
+
] : TResults>;
|
|
47
|
+
type _FindIndexesWithMeta__Tuple<TOriginal extends readonly unknown[], TContent extends readonly unknown[], TFind, TOp extends ComparatorOperation = "extends", TIdx extends number = 0, TResults extends readonly FindIndexMetaOfTuple[] | [] = []> = [] extends TContent ? TResults : _FindIndexesWithMeta__Tuple<TOriginal, AfterFirst<TContent>, TFind, TOp, Increment<TIdx>, Compare<First<TContent>, TOp, TFind> extends true ? [
|
|
48
|
+
...TResults,
|
|
49
|
+
{
|
|
50
|
+
index: TIdx;
|
|
51
|
+
break: TOriginal[TIdx];
|
|
52
|
+
}
|
|
53
|
+
] : TResults>;
|
|
54
|
+
/**
|
|
55
|
+
* **FindIndexesWithMeta**
|
|
56
|
+
*
|
|
57
|
+
* Utility which returns all _indexes_ in `TContent`
|
|
58
|
+
* where `TFind` is found.
|
|
59
|
+
*
|
|
60
|
+
* - by default, the comparision operation is "extends" but
|
|
61
|
+
* you can change this with `TOp`.
|
|
62
|
+
* - the content (`TContent`) can be either a string or a tuple
|
|
63
|
+
*
|
|
64
|
+
* **Related:** `FindFirstIndex`, `FindLastIndex`
|
|
65
|
+
*/
|
|
66
|
+
export type FindIndexesWithMeta<TContent extends string | readonly unknown[], TFind, TOp extends ComparatorOperation = "extends"> = TContent extends string ? _FindIndexesWithMeta__String<Chars<TContent>, Chars<TContent>, TFind, TOp> : TContent extends readonly unknown[] ? _FindIndexesWithMeta__Tuple<TContent, TContent, TFind, TOp> : never;
|
|
67
|
+
export {};
|
|
68
|
+
//# sourceMappingURL=FindIndex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FindIndex.d.ts","sourceRoot":"","sources":["../../../src/types/string-literals/FindIndex.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PLURAL_EXCEPTIONS } from "../../constants/index";
|
|
2
|
-
import { Consonant, IsStringLiteral, EnsureTrailing, StripTrailing } from "../index";
|
|
2
|
+
import { Consonant, IsStringLiteral, EnsureTrailing, StripTrailing, Whitespace, TrimRight, Join, RightWhitespace } from "../index";
|
|
3
3
|
type ExceptionLookup = typeof PLURAL_EXCEPTIONS;
|
|
4
4
|
type SingularNoun = "s" | "sh" | "ch" | "x" | "z" | "o";
|
|
5
5
|
type F = "f" | "fe";
|
|
@@ -34,12 +34,16 @@ type PluralizeEnding_F<T extends string> = T extends `${infer HEAD}${F}` ? `${HE
|
|
|
34
34
|
* singular nouns should have "es" added to the end
|
|
35
35
|
*/
|
|
36
36
|
type PluralizeEndingIn_Y<T extends string> = EnsureTrailing<StripTrailing<T, "y">, "ies">;
|
|
37
|
+
type _Pluralize<T extends string> = IsException<T> extends true ? PluralException<T> : T extends EndsIn_IS<T> ? PluralizeEndingIn_IS<T> : T extends EndsInSingularNoun<T> ? PluralizeEndingSingularNoun<T> : T extends EndsIn_F<T> ? PluralizeEnding_F<T> : T extends EndsIn_Y<T> ? PluralizeEndingIn_Y<T> : `${T}s`;
|
|
37
38
|
/**
|
|
38
39
|
* **Pluralize**`<T>`
|
|
39
40
|
*
|
|
40
41
|
* Pluralizes the word `T`, using _language rules_ on pluralization for English as well as
|
|
41
42
|
* leveraging many known exceptions to the linguistic rules.
|
|
42
43
|
*/
|
|
43
|
-
export type Pluralize<T extends string> = IsStringLiteral<T> extends true ?
|
|
44
|
+
export type Pluralize<T extends string> = IsStringLiteral<T> extends true ? T extends `${string}${Whitespace}` ? Join<[
|
|
45
|
+
_Pluralize<TrimRight<T>>,
|
|
46
|
+
RightWhitespace<T>
|
|
47
|
+
]> : _Pluralize<T> : string;
|
|
44
48
|
export {};
|
|
45
49
|
//# sourceMappingURL=Pluralize.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pluralize.d.ts","sourceRoot":"","sources":["../../../src/types/string-literals/Pluralize.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,8BAA4B;AACxD,OAAO,EACL,SAAS,EACT,eAAe,EACf,cAAc,EACd,aAAa,
|
|
1
|
+
{"version":3,"file":"Pluralize.d.ts","sourceRoot":"","sources":["../../../src/types/string-literals/Pluralize.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,30 @@
|
|
|
1
|
-
import { IfAllLiteral } from "../index";
|
|
1
|
+
import { If, IfAllLiteral, IsNever, IsTrue, IsUnion, MaxLength, UnionToTuple } from "../index";
|
|
2
|
+
type _RetainAfter<TStr extends string, TBreak extends string, TInclude extends boolean = false> = IfAllLiteral<[
|
|
3
|
+
TStr,
|
|
4
|
+
TBreak
|
|
5
|
+
], TBreak extends any ? TStr extends `${string}${TBreak}${infer Rest}` ? If<IsTrue<TInclude>, `${TBreak}${Rest}`, Rest> : never : never, string>;
|
|
2
6
|
/**
|
|
3
|
-
* **RetainAfter**`<TStr, TBreak>`
|
|
7
|
+
* **RetainAfter**`<TStr, TBreak, [TInclude]>`
|
|
8
|
+
*
|
|
9
|
+
* Receives a string `TStr` and _retains_ characters after
|
|
10
|
+
* the first occurrence of `TBreak` is found.
|
|
4
11
|
*
|
|
5
|
-
*
|
|
6
|
-
* the
|
|
12
|
+
* By default the first `TBreak` found will _not_ be included
|
|
13
|
+
* in the returned string but you can set `TInclude` to true
|
|
14
|
+
* to reverse this behavior.
|
|
7
15
|
*
|
|
8
16
|
* ### Example
|
|
9
17
|
* ```ts
|
|
10
|
-
* // "
|
|
11
|
-
* type T = RetainAfter<"
|
|
18
|
+
* // "blue green"
|
|
19
|
+
* type T = RetainAfter<"red blue green", " ">;
|
|
20
|
+
* // " blue green"
|
|
21
|
+
* type T2 = RetainAfter<"red blue green", " ", true>;
|
|
12
22
|
* ```
|
|
13
23
|
*/
|
|
14
|
-
export type RetainAfter<TStr extends string, TBreak extends string> =
|
|
24
|
+
export type RetainAfter<TStr extends string, TBreak extends string, TInclude extends boolean = false> = IsNever<_RetainAfter<TStr, TBreak, TInclude>> extends true ? "" : IsUnion<_RetainAfter<TStr, TBreak, TInclude>> extends true ? MaxLength<UnionToTuple<_RetainAfter<TStr, TBreak, TInclude>>> : _RetainAfter<TStr, TBreak, TInclude>;
|
|
25
|
+
export type RetainAfterLast<TStr extends string, TBreak extends string, TInclude extends boolean = false> = IfAllLiteral<[
|
|
15
26
|
TStr,
|
|
16
27
|
TBreak
|
|
17
|
-
], TStr extends `${string}${TBreak}${infer REST}` ? `${REST}
|
|
28
|
+
], TStr extends `${string}${infer Break extends TBreak}${infer REST}` ? If<IsTrue<TInclude>, `${Break}${REST}`, `${REST}`> : TStr, string>;
|
|
29
|
+
export {};
|
|
18
30
|
//# sourceMappingURL=RetainAfter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RetainAfter.d.ts","sourceRoot":"","sources":["../../../src/types/string-literals/RetainAfter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"RetainAfter.d.ts","sourceRoot":"","sources":["../../../src/types/string-literals/RetainAfter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,EAAE,EACF,YAAY,EACZ,OAAO,EACP,MAAM,EACN,OAAO,EACP,SAAS,EACT,YAAY,EACb,iBAAwB;AAEzB,KAAK,YAAY,CACf,IAAI,SAAS,MAAM,EACnB,MAAM,SAAS,MAAM,EACrB,QAAQ,SAAS,OAAO,GAAG,KAAK,IAC9B,YAAY,CAChB;IAAC,IAAI;IAAE,MAAM;CAAC,EACd,MAAM,SAAS,GAAG,GAChB,IAAI,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,IAAI,EAAE,GAC5C,EAAE,CACA,MAAM,CAAC,QAAQ,CAAC,EAChB,GAAG,MAAM,GAAG,IAAI,EAAE,EAClB,IAAI,CACL,GACD,KAAK,GACP,KAAK,EACP,MAAM,CACL,CAAA;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,WAAW,CACrB,IAAI,SAAS,MAAM,EACnB,MAAM,SAAS,MAAM,EACrB,QAAQ,SAAS,OAAO,GAAG,KAAK,IAC9B,OAAO,CAAC,YAAY,CAAC,IAAI,EAAC,MAAM,EAAC,QAAQ,CAAC,CAAC,SAAS,IAAI,GAC1D,EAAE,GACF,OAAO,CAAC,YAAY,CAAC,IAAI,EAAC,MAAM,EAAC,QAAQ,CAAC,CAAC,SAAS,IAAI,GACxD,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,EAAC,MAAM,EAAC,QAAQ,CAAC,CAAC,CAAC,GAC3D,YAAY,CAAC,IAAI,EAAC,MAAM,EAAC,QAAQ,CAAC,CAAC;AAGrC,MAAM,MAAM,eAAe,CACzB,IAAI,SAAS,MAAM,EACnB,MAAM,SAAS,MAAM,EACrB,QAAQ,SAAS,OAAO,GAAG,KAAK,IAC9B,YAAY,CACd;IAAC,IAAI;IAAE,MAAM;CAAC,EACd,IAAI,SAAS,GAAG,MAAM,GAAG,MAAM,KAAK,SAAS,MAAM,GAAG,MAAM,IAAI,EAAE,GAC9D,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,KAAK,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,GAClD,IAAI,EACR,MAAM,CACP,CAAA"}
|
|
@@ -7,7 +7,7 @@ import { CssSizing } from "./sizing";
|
|
|
7
7
|
*/
|
|
8
8
|
export type CssObjectFit = "contain" | "cover" | "fill" | "none" | "scale-down" | "inherit" | "initial" | "revert" | "revert-layer" | "unset";
|
|
9
9
|
type Positional = "top" | "bottom" | "left" | "right" | "center";
|
|
10
|
-
type LengthValues = "0 0" | `${CssSizing} ${CssSizing}` | `${Positional} ${CssSizing} ${Positional} ${
|
|
10
|
+
type LengthValues = "0 0" | `${CssSizing} ${CssSizing}` | `${Positional} ${CssSizing} ${Positional} ${string}`;
|
|
11
11
|
/**
|
|
12
12
|
* **CssObjectPosition**
|
|
13
13
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../../../../src/types/string-literals/character-sets/css/object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,OAAO,GACP,MAAM,GACN,MAAM,GACN,YAAY,GACZ,SAAS,GACT,SAAS,GACT,QAAQ,GACR,cAAc,GACd,OAAO,CAAC;AAGZ,KAAK,UAAU,GACX,KAAK,GACL,QAAQ,GACR,MAAM,GACN,OAAO,GACP,QAAQ,CAAC;AAEb,KAAK,YAAY,GAAG,KAAK,GAAG,GAAG,SAAS,IAAI,SAAS,EAAE,GAAG,GAAG,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,
|
|
1
|
+
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../../../../src/types/string-literals/character-sets/css/object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,OAAO,GACP,MAAM,GACN,MAAM,GACN,YAAY,GACZ,SAAS,GACT,SAAS,GACT,QAAQ,GACR,cAAc,GACd,OAAO,CAAC;AAGZ,KAAK,UAAU,GACX,KAAK,GACL,QAAQ,GACR,MAAM,GACN,OAAO,GACP,QAAQ,CAAC;AAEb,KAAK,YAAY,GAAG,KAAK,GAAG,GAAG,SAAS,IAAI,SAAS,EAAE,GAAG,GAAG,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,MAAM,EAAE,CAAA;AAG9G;;;;;;;;;GASG;AACH,MAAM,MAAM,iBAAiB,GACzB,KAAK,GACL,QAAQ,GACR,MAAM,GACN,OAAO,GACP,QAAQ,GACR,GAAG,YAAY,EAAE,GACjB,QAAQ,GACR,SAAS,GACT,SAAS,GACT,QAAQ,GACR,cAAc,GACd,OAAO,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export type SizingUnits = `px` | `em` | `rem` | `ch` | `vh` | `vw` | `fr`;
|
|
1
|
+
export type SizingUnits = `px` | `em` | `rem` | `ch` | `vh` | `svh` | `dvh` | `lvh` | `vw` | `lvw` | `svw` | `dvw` | `fr`;
|
|
2
2
|
type VariableSizing = `var(${string})${SizingUnits}` | `var(${string})` | `calc(${string})${SizingUnits}` | `calc(${string})` | `min(${string})${SizingUnits}` | `min(${string})` | `max(${string})${SizingUnits}` | `max(${string})` | `minmax(${string})${SizingUnits}` | `minmax(${string})`;
|
|
3
3
|
/**
|
|
4
4
|
* provides a string literal which is intended to describe the
|
|
5
5
|
* "size" of any CSS property (whether using static values or
|
|
6
6
|
* CSS variables)
|
|
7
7
|
*/
|
|
8
|
-
export type CssSizing = `${number}${SizingUnits}` | VariableSizing;
|
|
8
|
+
export type CssSizing = `${number}${SizingUnits}` | `${number}%` | VariableSizing;
|
|
9
9
|
export {};
|
|
10
10
|
//# sourceMappingURL=sizing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sizing.d.ts","sourceRoot":"","sources":["../../../../../src/types/string-literals/character-sets/css/sizing.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GACrB,IAAI,GACJ,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,CAAC;AAEP,KAAK,cAAc,GACjB,OAAO,MAAM,IAAI,WAAW,EAAE,GAC9B,OAAO,MAAM,GAAG,GAChB,QAAQ,MAAM,IAAI,WAAW,EAAE,GAC/B,QAAQ,MAAM,GAAG,GACjB,OAAO,MAAM,IAAI,WAAW,EAAE,GAC9B,OAAO,MAAM,GAAG,GAChB,OAAO,MAAM,IAAI,WAAW,EAAE,GAC9B,OAAO,MAAM,GAAG,GAChB,UAAU,MAAM,IAAI,WAAW,EAAE,GACjC,UAAU,MAAM,GAAG,CAAC;AAGtB;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,GAAG,MAAM,GAAG,WAAW,EAAE,GAAG,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"sizing.d.ts","sourceRoot":"","sources":["../../../../../src/types/string-literals/character-sets/css/sizing.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GACrB,IAAI,GACJ,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,IAAI,GACJ,KAAK,GACL,KAAK,GACL,KAAK,GACL,IAAI,GACJ,KAAK,GACL,KAAK,GACL,KAAK,GACL,IAAI,CAAC;AAEP,KAAK,cAAc,GACjB,OAAO,MAAM,IAAI,WAAW,EAAE,GAC9B,OAAO,MAAM,GAAG,GAChB,QAAQ,MAAM,IAAI,WAAW,EAAE,GAC/B,QAAQ,MAAM,GAAG,GACjB,OAAO,MAAM,IAAI,WAAW,EAAE,GAC9B,OAAO,MAAM,GAAG,GAChB,OAAO,MAAM,IAAI,WAAW,EAAE,GAC9B,OAAO,MAAM,GAAG,GAChB,UAAU,MAAM,IAAI,WAAW,EAAE,GACjC,UAAU,MAAM,GAAG,CAAC;AAGtB;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,GAAG,MAAM,GAAG,WAAW,EAAE,GAAG,GAAG,MAAM,GAAG,GAAG,cAAc,CAAC"}
|
|
@@ -11,6 +11,7 @@ export * from "./EmptyString";
|
|
|
11
11
|
export * from "./EmptyStringOr";
|
|
12
12
|
export * from "./EnsureTrailing";
|
|
13
13
|
export * from "./FirstChar";
|
|
14
|
+
export * from "./FindIndex";
|
|
14
15
|
export * from "./LastChar";
|
|
15
16
|
export * from "./AfterFirstChar";
|
|
16
17
|
export * from "./IsCapitalized";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/string-literals/index.ts"],"names":[],"mappings":"AAMA,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AAEjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/string-literals/index.ts"],"names":[],"mappings":"AAMA,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AAEjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC"}
|
|
@@ -16,6 +16,7 @@ export * from "./EmptyString.js";
|
|
|
16
16
|
export * from "./EmptyStringOr.js";
|
|
17
17
|
export * from "./EnsureTrailing.js";
|
|
18
18
|
export * from "./FirstChar.js";
|
|
19
|
+
export * from "./FindIndex.js";
|
|
19
20
|
export * from "./LastChar.js";
|
|
20
21
|
export * from "./AfterFirstChar.js";
|
|
21
22
|
export * from "./IsCapitalized.js";
|