@antfu/utils
Advanced tools
Comparing version 0.0.4 to 0.0.5
@@ -8,4 +8,12 @@ /** | ||
*/ | ||
declare type Nullable<T> = T | null | undefined; | ||
declare type Nilable<T> = T | null | undefined; | ||
/** | ||
* Null or whatever | ||
*/ | ||
declare type Nullable<T> = T | null; | ||
/** | ||
* Undefined or whatever | ||
*/ | ||
declare type Undefineable<T> = T | undefined; | ||
/** | ||
* Array, or not yet | ||
@@ -22,2 +30,10 @@ */ | ||
declare type ElementOf<T> = T extends (infer E)[] ? E : never; | ||
/** | ||
* Defines an intersection type of all union items. | ||
* | ||
* @param U Union of any types that will be intersected. | ||
* @returns U items intersected | ||
* @see https://stackoverflow.com/a/50375286/9259330 | ||
*/ | ||
declare type UnionToIntersection<U> = (U extends unknown ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never; | ||
@@ -50,6 +66,18 @@ /** | ||
* | ||
* @example array.filter(isNotNull) | ||
* @example array.filter(notNullish) | ||
*/ | ||
declare function isNotNull<T>(v: Nullable<T>): v is T; | ||
declare function notNullish<T>(v: T | null | undefined): v is NonNullable<T>; | ||
/** | ||
* Type guard to filter out null values | ||
* | ||
* @example array.filter(noNull) | ||
*/ | ||
declare function noNull<T>(v: T | null): v is Exclude<T, null>; | ||
/** | ||
* Type guard to filter out null-ish values | ||
* | ||
* @example array.filter(notUndefined) | ||
*/ | ||
declare function notUndefined<T>(v: T): v is Exclude<T, undefined>; | ||
/** | ||
* Type guard to filter out falsy values | ||
@@ -59,3 +87,3 @@ * | ||
*/ | ||
declare function isTruthy<T>(v: Nullable<T>): v is T; | ||
declare function isTruthy<T>(v: T): v is NonNullable<T>; | ||
@@ -115,3 +143,18 @@ declare const isBrowser: boolean; | ||
declare function objectMap<K extends string, V, NK = K, NV = V>(obj: Record<K, V>, fn: (key: K, value: V) => [NK, NV] | undefined): Record<K, V>; | ||
/** | ||
* Type guard for any key, `k`. | ||
* Marks `k` as a key of `T` if `k` is in `obj`. | ||
* @param obj object to query for key `k` | ||
* @param k key to check existence in `obj` | ||
*/ | ||
declare function isKeyOf<T extends object>(obj: T, k: keyof any): k is keyof T; | ||
/** | ||
* Strict typed `Object.keys` | ||
*/ | ||
declare function objectKeys<T extends object>(obj: T): (keyof T)[]; | ||
/** | ||
* Strict typed `Object.entries` | ||
*/ | ||
declare function objectEntries<T extends object>(obj: T): [keyof T, T[keyof T]][]; | ||
export { Arrayable, Awaitable, ElementOf, Fn, Nullable, assert, batchInvoke, clamp, flattenArrayable, invoke, isBoolean, isBrowser, isDef, isFunction, isNotNull, isNumber, isObject, isString, isTruthy, isWindow, mergeArrayable, noop, objectMap, partition, slash, sum, timestamp, toArray, toString }; | ||
export { Arrayable, Awaitable, ElementOf, Fn, Nilable, Nullable, Undefineable, UnionToIntersection, assert, batchInvoke, clamp, flattenArrayable, invoke, isBoolean, isBrowser, isDef, isFunction, isKeyOf, isNumber, isObject, isString, isTruthy, isWindow, mergeArrayable, noNull, noop, notNullish, notUndefined, objectEntries, objectKeys, objectMap, partition, slash, sum, timestamp, toArray, toString }; |
@@ -31,5 +31,11 @@ "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/array.ts | ||
// src/guards.ts | ||
function isNotNull(v) { | ||
function notNullish(v) { | ||
return v != null; | ||
} | ||
function noNull(v) { | ||
return v !== null; | ||
} | ||
function notUndefined(v) { | ||
return v !== void 0; | ||
} | ||
function isTruthy(v) { | ||
@@ -75,4 +81,13 @@ return Boolean(v); | ||
function objectMap(obj, fn) { | ||
return Object.fromEntries(Object.entries(obj).map(([k, v]) => fn(k, v)).filter(isNotNull)); | ||
return Object.fromEntries(Object.entries(obj).map(([k, v]) => fn(k, v)).filter(notNullish)); | ||
} | ||
function isKeyOf(obj, k) { | ||
return k in obj; | ||
} | ||
function objectKeys(obj) { | ||
return Object.keys(obj); | ||
} | ||
function objectEntries(obj) { | ||
return Object.entries(obj); | ||
} | ||
@@ -103,2 +118,7 @@ | ||
exports.assert = assert; exports.batchInvoke = batchInvoke; exports.clamp = clamp; exports.flattenArrayable = flattenArrayable; exports.invoke = invoke; exports.isBoolean = isBoolean; exports.isBrowser = isBrowser; exports.isDef = isDef; exports.isFunction = isFunction; exports.isNotNull = isNotNull; exports.isNumber = isNumber; exports.isObject = isObject; exports.isString = isString; exports.isTruthy = isTruthy; exports.isWindow = isWindow; exports.mergeArrayable = mergeArrayable; exports.noop = noop; exports.objectMap = objectMap; exports.partition = partition; exports.slash = slash; exports.sum = sum; exports.timestamp = timestamp; exports.toArray = toArray; exports.toString = toString2; | ||
exports.assert = assert; exports.batchInvoke = batchInvoke; exports.clamp = clamp; exports.flattenArrayable = flattenArrayable; exports.invoke = invoke; exports.isBoolean = isBoolean; exports.isBrowser = isBrowser; exports.isDef = isDef; exports.isFunction = isFunction; exports.isKeyOf = isKeyOf; exports.isNumber = isNumber; exports.isObject = isObject; exports.isString = isString; exports.isTruthy = isTruthy; exports.isWindow = isWindow; exports.mergeArrayable = mergeArrayable; exports.noNull = noNull; exports.noop = noop; exports.notNullish = notNullish; exports.notUndefined = notUndefined; exports.objectEntries = objectEntries; exports.objectKeys = objectKeys; exports.objectMap = objectMap; exports.partition = partition; exports.slash = slash; exports.sum = sum; exports.timestamp = timestamp; exports.toArray = toArray; exports.toString = toString2; |
{ | ||
"name": "@antfu/utils", | ||
"version": "0.0.4", | ||
"version": "0.0.5", | ||
"description": "Opinionated collection of common JavaScript / TypeScript utils by @antfu", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
Sorry, the diff of this file is not supported yet
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
13313
345