Socket
Socket
Sign inDemoInstall

@thi.ng/api

Package Overview
Dependencies
Maintainers
1
Versions
186
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@thi.ng/api - npm Package Compare versions

Comparing version 6.8.3 to 6.9.0

api/path.d.ts

27

api/deref.d.ts

@@ -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

44

api/keyval.d.ts
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

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