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

perkakas

v0.1.16

Published

Tooling or utility for your works

Downloads

135

Readme

npm downloads License

Usage

Run one of the following command inside your project directory to install the package:

$ npm i perkakas@latest
or
$ yarn add perkakas@latest
or
$ pnpm add perkakas@latest

This package is support for threeshaking imports. Just import separate a function it will looks like

import * as perkakas from "perkakas"; // 7.5kb
// into

//define specific files that want to import
import { createLayout } from "perkakas"; // 609b

or import to specific files

import { createLayout } from "perkakas/breakpoint";

Usage Reference

Responsive Breakpoint Utility Functions

Resolve from Tailwind CSS configuration

// /hooks/tailwind.ts

import { createLayout } from "perkakas";
import resolveConfig from "tailwindcss/resolveConfig";

import tailwindConfig from "path/to/tailwind.config.js";

const config = resolveConfig(tailwindConfig);

export const { useBreakpoint } = createLayout(config.theme.screens);

Extract screens values

Another option is to extract all screens values into a separate file:

// tailwind.screens.js or other name to separate breakpoint values
const screens = {
  sm: "640px",
  md: "768px",
  lg: "1024px",
  // ...
};

To keep the same values, require inside tailwind.config.js:

// tailwind.config.js
module.exports = {
  theme: {
    screens: require("path/to/tailwind.screens.js"),
  },
  // ...
};

Then pass the extracted screens to the create function:

// /hooks/tailwind.ts

import { createLayout } from "perkakas";

import screens from "path/to/tailwind.screens.js";

export const { useBreakpoint } = createLayout(screens);

Without Tailwind CSS

While this package was built in mind for Tailwind CSS usage, it can be used without it since there is no dependency at all. You can pass any breakpoint values:

// /hooks/breakpoint.ts

import { createLayout } from "perkakas";

export const { useBreakpoint, useBreakpointEffect, useBreakpointValue } =
  createLayout({
    sm: "640px",
    md: "768px",
    // ...
  });

Available hooks

useBreakpoint()

Use breakpoint value from given breakpoint token

import { useBreakpoint } from "./hooks/breakpoint";

function App() {
  const isDesktop = useBreakpoint("md");

  return <div>Current view: {isDesktop ? "Desktop" : "Mobile"}</div>;
}

useBreakpointEffect()

Use given breakpoint value to run an effect

import { useBreakpointEffect } from "./hooks/breakpoint";

function App() {
  useBreakpointEffect("md", match => {
    if (match) {
      console.log("Desktop view");
    }
  });
}

useBreakpointValue()

Resolve value from given breakpoint value

import { useBreakpointValue } from "./hooks/breakpoint";

function App() {
  const value = useBreakpointValue("md", "Desktop", "Mobile");

  return <div>Current view: {value}</div>;
}

Currency and Number Formatting Utility Functions

This repository contains a set of utility functions for formatting numbers and currencies in JavaScript. These functions are designed to help you format numeric values into a more human-readable format for various use cases.

Table of Contents

Functions

formatRupiah(num, prefix, symbol)

Formats a numeric value as an Indonesian Rupiah (IDR) currency string.

  • num (string): The numeric value to format as IDR.

  • prefix (optional, string): The currency prefix, which defaults to "Rp.".

  • symbol (optional, string): The symbol used for thousands separator, which defaults to ",".

Returns: The formatted IDR currency string.

formatUSD(number)

Formats a number into United States Dollar (USD) currency format.

  • number (number): The number to be formatted as USD currency.

Returns: The formatted number in USD currency format.

formatK({ value })

Formats a number into a simplified K format.

  • value (number): The number to be formatted.

Returns: The formatted number in a simplified K format.

countableNumber(number)

Converts a number to a text representation in Indonesian.

  • number (number): The number to convert.

Returns: Text representation in Indonesian of the given number.

formatPriceDigit(value)

Formats a numeric value as formatted Digit.

  • value (number): value about price.

Returns: Format a numeric value as a human-readable price digit. If the value is less than 1000, it remains unchanged. If the value is between 1000 and 999999, it is formatted as 'k' (thousands). If the value is between 1 million and 999999999, it is formatted as 'M' (millions). If the value is one billion or more, it is formatted as 'B' (billions).

formatCryptoValue(value, prefixed)

Formats a numeric value as an Crypto price.

  • value (number): value about price.

  • prefixed (number): nominal digits for the result.

Returns: The formatted Crpyto currency price string.

Examples

Here are some examples of how to use these functions:

import { formatRupiah, formatUSD, formatK, countableNumber } from "perkakas";

const rupiahValue = formatRupiah("1000000");
console.log(rupiahValue); // Output: "Rp. 1,000,000"

const usdValue = formatUSD(1000000);
console.log(usdValue); // Output: "$1,000,000.00" (or the equivalent in your locale)

const kValue = formatK({ value: 1500 });
console.log(kValue); // Output: "1.5K"

const indonesianText = countableNumber(1234567);
console.log(indonesianText);
// Output: "Satu Juta Dua Ratus Tiga Puluh Empat Ribu Lima Ratus Enam Puluh Tujuh"

Date Formatting Utility Functions

This repository contains a set of utility functions for formatting date strings into various date formats. These functions help you easily format date strings in different styles, such as USA date format, EST date format, short year format, and more.

Table of Contents

Functions

getUSADateFormat(dateString)

Formats a date string in the USA date format (short month, day, and year).

  • dateString (string): The input date string.

Returns: The formatted USA date (e.g., "Aug 25, 23") or "-" if the input is not a valid date.

getUSADateWithLongMonthFormat(date)

Formats a date string in the USA date format with a long month (long month, day, and year).

  • date (string): The input date string.

Returns: The formatted USA date with a long month (e.g., "August 25, 2023") or "-" if the input is not a valid date.

getEstDateFormat(dateString)

Formats a date string in the EST date format (short month, day, year, hour, minute).

  • dateString (string): The input date string.

Returns: The formatted EST date (e.g., "Aug 25, 2023 12:34 EST") or "-" if the input is not a valid date.

getDateWithSortYearFormat(dateString)

Formats a date string with a short year in the format (short month, day, 2-digit year).

  • dateString (string): The input date string.

Returns: The formatted date with a short year (e.g., "Aug 25, 23") or "-" if the input is not a valid date.

getUSASortDateFormat(dateString)

Formats a date string in the USA sort date format (2-digit month, 2-digit day, 2-digit year).

  • dateString (string): The input date string.

Returns: The formatted USA sort date (e.g., "08/25/23") or "-" if the input is not a valid date.

getEnGbDateFormat(dateString)

Formats a date string in the UK date format (long month, day, and year).

  • dateString (string): The input date string.

Returns: The formatted UK date (e.g., "25 August 2023") or "-" if the input is not a valid date.

Examples

Here are some examples of how to use these functions:

import {
  getUSADateFormat,
  getUSADateWithLongMonthFormat,
  getEstDateFormat,
  getDateWithSortYearFormat,
  getUSASortDateFormat,
  getEnGbDateFormat,
} from "perkakas";

const usaShortDate = getUSADateFormat("2023-08-25");
console.log(usaShortDate); // Output: "Aug 25, 23" or "-"

const usaLongDate = getUSADateWithLongMonthFormat("2023-08-25");
console.log(usaLongDate); // Output: "August 25, 2023" or "-"

const estDate = getEstDateFormat("2023-08-25T12:34:56");
console.log(estDate); // Output: "Aug 25, 2023 12:34 EST" or "-"

const shortYearDate = getDateWithSortYearFormat("2023-08-25");
console.log(shortYearDate); // Output: "Aug 25, 23" or "-"

const usaSortDate = getUSASortDateFormat("2023-08-25");
console.log(usaSortDate); // Output: "08/25/23" or "-"

const ukDate = getEnGbDateFormat("2023-08-25");
console.log(ukDate); // Output: "25 August 2023" or "-"

String Manipulation Utility Functions

This repository contains a set of utility functions for manipulating strings. These functions help you replace special characters in a string, check if a string contains only special characters, and convert a string to title case while preserving special characters.

Table of Contents

Functions

replaceSpecialChar(str, char)

Replaces special characters in a string with the specified character.

  • str (string): The input string.

  • char (string): The character to replace special characters with.

Returns: The modified string with special characters replaced.

isSpecialChar(str)

Checks if a given string contains only special characters.

  • str (string): The input string to check.

Returns: true if the string consists only of special characters, otherwise false.

titleCase(str)

Converts a string to title case while preserving special characters.

  • str (string): The input string to convert to title case.

Returns: The string converted to title case.

Examples

Here are some examples of how to use these functions:

import { replaceSpecialChar, isSpecialChar, titleCase } from "perkakas";

const input = "this_is_a_test_string";
const char = "-";
const replacedString = replaceSpecialChar(input, char);
console.log(replacedString); // Output: "this-is-a-test-string"

const specialChars = ["!", "@", "#", " "];
specialChars.forEach(char => {
  const isSpecial = isSpecialChar(char);
  console.log(`Is '${char}' special? ${isSpecial}`);
});
// Output: Is '!' special? true
//         Is '@' special? true
//         Is '#' special? true
//         Is ' ' special? true

const titleCased = titleCase(input);
console.log(titleCased); // Output: "This Is A Test String"

Data Conversion Utility Functions

This repository contains utility functions for converting between JSON objects and FormData.

Table of Contents

Functions

convertJsonObjectToFormData(jsonObject)

Converts a JSON object to FormData.

  • jsonObject (object): The JSON object to convert.

Returns: A FormData object with fields populated from the JSON object.

convertFormdataToJsonObject(formData)

Converts FormData to a JSON object.

  • formData (FormData): The FormData object to convert.

Returns: A JSON object where keys are form field names and values are form field values.

Examples

Using convertJsonObjectToFormData

Here's an example of how to use the convertJsonObjectToFormData function:

import { convertJsonObjectToFormData } from "perkakas";

// Create a JSON object
const jsonObject = {
  name: "John Doe",
  email: "[email protected]",
  age: 30,
};

// Convert JSON object to FormData
const formData = convertJsonObjectToFormData(jsonObject);

Using convertFormdataToJsonObject

Here's an example of how to use the convertFormdataToJsonObject function:

import { convertFormdataToJsonObject } from "perkakas";

const formData = new FormData();
formData.append("name", "John Doe");
formData.append("email", "[email protected]");
formData.append("age", "30");

// Convert FormData to a JSON object
const jsonObject = convertFormdataToJsonObject(formData);

Style Utility Function

This repository contains a utility function for truncating text to a specified length and adding ellipsis (...) at the specified position.

Table of Contents

Function

textEllipsis(options)

Truncates a given text to a specified length and adds ellipsis (...) at the specified position.

  • options (object): Options for text truncation.
    • text (string): The input text to be truncated.
    • length (number): The maximum length of the truncated text.
    • position (string, optional): The position to add ellipsis. Can be "start" (default), "middle," or "end."

Returns: The truncated text with ellipsis.

Examples

Here are some examples of how to use the textEllipsis function:

import { textEllipsis } from "perkakas";

// Truncate text at the end (default)
const truncatedTextEnd = textEllipsis({
  text: "This is a long text.",
  length: 10,
});
console.log(truncatedTextEnd); // Output: "This is a..."

// Truncate text in the middle
const truncatedTextMiddle = textEllipsis({
  text: "This is a long text.",
  length: 10,
  position: "middle",
});
console.log(truncatedTextMiddle); // Output: "This is...text."

// Truncate text at the start
const truncatedTextStart = textEllipsis({
  text: "This is a long text.",
  length: 10,
  position: "start",
});
console.log(truncatedTextStart); // Output: "...a long text."

Common Utility Function

Maybe some common utility is avaliable in this package like copyToClipBoard, compose, and listCountryCode

Usage copyToClipBoard

import { copyToClipBoard } from "perkakas";

// Basic usage: Copy text to the clipboard
copyToClipBoard({
  text: "Copy me!",
});

// Advanced usage: Copy text and perform an action after copying
copyToClipboard({
  text: "Hello, Clipboard!",
  action: () => {
    alert("Text copied to clipboard!");
  },
});

Parameters

  • options (object):
    • text (string, required): The text you want to copy to the clipboard.
    • action (function, optional): An optional callback function to execute after the text is successfully copied to the clipboard.

Error Handling

If an error occurs during the copying process, the function will catch the error and log it to the console.

Usage compose

The compose function allows you to compose multiple functions together and apply them in reverse order to a given value.

import { compose } from "perkakas";

// Define example functions
const addTwo = x => x + 2;
const multiplyByThree = x => x * 3;

// Compose the functions
const composed = compose(multiplyByThree, addTwo);

// Apply the composed function
const result = composed(5);

console.log(result); // Should log 17

Parameters

  • fns (TComposedFunc): An array of functions that will be composed together.

countryCode

This array of object returning a value An array of country code objects, each containing code, name, and dial_code properties.

License

MIT