npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@zakyyudha/habibi

v1.0.3

Published

A package to encrypt and decrypt PII fields with love and care

Downloads

541

Readme

Habibi

Habibi is a TypeScript library for encrypting and decrypting Personally Identifiable Information (PII) fields with customizable functions. It allows you to define your own encryption, decryption, and hashing methods, as well as the fields that should be treated as PII.

npm version GitHub issues GitHub stars License

Installation

You can install the package via npm:

npm install @zakyyudha/habibi

Usage

First, import the Habibi class and the necessary types:

import { Habibi, Config } from 'habibi';

Example

Here's an example of how to use the Habibi class:

const config: Config = {
    piiFields: ['nik', 'phoneNumber', 'email'],
    encryptFn: (str: string) => 'ENCRYPTED_' + str,
    decryptFn: (str: string) => str.replace('ENCRYPTED_', ''),
    hashFn: (str: string) => 'HASHED_' + str,
    logger: (err: Error | any, key: string) => {
        console.log(err, 'Error while processing fields ' + key);
    },
    stopOnError: false
};

const habibi = new Habibi(config);

const data = {
    nik: '123456',
    phoneNumber: '555-555-5555',
    email: '[email protected]',
};

const encryptedData = habibi.encryptPIIFields(data);
console.log(encryptedData);

const decryptedData = habibi.decryptPIIFields(encryptedData);
console.log(decryptedData);

API

The Habibi class allows you to create an instance with customizable PII fields, encryption, decryption, and hashing functions.

Constructor

constructor(config: Config = {})
  • config (optional): An object containing:
    • piiFields (string[]): An array of field names to be treated as PII.
    • encryptFn (EncryptDecryptFunction): A function to encrypt PII fields.
    • decryptFn (EncryptDecryptFunction): A function to decrypt PII fields.
    • hashFn (EncryptDecryptFunction): A function to hash PII fields.
    • logger (Logger): A function to log errors.
    • stopOnError (boolean): A flag to stop processing on error.

Methods

encryptPIIFields(obj: any): any

Encrypts the PII fields in the given object.

  • obj: The object containing PII fields to be encrypted.
  • Returns: A new object with encrypted PII fields.
decryptPIIFields(obj: any): any

Decrypts the PII fields in the given object.

  • obj: The object containing PII fields to be decrypted.
  • Returns: A new object with decrypted PII fields.

Types

A type alias for a function that takes a string and returns a string.

type EncryptDecryptFunction = (str: string) => string;

An interface for the configuration object.

interface Config {
    piiFields?: string[];
    encryptFn?: EncryptDecryptFunction;
    decryptFn?: EncryptDecryptFunction;
    hashFn?: EncryptDecryptFunction;
    logger?: Logger;
    stopOnError?: boolean;
}

Configuration

The Habibi class can be configured with the following options:

  • piiFields: An array of strings representing the fields that need to be encrypted or decrypted. Defaults to ['nik', 'phoneNumber', 'email'].
  • encryptFn: A function that takes a string and returns its encrypted version. Defaults to str => 'ENCRYPTED_' + str.
  • decryptFn: A function that takes a string and returns its decrypted version. Defaults to str => str.replace('ENCRYPTED_', '').
  • hashFn: A function that takes a string and returns its hashed version. Defaults to str => 'HASHED_' + str.
  • logger: A function that logs errors encountered during processing. Defaults to console.log.
  • stopOnError: A boolean that determines whether to stop processing when an error is encountered. Defaults to false