Socket
Socket
Sign inDemoInstall

hotypes

Package Overview
Dependencies
Maintainers
1
Versions
34
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

hotypes - npm Package Compare versions

Comparing version 0.4.8 to 0.5.0

lib/keys-by-exact-type.d.ts

4

lib/function-keys.d.ts

@@ -1,2 +0,2 @@

import { KeysExtendType } from './keys-extend-type';
export declare type FunctionKeys<T> = KeysExtendType<T, (...args: any) => any>;
import { KeysByType } from './keys-by-type';
export declare type FunctionKeys<T> = KeysByType<T, (...args: any) => any>;

@@ -5,14 +5,14 @@ export * from './equals';

export * from './keys-by-type';
export * from './keys-by-exact-type';
export * from './keys-exclude-by-type';
export * from './keys-exclude-extend-type';
export * from './keys-extend-type';
export * from './keys-exclude-by-exact-type';
export * from './last';
export * from './map-all-props';
export * from './map-props-by-key';
export * from './map-props-by-type';
export * from './map-props-by-exact-type';
export * from './map-nullable-props-to-optional-nullable';
export * from './map-nullable-props-to-optional';
export * from './map-props';
export * from './map-props-by-key-to-non-optional';
export * from './map-props-by-key';
export * from './map-props-by-type';
export * from './map-props-by-key-to-optional';
export * from './map-props-extend-type';
export * from './map-props-to-optional-by-key';
export * from './map-props-to-non-optional-by-key';
export * from './map-props-to-non-nullable';

@@ -24,11 +24,17 @@ export * from './mixin';

export * from './omit-props-by-type';
export * from './omit-props-extend-type';
export * from './omit-props-by-exact-type';
export * from './optional-keys';
export * from './pick-non-never';
export * from './replace';
export * from './replace-props-by-key';
export * from './replace-props-by-type';
export * from './replace-type';
export * from './return-type-of-constructor';
export * from './tail';
export * from './with-default';
export * from './non-callable';
export * from './return-type-of-constructor';
export * from './unpacked-array';
export * from './unpacked-array-like';
export * from './unpacked-iterable';
export * from './unpacked-async-iterable';
export * from './unpacked-promise-like';
export * from './unpacked-promise';

@@ -21,14 +21,14 @@ "use strict";

__exportStar(require("./keys-by-type"), exports);
__exportStar(require("./keys-by-exact-type"), exports);
__exportStar(require("./keys-exclude-by-type"), exports);
__exportStar(require("./keys-exclude-extend-type"), exports);
__exportStar(require("./keys-extend-type"), exports);
__exportStar(require("./keys-exclude-by-exact-type"), exports);
__exportStar(require("./last"), exports);
__exportStar(require("./map-all-props"), exports);
__exportStar(require("./map-props-by-key"), exports);
__exportStar(require("./map-props-by-type"), exports);
__exportStar(require("./map-props-by-exact-type"), exports);
__exportStar(require("./map-nullable-props-to-optional-nullable"), exports);
__exportStar(require("./map-nullable-props-to-optional"), exports);
__exportStar(require("./map-props"), exports);
__exportStar(require("./map-props-by-key-to-non-optional"), exports);
__exportStar(require("./map-props-by-key"), exports);
__exportStar(require("./map-props-by-type"), exports);
__exportStar(require("./map-props-by-key-to-optional"), exports);
__exportStar(require("./map-props-extend-type"), exports);
__exportStar(require("./map-props-to-optional-by-key"), exports);
__exportStar(require("./map-props-to-non-optional-by-key"), exports);
__exportStar(require("./map-props-to-non-nullable"), exports);

@@ -40,12 +40,18 @@ __exportStar(require("./mixin"), exports);

__exportStar(require("./omit-props-by-type"), exports);
__exportStar(require("./omit-props-extend-type"), exports);
__exportStar(require("./omit-props-by-exact-type"), exports);
__exportStar(require("./optional-keys"), exports);
__exportStar(require("./pick-non-never"), exports);
__exportStar(require("./replace"), exports);
__exportStar(require("./replace-props-by-key"), exports);
__exportStar(require("./replace-props-by-type"), exports);
__exportStar(require("./replace-type"), exports);
__exportStar(require("./return-type-of-constructor"), exports);
__exportStar(require("./tail"), exports);
__exportStar(require("./with-default"), exports);
__exportStar(require("./non-callable"), exports);
__exportStar(require("./return-type-of-constructor"), exports);
__exportStar(require("./unpacked-array"), exports);
__exportStar(require("./unpacked-array-like"), exports);
__exportStar(require("./unpacked-iterable"), exports);
__exportStar(require("./unpacked-async-iterable"), exports);
__exportStar(require("./unpacked-promise-like"), exports);
__exportStar(require("./unpacked-promise"), exports);
//# sourceMappingURL=index.js.map

@@ -1,4 +0,3 @@

import { Equals } from './equals';
export declare type KeysByType<T, Type> = {
[Key in keyof T]: Equals<T[Key], Type> extends true ? Key : never;
[Key in keyof T]: T[Key] extends Type ? Key : Type extends T[Key] ? Key : never;
}[keyof T];

@@ -1,4 +0,4 @@

import { MapPropsExtendType } from './map-props-extend-type';
import { MapPropsByType } from './map-props-by-type';
import { NonNullableKeys } from './non-nullable-keys';
import { NullableKeys } from './nullable-keys';
export declare type MapNullablePropsToOptional<T> = Pick<T, NonNullableKeys<T>> & Partial<MapPropsExtendType<Pick<T, NullableKeys<T>>, null, undefined>>;
export declare type MapNullablePropsToOptional<T> = Pick<T, NonNullableKeys<T>> & Partial<MapPropsByType<Pick<T, NullableKeys<T>>, null, undefined>>;

@@ -1,4 +0,3 @@

import { Equals } from './equals';
export declare type MapPropsByType<T, OldType, NewType> = {
[Key in keyof T]: Equals<T[Key], OldType> extends true ? NewType : T[Key];
[Key in keyof T]: T[Key] extends OldType ? Exclude<T[Key], OldType> | NewType : OldType extends T[Key] ? Exclude<T[Key], OldType> | NewType : T[Key];
};

@@ -1,2 +0,2 @@

import { KeysExcludeExtendType } from './keys-exclude-extend-type';
export declare type NonNullableKeys<T> = KeysExcludeExtendType<T, null | undefined>;
import { KeysExcludeByType } from './keys-exclude-by-type';
export declare type NonNullableKeys<T> = KeysExcludeByType<T, null | undefined>;

@@ -1,2 +0,2 @@

import { KeysExtendType } from './keys-extend-type';
export declare type NullableKeys<T> = KeysExtendType<T, undefined | null>;
import { KeysByType } from './keys-by-type';
export declare type NullableKeys<T> = KeysByType<T, undefined | null>;

@@ -1,2 +0,2 @@

import { KeysExtendType } from './keys-extend-type';
export declare type OptionalKeys<T> = Exclude<KeysExtendType<T, undefined>, undefined>;
import { KeysByType } from './keys-by-type';
export declare type OptionalKeys<T> = Exclude<KeysByType<T, undefined>, undefined>;

@@ -1,2 +0,2 @@

import { KeysExcludeByType } from './keys-exclude-by-type';
export declare type PickNonNever<T> = Pick<T, KeysExcludeByType<T, never>>;
import { KeysExcludeByExactType } from './keys-exclude-by-exact-type';
export declare type PickNonNever<T> = Pick<T, KeysExcludeByExactType<T, never>>;

@@ -1,4 +0,4 @@

import { ReplaceType } from './replace-type';
import { Replace } from './replace';
export declare type ReplacePropsByKey<T, Keys, OldType, NewType> = {
[Key in keyof T]: Key extends Keys ? ReplaceType<T[Key], OldType, NewType> : T[Key];
[Key in keyof T]: Key extends Keys ? Replace<T[Key], OldType, NewType> : T[Key];
};

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

import { ReplaceType } from './replace-type';
import { KeysExtendType } from './keys-extend-type';
import { Replace } from './replace';
import { KeysByType } from './keys-by-type';
export declare type ReplacePropsByType<T, OldType, NewType> = {
[Key in keyof T]: Key extends KeysExtendType<T, OldType> ? ReplaceType<T[Key], OldType, NewType> : T[Key];
[Key in keyof T]: Key extends KeysByType<T, OldType> ? Replace<T[Key], OldType, NewType> : T[Key];
};

@@ -1,1 +0,1 @@

export declare type ReturnTypeOfConstructor<T extends new (...args: any) => any> = T extends new (...args: any) => infer R ? R : any;
export declare type ReturnTypeOfConstructor<T extends new (...args: any) => any> = T extends new (...args: any) => infer R ? R : never;
{
"name": "hotypes",
"version": "0.4.8",
"version": "0.5.0",
"description": "Higher order types for TypeScript",

@@ -40,9 +40,9 @@ "keywords": [

"devDependencies": {
"@blackglory/pass": "^1.0.1",
"@commitlint/cli": "^17.0.3",
"@commitlint/config-conventional": "^17.0.3",
"@blackglory/pass": "^1.1.0",
"@commitlint/cli": "^17.1.2",
"@commitlint/config-conventional": "^17.1.0",
"@types/jest": "^27.4.1",
"@typescript-eslint/eslint-plugin": "^5.34.0",
"@typescript-eslint/parser": "^5.34.0",
"eslint": "^8.22.0",
"@typescript-eslint/eslint-plugin": "^5.37.0",
"@typescript-eslint/parser": "^5.37.0",
"eslint": "^8.23.1",
"husky": "^4.3.8",

@@ -49,0 +49,0 @@ "jest": "^27.5.1",

# hotypes
Higher-order types for TypeScript in the real world.
## Motivation
`hotypes` contains these types:
- A new type is a modified type from another type.
- A new type is an operator or a function.
- A new type is an internal type extractor.
> [TypeScripts type system is Turing-complete.](https://github.com/microsoft/TypeScript/issues/14833)
If you don't follow the real-world use cases to create higher-order types,
you will create a lot of useless new macros.
> Some people, when confronted with a type problem, think "I know, I'll use advanced types." Now they have two type problems.
Higher-order types are difficult,
so we should not further complicate or mystify them.
## The difference with [justypes]
hotypes are more like verbs or operators.
[justypes]: https://www.npmjs.com/package/justypes
## Install
```sh

@@ -31,36 +17,41 @@ npm install --save hotypes

## API
It is highly recommended to read test cases to make sure you understand what types exactly do.
- Equals
- Head
- Last
- Tail
- FunctionKeys
- Head
- NonNullableKeys
- NullableKeys
- OptionalKeys
- KeysByType
- KeysByExactType
- KeysExcludeByType
- KeysExcludeExtendType
- KeysExtendType
- Last
- KeysExcludeByExactType
- MapAllProps
- MapPropsByKey
- MapPropsByType
- MapPropsByExactType
- MapNullablePropsToOptionalNullable
- MapNullablePropsToOptional
- MapProps
- MapPropsByKeyToNonOptional
- MapPropsByKeyToOptional
- MapPropsByKey
- MapPropsByType
- MapPropsExtendType
- MapPropsToNonOptionalByKey
- MapPropsToOptionalByKey
- MapPropsToNonNullable
- Mixin
- MixinAll
- NonNullableKeys
- NullableKeys
- PickNonNever
- OmitPropsByType
- OmitPropsExtendType
- OptionalKeys
- PickNonNever
- OmitPropsByExactType
- Replace
- ReplacePropsByKey
- ReplacePropsByType
- ReplaceType
- ReturnTypeOfConstructor
- Tail
- WithDefault
- NonCallable
- ReturnTypeOfConstructor
- UnpackedArray
- UnpackedArrayLike
- UnpackedIterable
- UnpackedAsyncIterable
- UnpackedPromise
- UnpackedPromiseLike
*The `Unpacked` prefix comes from [this official article](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-8.html#type-inference-in-conditional-types)*

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