hotypes 0.6.2 → 0.6.3

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/README.md CHANGED
@@ -41,6 +41,7 @@ yarn add hotypes
41
41
  - MixinAll
42
42
  - PickNonNever
43
43
  - Pop
44
+ - PropByPath
44
45
  - OmitPropsByType
45
46
  - OmitPropsByExactType
46
47
  - Replace
package/lib/index.d.ts CHANGED
@@ -26,6 +26,7 @@ export * from './omit-props-by-exact-type';
26
26
  export * from './optional-keys';
27
27
  export * from './pick-non-never';
28
28
  export * from './pop';
29
+ export * from './prop-by-path';
29
30
  export * from './replace';
30
31
  export * from './replace-props-by-key';
31
32
  export * from './replace-props-by-type';
package/lib/index.js CHANGED
@@ -42,6 +42,7 @@ __exportStar(require("./omit-props-by-exact-type"), exports);
42
42
  __exportStar(require("./optional-keys"), exports);
43
43
  __exportStar(require("./pick-non-never"), exports);
44
44
  __exportStar(require("./pop"), exports);
45
+ __exportStar(require("./prop-by-path"), exports);
45
46
  __exportStar(require("./replace"), exports);
46
47
  __exportStar(require("./replace-props-by-key"), exports);
47
48
  __exportStar(require("./replace-props-by-type"), exports);
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwB;AACxB,iDAA8B;AAC9B,4CAAyB;AACzB,kDAA+B;AAC/B,yCAAsB;AACtB,iDAA8B;AAC9B,uDAAoC;AACpC,yDAAsC;AACtC,+DAA4C;AAC5C,yCAAsB;AACtB,kDAA+B;AAC/B,qDAAkC;AAClC,sDAAmC;AACnC,4DAAyC;AACzC,4EAAyD;AACzD,mEAAgD;AAChD,iEAA8C;AAC9C,iEAA8C;AAC9C,8DAA2C;AAC3C,0CAAuB;AACvB,8CAA2B;AAC3B,sDAAmC;AACnC,kDAA+B;AAC/B,uDAAoC;AACpC,6DAA0C;AAC1C,kDAA+B;AAC/B,mDAAgC;AAChC,wCAAqB;AACrB,4CAAyB;AACzB,yDAAsC;AACtC,0DAAuC;AACvC,yCAAsB;AACtB,iDAA8B;AAC9B,iDAA8B;AAC9B,+DAA4C;AAC5C,mDAAgC;AAChC,wDAAqC;AACrC,sDAAmC;AACnC,4DAAyC;AACzC,0DAAuC;AACvC,qDAAkC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwB;AACxB,iDAA8B;AAC9B,4CAAyB;AACzB,kDAA+B;AAC/B,yCAAsB;AACtB,iDAA8B;AAC9B,uDAAoC;AACpC,yDAAsC;AACtC,+DAA4C;AAC5C,yCAAsB;AACtB,kDAA+B;AAC/B,qDAAkC;AAClC,sDAAmC;AACnC,4DAAyC;AACzC,4EAAyD;AACzD,mEAAgD;AAChD,iEAA8C;AAC9C,iEAA8C;AAC9C,8DAA2C;AAC3C,0CAAuB;AACvB,8CAA2B;AAC3B,sDAAmC;AACnC,kDAA+B;AAC/B,uDAAoC;AACpC,6DAA0C;AAC1C,kDAA+B;AAC/B,mDAAgC;AAChC,wCAAqB;AACrB,iDAA8B;AAC9B,4CAAyB;AACzB,yDAAsC;AACtC,0DAAuC;AACvC,yCAAsB;AACtB,iDAA8B;AAC9B,iDAA8B;AAC9B,+DAA4C;AAC5C,mDAAgC;AAChC,wDAAqC;AACrC,sDAAmC;AACnC,4DAAyC;AACzC,0DAAuC;AACvC,qDAAkC"}
@@ -0,0 +1 @@
1
+ export declare type PropByPath<T extends object, Path extends PropertyKey[]> = Path extends [infer First, ...infer Rest] ? (First extends keyof T ? (T[First] extends object ? (Rest extends PropertyKey[] ? PropByPath<T[First], Rest> : never) : T[First]) : undefined) : T;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=prop-by-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prop-by-path.js","sourceRoot":"","sources":["../src/prop-by-path.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hotypes",
3
- "version": "0.6.2",
3
+ "version": "0.6.3",
4
4
  "description": "Higher order types for TypeScript",
5
5
  "keywords": [
6
6
  "higher-order",
package/src/index.ts CHANGED
@@ -26,6 +26,7 @@ export * from './omit-props-by-exact-type'
26
26
  export * from './optional-keys'
27
27
  export * from './pick-non-never'
28
28
  export * from './pop'
29
+ export * from './prop-by-path'
29
30
  export * from './replace'
30
31
  export * from './replace-props-by-key'
31
32
  export * from './replace-props-by-type'
@@ -0,0 +1,16 @@
1
+ export type PropByPath<T extends object, Path extends PropertyKey[]> =
2
+ Path extends [infer First, ...infer Rest]
3
+ ? (
4
+ First extends keyof T
5
+ ? (
6
+ T[First] extends object
7
+ ? (
8
+ Rest extends PropertyKey[]
9
+ ? PropByPath<T[First], Rest>
10
+ : never
11
+ )
12
+ : T[First]
13
+ )
14
+ : undefined
15
+ )
16
+ : T