@thi.ng/api
Advanced tools
Comparing version 6.8.3 to 6.9.0
@@ -0,1 +1,2 @@ | ||
import type { IObjectOf } from "./object"; | ||
/** | ||
@@ -10,2 +11,28 @@ * Generic interface for reference types (value wrappers). | ||
} | ||
/** | ||
* If `T` is a {@link IDeref}, returns its value type or else `T`. | ||
*/ | ||
export declare type Derefed<T> = T extends IDeref<any> ? ReturnType<T["deref"]> : T; | ||
/** | ||
* Constructs a type with a set of properties `K` of type `T` and | ||
* attempts to resolve each given key via {@link Derefed}. | ||
* | ||
* @example | ||
* ```ts | ||
* interface Foo { | ||
* a: IDeref<string>; | ||
* b: IDeref<number>; | ||
* c: { d: number }; | ||
* } | ||
* | ||
* type Foo2 = DerefedKeys<Foo>; | ||
* // { a: string; b: number; c: { d: number; } } | ||
* | ||
* type Foo3 = DerefedKeys<Foo, "b">; | ||
* // { b: number; } | ||
* ``` | ||
*/ | ||
export declare type DerefedKeys<T extends IObjectOf<any>, K extends keyof T = keyof T> = { | ||
[P in K]: Derefed<T[P]>; | ||
}; | ||
//# sourceMappingURL=deref.d.ts.map |
import type { Head, Tail } from "./tuple"; | ||
/** | ||
* Lookup path for nested data structures. | ||
*/ | ||
export declare type Path = PropertyKey | PropertyKey[]; | ||
/** | ||
* Extracts from A all keys which have values assignable to type B. | ||
*/ | ||
export declare type TypedKeys<A, B> = { | ||
[P in keyof Required<A>]: B extends A[P] ? P : never; | ||
[P in Keys<A>]: B extends A[P] ? P : never; | ||
}[keyof A]; | ||
export declare type NumericKeys<T> = TypedKeys<T, number>; | ||
export declare type StringKeys<T> = TypedKeys<T, string>; | ||
export declare type Keys<T> = keyof T; | ||
export declare type Keys1<T, A extends Keys<T>> = Keys<T[A]>; | ||
export declare type Keys2<T, A extends Keys<T>, B extends Keys1<T, A>> = Keys1<T[A], B>; | ||
export declare type Keys3<T, A extends Keys<T>, B extends Keys1<T, A>, C extends Keys2<T, A, B>> = Keys2<T[A], B, C>; | ||
export declare type Keys4<T, A extends Keys<T>, B extends Keys1<T, A>, C extends Keys2<T, A, B>, D extends Keys3<T, A, B, C>> = Keys3<T[A], B, C, D>; | ||
export declare type Keys5<T, A extends Keys<T>, B extends Keys1<T, A>, C extends Keys2<T, A, B>, D extends Keys3<T, A, B, C>, E extends Keys4<T, A, B, C, D>> = Keys4<T[A], B, C, D, E>; | ||
export declare type Keys6<T, A extends Keys<T>, B extends Keys1<T, A>, C extends Keys2<T, A, B>, D extends Keys3<T, A, B, C>, E extends Keys4<T, A, B, C, D>, F extends Keys5<T, A, B, C, D, E>> = Keys5<T[A], B, C, D, E, F>; | ||
export declare type Keys7<T, A extends Keys<T>, B extends Keys1<T, A>, C extends Keys2<T, A, B>, D extends Keys3<T, A, B, C>, E extends Keys4<T, A, B, C, D>, F extends Keys5<T, A, B, C, D, E>, G extends Keys6<T, A, B, C, D, E, F>> = Keys6<T[A], B, C, D, E, F, G>; | ||
export declare type Keys8<T, A extends Keys<T>, B extends Keys1<T, A>, C extends Keys2<T, A, B>, D extends Keys3<T, A, B, C>, E extends Keys4<T, A, B, C, D>, F extends Keys5<T, A, B, C, D, E>, G extends Keys6<T, A, B, C, D, E, F>, H extends Keys7<T, A, B, C, D, E, F, G>> = Keys7<T[A], B, C, D, E, F, G, H>; | ||
export declare type Keys<T> = keyof Required<T>; | ||
export declare type Keys1<T, A extends Keys<T>> = Keys<Required<T>[A]>; | ||
export declare type Keys2<T, A extends Keys<T>, B extends Keys1<T, A>> = Keys1<Required<T>[A], B>; | ||
export declare type Keys3<T, A extends Keys<T>, B extends Keys1<T, A>, C extends Keys2<T, A, B>> = Keys2<Required<T>[A], B, C>; | ||
export declare type Keys4<T, A extends Keys<T>, B extends Keys1<T, A>, C extends Keys2<T, A, B>, D extends Keys3<T, A, B, C>> = Keys3<Required<T>[A], B, C, D>; | ||
export declare type Keys5<T, A extends Keys<T>, B extends Keys1<T, A>, C extends Keys2<T, A, B>, D extends Keys3<T, A, B, C>, E extends Keys4<T, A, B, C, D>> = Keys4<Required<T>[A], B, C, D, E>; | ||
export declare type Keys6<T, A extends Keys<T>, B extends Keys1<T, A>, C extends Keys2<T, A, B>, D extends Keys3<T, A, B, C>, E extends Keys4<T, A, B, C, D>, F extends Keys5<T, A, B, C, D, E>> = Keys5<Required<T>[A], B, C, D, E, F>; | ||
export declare type Keys7<T, A extends Keys<T>, B extends Keys1<T, A>, C extends Keys2<T, A, B>, D extends Keys3<T, A, B, C>, E extends Keys4<T, A, B, C, D>, F extends Keys5<T, A, B, C, D, E>, G extends Keys6<T, A, B, C, D, E, F>> = Keys6<Required<T>[A], B, C, D, E, F, G>; | ||
export declare type Keys8<T, A extends Keys<T>, B extends Keys1<T, A>, C extends Keys2<T, A, B>, D extends Keys3<T, A, B, C>, E extends Keys4<T, A, B, C, D>, F extends Keys5<T, A, B, C, D, E>, G extends Keys6<T, A, B, C, D, E, F>, H extends Keys7<T, A, B, C, D, E, F, G>> = Keys7<Required<T>[A], B, C, D, E, F, G, H>; | ||
/** | ||
@@ -33,4 +29,4 @@ * Internal type used as a reducer for the KeyN type. | ||
declare type KeysNReducer<T, L, R extends unknown[]> = L extends keyof T ? { | ||
0: keyof T[L]; | ||
1: KeysNReducer<T[L], Head<R>, Tail<R>>; | ||
0: keyof Required<T>[L]; | ||
1: KeysNReducer<Required<T>[L], Head<R>, Tail<R>>; | ||
}[R extends [] ? 0 : 1] : never; | ||
@@ -42,9 +38,9 @@ /** | ||
export declare type Val1<T, A extends Keys<T>> = T[A]; | ||
export declare type Val2<T, A extends Keys<T>, B extends Keys1<T, A>> = Val1<T, A>[B]; | ||
export declare type Val3<T, A extends Keys<T>, B extends Keys1<T, A>, C extends Keys2<T, A, B>> = Val2<T, A, B>[C]; | ||
export declare type Val4<T, A extends Keys<T>, B extends Keys1<T, A>, C extends Keys2<T, A, B>, D extends Keys3<T, A, B, C>> = Val3<T, A, B, C>[D]; | ||
export declare type Val5<T, A extends Keys<T>, B extends Keys1<T, A>, C extends Keys2<T, A, B>, D extends Keys3<T, A, B, C>, E extends Keys4<T, A, B, C, D>> = Val4<T, A, B, C, D>[E]; | ||
export declare type Val6<T, A extends Keys<T>, B extends Keys1<T, A>, C extends Keys2<T, A, B>, D extends Keys3<T, A, B, C>, E extends Keys4<T, A, B, C, D>, F extends Keys5<T, A, B, C, D, E>> = Val5<T, A, B, C, D, E>[F]; | ||
export declare type Val7<T, A extends Keys<T>, B extends Keys1<T, A>, C extends Keys2<T, A, B>, D extends Keys3<T, A, B, C>, E extends Keys4<T, A, B, C, D>, F extends Keys5<T, A, B, C, D, E>, G extends Keys6<T, A, B, C, D, E, F>> = Val6<T, A, B, C, D, E, F>[G]; | ||
export declare type Val8<T, A extends Keys<T>, B extends Keys1<T, A>, C extends Keys2<T, A, B>, D extends Keys3<T, A, B, C>, E extends Keys4<T, A, B, C, D>, F extends Keys5<T, A, B, C, D, E>, G extends Keys6<T, A, B, C, D, E, F>, H extends Keys7<T, A, B, C, D, E, F, G>> = Val7<T, A, B, C, D, E, F, G>[H]; | ||
export declare type Val2<T, A extends Keys<T>, B extends Keys1<T, A>> = ValN<T, [A, B]>; | ||
export declare type Val3<T, A extends Keys<T>, B extends Keys1<T, A>, C extends Keys2<T, A, B>> = ValN<T, [A, B, C]>; | ||
export declare type Val4<T, A extends Keys<T>, B extends Keys1<T, A>, C extends Keys2<T, A, B>, D extends Keys3<T, A, B, C>> = ValN<T, [A, B, C, D]>; | ||
export declare type Val5<T, A extends Keys<T>, B extends Keys1<T, A>, C extends Keys2<T, A, B>, D extends Keys3<T, A, B, C>, E extends Keys4<T, A, B, C, D>> = ValN<T, [A, B, C, D, E]>; | ||
export declare type Val6<T, A extends Keys<T>, B extends Keys1<T, A>, C extends Keys2<T, A, B>, D extends Keys3<T, A, B, C>, E extends Keys4<T, A, B, C, D>, F extends Keys5<T, A, B, C, D, E>> = ValN<T, [A, B, C, D, E, F]>; | ||
export declare type Val7<T, A extends Keys<T>, B extends Keys1<T, A>, C extends Keys2<T, A, B>, D extends Keys3<T, A, B, C>, E extends Keys4<T, A, B, C, D>, F extends Keys5<T, A, B, C, D, E>, G extends Keys6<T, A, B, C, D, E, F>> = ValN<T, [A, B, C, D, E, F, G]>; | ||
export declare type Val8<T, A extends Keys<T>, B extends Keys1<T, A>, C extends Keys2<T, A, B>, D extends Keys3<T, A, B, C>, E extends Keys4<T, A, B, C, D>, F extends Keys5<T, A, B, C, D, E>, G extends Keys6<T, A, B, C, D, E, F>, H extends Keys7<T, A, B, C, D, E, F, G>> = ValN<T, [A, B, C, D, E, F, G, H]>; | ||
/** | ||
@@ -61,3 +57,3 @@ * Internal reducer for ValN. | ||
0: T[C]; | ||
1: ValNReducer<T[C], Head<R>, Tail<R>>; | ||
1: ValNReducer<Required<T>[C], Head<R>, Tail<R>>; | ||
}[R extends [] ? 0 : 1] : never; | ||
@@ -64,0 +60,0 @@ /** |
@@ -9,6 +9,2 @@ /** | ||
/** | ||
* @deprecated merged w/ {@link Tuple} | ||
*/ | ||
export declare type IterableTuple<T, N extends number> = Tuple<T, N> & Iterable<T>; | ||
/** | ||
* Extracts a tuple's length / size. | ||
@@ -18,2 +14,6 @@ */ | ||
/** | ||
* Returns 1 if T is empty tuple, else 0 | ||
*/ | ||
export declare type IsEmpty<T extends unknown[]> = T extends [] ? 1 : 0; | ||
/** | ||
* Extracts the first element of a tuple. | ||
@@ -47,18 +47,13 @@ */ | ||
export declare type Last<T extends unknown[]> = { | ||
0: Head<T>; | ||
1: Last<Tail<T>>; | ||
}[Tail<T> extends [] ? 0 : 1]; | ||
0: Last<Tail<T>>; | ||
1: Head<T>; | ||
}[IsEmpty<Tail<T>>]; | ||
/** | ||
* Internal version of {@link ButLast} accepting 1 extra argument for | ||
* the accumulated value. | ||
*/ | ||
declare type ButLastReducer<T extends unknown[], C extends unknown[] = []> = { | ||
0: Reverse<C>; | ||
1: ButLastReducer<Tail<T>, Prepend<Head<T>, C>>; | ||
}[Tail<T> extends [] ? 0 : 1]; | ||
/** | ||
* Extracts everything except the last element from a tuple. | ||
*/ | ||
export declare type ButLast<T extends unknown[]> = ButLastReducer<T>; | ||
export declare type ButLast<T extends unknown[], C extends unknown[] = []> = { | ||
0: ButLast<Tail<T>, Prepend<Head<T>, C>>; | ||
1: Reverse<C>; | ||
}[IsEmpty<Tail<T>>]; | ||
export {}; | ||
//# sourceMappingURL=tuple.d.ts.map |
@@ -6,26 +6,16 @@ # Change Log | ||
## [6.8.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/api@6.8.2...@thi.ng/api@6.8.3) (2020-03-06) | ||
# [6.9.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/api@6.8.3...@thi.ng/api@6.9.0) (2020-03-28) | ||
**Note:** Version bump only for package @thi.ng/api | ||
### Features | ||
* **api:** add Derefed & DerefedKeys types ([95f1576](https://github.com/thi-ng/umbrella/commit/95f15765435e877aa92a66ac64933a962fbd2db5)) | ||
* **api:** add optional props in Keys/Val types ([08b88f0](https://github.com/thi-ng/umbrella/commit/08b88f0e74ffae0e4d8edddfbb5dff17f978a149)) | ||
* **api:** add Path0-8, PathVal1-8, DeepPath types ([0c76108](https://github.com/thi-ng/umbrella/commit/0c761085b60d27849650d51e851afd98f0f2b9ea)) | ||
* **api:** update Path alias, add doc strings ([e2b35bc](https://github.com/thi-ng/umbrella/commit/e2b35bc13cdf286d0e1cd60176eeb207525b064f)) | ||
## [6.8.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/api@6.8.1...@thi.ng/api@6.8.2) (2020-02-26) | ||
**Note:** Version bump only for package @thi.ng/api | ||
## [6.8.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/api@6.8.0...@thi.ng/api@6.8.1) (2020-02-26) | ||
**Note:** Version bump only for package @thi.ng/api | ||
# [6.8.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/api@6.7.1...@thi.ng/api@6.8.0) (2020-02-25) | ||
@@ -32,0 +22,0 @@ |
@@ -27,2 +27,3 @@ export * from "./api/assoc"; | ||
export * from "./api/object"; | ||
export * from "./api/path"; | ||
export * from "./api/predicate"; | ||
@@ -29,0 +30,0 @@ export * from "./api/prim"; |
{ | ||
"name": "@thi.ng/api", | ||
"version": "6.8.3", | ||
"version": "6.9.0", | ||
"description": "Common, generic types, interfaces & mixins", | ||
@@ -24,3 +24,3 @@ "module": "./index.js", | ||
"clean": "rimraf *.js *.d.ts .nyc_output build coverage doc lib api decorators mixins", | ||
"doc:readme": "../../scripts/generate-readme", | ||
"doc:readme": "ts-node -P ../../tools/tsconfig.json ../../tools/src/readme.ts", | ||
"doc": "node_modules/.bin/typedoc --mode modules --out doc src", | ||
@@ -59,3 +59,6 @@ "doc:ae": "mkdir -p .ae/doc .ae/temp && node_modules/.bin/api-extractor run --local --verbose", | ||
"sideEffects": false, | ||
"gitHead": "18014ee1e4978dac7eb2e5d51d0a6ff7d82e9ffc" | ||
"dependencies": { | ||
"tslib": "^1.11.1" | ||
}, | ||
"gitHead": "202477e312cf26869f0421e42a9a5fd80ff6adc8" | ||
} |
<!-- This file is generated - DO NOT EDIT! --> | ||
# ![@thi.ng/api](https://media.thi.ng/umbrella/banners/thing-api.svg?1581297776) | ||
# ![@thi.ng/api](https://media.thi.ng/umbrella/banners/thing-api.svg?1585427305) | ||
@@ -47,7 +47,7 @@ [![npm version](https://img.shields.io/npm/v/@thi.ng/api.svg)](https://www.npmjs.com/package/@thi.ng/api) | ||
Package sizes (gzipped): ESM: 2.0KB / CJS: 2.1KB / UMD: 2.1KB | ||
Package sizes (gzipped): ESM: 1.97 KB / CJS: 2.07 KB / UMD: 2.05 KB | ||
## Dependencies | ||
None | ||
- [tslib](https://github.com/thi-ng/umbrella/tree/develop/packages/undefined) | ||
@@ -77,7 +77,7 @@ ## API | ||
- Karsten Schmidt ([@postspectacular](https://github.com/postspectacular)) | ||
- Karsten Schmidt ([@postspectacular](https://github.com//postspectacular)) | ||
### Contributors | ||
- Matei Adriel ([@Mateiadrielrafael](https://github.com/Mateiadrielrafael)) | ||
- Matei Adriel ([@Mateiadrielrafael](https://github.com//Mateiadrielrafael)) | ||
@@ -84,0 +84,0 @@ ## License |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
2672
126457
1
+ Addedtslib@^1.11.1
+ Addedtslib@1.14.1(transitive)