🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
Book a DemoInstallSign in
Socket

@merry-solutions/typed-empty-fields-filter

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@merry-solutions/typed-empty-fields-filter

This package provides functions for filtering arrays of objects based on empty values for given fields, returning arrays of modified types. Go check readme for more information.

1.0.0
latest
Source
npm
Version published
Weekly downloads
2
Maintainers
1
Weekly downloads
 
Created
Source

typed-empty-fields-filter

What is it?

A simple package for filtering arrays of objects, leaving out items based on null or undefined in given fields, while at the same time providing propert typing for the resulted items.

The package includes 3 functions

  • filterNullFields for filtering fields with null values;
  • filterUndefinedFields for filtering fields with undefined values;
  • filterEmptyFields for filtering both null and undefined values at the same time.

For example

Provided you have an interface with a field or fields which can be undefined

interface Point {
    x?: number;
    y?: number;
}

Given an array of such items, you can filter them out and have the proper typing for a returned items in the new array:

const points: Array<Point> = [{x: 2}, { y: 2 }, {x: 1, y: 1}];

// result array type will be Array<{x?: number; y: number}>
const filteredWithYRequired = filterEmptyFields(points, 'y');

// resulting interface has y as 'number', not 'number | undefined' union as before
filteredWithYRequired[0]?.y;

or filter based on a set of fields:

const points: Array<Point> = [{x: 2}, { y: 2 }, {x: 1, y: 1}];

// result array type will be Array<{x: number; y: number}>
const filteredWithYRequired = filterEmptyFields(points, ['x', 'y']);

Installation

npm i --save @merry-solutions/typed-empty-fields-filter

Import

import {filterEmptyFields, filterNullFields, filterUndefinedFields} from '@merry-solutions/typed-empty-fields-filter';

Usage

Pick one of the three function and pass an array and a filed/list of fields for filtering. Intellisense will help you out.


import {filterEmptyFields, filterNullFields, filterUndefinedFields} from '@merry-solutions/typed-empty-fields-filter';

export interface User {
  id: number;
  surname: string;
  name?: string;
  middleName: string | undefined;
  phone?: string | null;
  hobby?: string | null;
}

const USERS: Array<User> = [
  {
    id: 1,
    surname: 'Tann',
    middleName: 'XtraCare Wet Wipes',
    phone: '750-476-2058',
    hobby: 'transform one-to-one vortals',
  },
  {
    id: 2,
    name: 'Emylee',
    surname: 'Langelaan',
    middleName: undefined,
    phone: null,
  },
  {
    id: 3,
    name: 'Silvanus',
    surname: 'Bewsy',
    middleName: 'daytime cold and flu',
    phone: '999-831-0154',
    hobby: null,
  },
  {
    id: 4,
    name: 'Leroi',
    surname: 'Dragge',
    middleName: 'Monistat 7 Combination Pack',
    phone: null,
    hobby: 'evolve interactive vortals',
  },
];

// only users with non-null and non-undefined hobbies, hobby is 'string'
const u1 = filterEmptyFields(USERS, 'hobby');

// only users with non-null and non-undefined name, middleName, phone, hobby
const u2 = filterEmptyFields(USERS, ['name', 'middleName', 'phone', 'hobby']);


// only users with non-null phone, phone is 'undefined | string'
const u3 = filterNullFields(USERS, 'phone');

// same as above, array example
const u4 = filterNullFields(USERS, ['phone']);

// only users with non-undefined phone, phone is 'null | string'
const u5 = filterUndefinedFields(USERS, 'phone');

// same as above, array example
const u6 = filterUndefinedFields(USERS, ['phone']);

That's all.

Keywords

filter

FAQs

Package last updated on 07 Nov 2022

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