Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

andrews-utils

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

andrews-utils

A collection of random useful utility functions that you may not find in lodash. These utility functions are emitted as ES6 modules so that they are tree-shakable.

latest
npmnpm
Version
1.1.1
Version published
Maintainers
1
Created
Source

Andrew's Utils

A collection of random useful utility functions that you may not find in lodash. These utility functions are emitted as ES6 modules so that they are tree-shakable.

Type Guards

This utility library provides a series of generic TypeScript type guards for validating your data.

hasOwnProperties

This type guard validates that the provided object contains the provided property names.

hasOwnProperties Interface

function hasOwnProperties<
  X extends Record<any, unknown>,
  Y extends PropertyKey,
  A extends Y[]
>(obj: X, props: A) => obj is X & Record<Y, unknown>;

hasOwnProperties Example

import { isObject, hasOwnProperties } from 'andrews-utils';

const val: unknown = {
  foo: 'bar',
  hello: 'world',
};

if (isObject(val) && hasOwnProperties(val, ['foo', 'hello'])) {
  // -> do something with obj.foo or obj.hello
}

hasOwnProperty

This type guard validates that the provided object contains the provided property.

hasOwnProperty Interface

function hasOwnProperty<X extends Record<any, unknown>, Y extends PropertyKey>(
  obj: X,
  prop: Y
) => obj is X & Record<Y, unknown>;

hasOwnProperty Example

import { isObject, hasOwnProperty } from 'andrews-utils';

const val: unknown = {
  foo: 'bar',
  hello: 'world',
};

if (isObject(val) && hasOwnProperty(val, 'foo')) {
}

isArray

This type guard validates that the provided value is an array.

isArray Interface

function isArray(value: unknown) => value is unknown[];

isArray Example

import { isArray } from 'andrews-utils';

const arr: unknown = ['foo', 'bar'];

if (isArray(arr)) {
  arr.forEach(val => {});
}

isNumber

This type guard validates that the provided value is a number.

isNumber Interface

function isNumber(value: unknown) => value is number;

isNumber Example

import { isNumber } from 'andrews-utils';

const val: unknown = 123;

if (isNumber(val)) {
  const answer = val * 2;
}

isObject

This type guard validates that the provided value is an object.

isObject Interface

function isObject(value: unknown) => value is Record<string, unknown>;

isObject Example

import { isObject } from 'andrews-utils';

const obj: unknown = {
  foo: 'bar',
};

if (isObject(val)) {
  // Do something with object with unknown properties.
  // Usually you would combine this with the hasOwnProperties type guard.
}

isSet

This type guard validates that the provided value is not undefined or null.

isSet Interface

function isSet<T>(value?: unknown) => value is NonNullable<T>;

isSet Example

import { isSet } from 'andrews-utils';

const val: unknown = 123;

if (isSet<number>(val)) {
  const answer = val * 2;
}

isString

This type guard validates that the provided value is a string.

isString Interface

function isString(value: unknown) => value is string;

isString Example

import { isString } from 'andrews-utils';

const val: unknown = 'foo';

if (isString(val)) {
  const chars = val.split('');
}

safeJsonFetch

Executes a standard fetch but returns the JSON response as unknown to force you to validate it.

safeJsonFetch Interface

async function safeJsonFetch(
  input: RequestInfo | URL,
  init?: RequestInit | undefined
) => Promise<unknown>;

safeJsonFetch Example

import { safeJsonFetch } from 'andrews-utils';

safeJsonFetch('https://example.com/user/1').then(json => {
  const answer = json * 2;
  // => TSError: Object is of type 'unknown'.ts(2571)
  // This error is expected because json should be of type `unknown`.
});

FAQs

Package last updated on 17 Oct 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts