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

toolkit-extra

v1.2.0

Published

Biblioteca com funções extras ao javascript que eu sempre preciso em meus projetos.

Downloads

143

Readme

toolkit-extra

npm npm

GitHub Issues GitHub Pull Requests Última Atualização GitHub Forks GitHub Stars

codecov

TypeScript Status PRs Welcome

Biblioteca com vários módulos de funções rápidas que não estão disponíveis no JavaScript, mas aposto que você adoraria que estivessem.

:bulb: Motivação

Sabe aqueles arquivos cheios de funções utilitárias que você criou em um projeto e fica copiando e colando sempre para outro projeto? Então, eu me cansei disso e criei minha biblioteca para agrupar essas funções.

Em todos os projetos que trabalhei, em algum momento entrava em uma repetição chata de criar uma pasta utils/GRUPO_DE_FUNÇÕES/index.ts, buscar o arquivo de funções de algum outro projeto, copiar e colar no novo projeto. Com o tempo, comecei a notar muita repetição de código e até pior, código que deveria fazer a mesma coisa, mas em versões diferentes e sem testes.

Então parei um tempo da minha vida para trazer as funções mais utilizadas em meus projetos para cá, adicionar testes e comentá-las.

:mega: AVISO IMPORTANTE

O foco dessa biblioteca sempre foi resolver MEUS problemas de código, então ao criá-la, tentei solucioná-los antes de realmente tentar fornecê-los para uma comunidade. No entanto, ainda é um objetivo tornar essa biblioteca madura o suficiente para esse propósito. Então, você está livre para me aconselhar nessa jornada e contribuir se possível.

:minidisc: Instalação

Para instalar a biblioteca, é necessário que você tenha instalado algum gerenciador de pacotes como npm, yarn ou pnpm.

npm i toolkit-extra 

ou

yarn add toolkit-extra

ou

pnpm i toolkit-extra

:tada: Uso

Por ser uma biblioteca de utilitários, optei por fazer uma biblioteca commonjs para poder fornecer compatibilidade com vários tipos de ambientes e evitar problemas.

Cada função está dentro de um módulo ou grupo de funções. Então, para usar uma função, recomendo que você faça da seguinte forma:

CommonJS

const { omitUndefinedProps } = require("toolkit-extra/object");

omitUndefinedProps({ foo: 1, bar: undefined }); // { foo: 1 }

ESM

import { omitUndefinedProps } from "toolkit-extra/object";

omitUndefinedProps({ foo: 1, bar: undefined }); // { foo: 1 }

Se preferir, pode importar diretamente do módulo principal, porém isso pode resultar em uma importação um pouco mais pesada do que a importação modular.

CommonJS

const { omitUndefinedProps } = require("toolkit-extra");

omitUndefinedProps({ foo: 1, bar: undefined }); // { foo: 1 }

ESM

import { omitUndefinedProps } from "toolkit-extra";

omitUndefinedProps({ foo: 1, bar: undefined }); // { foo: 1 }

:mag_right: Módulos

Estes são os módulos e suas respectivas documentações para cada função.

  • Address
  • Array
    • deleteDuplicate - Função que remove elementos duplicados do array e retorna um novo array só com itens únicos.
    • generateArray - Função que cria um array de tamanho n já preenchido com valores.
    • getMinMax - Função que retorna o valor mínimo e máximo de um array de números.
    • repeatArray - Função que pega um array inicial e repete seu conteúdo em um novo array n vezes.
    • isArrayTyped - Função que valida se todos os elementos de um array são de um determinado tipo.
    • moveElement - Função que move um elemento para outra posição dentro de um array.
  • Math
    • average - Função para calcular a média de valores em um array de números.
    • mode - Função que diz qual é a moda inclusa em um array de números. (Números que mais se repetem).
    • verifyPAPresence - Função que verifica se um número está presente em uma Progressão Aritmética (PA).
  • Object
    • isClassInstance - Verifica se o valor passado é uma instância de classe.
    • omitProp - Omite propriedades de um objeto.
    • omitUndefinedProps - Remove propriedades undefined de um objeto em todos os níveis de aninhamento.
  • Random
    • getRandomNumber - Função que gera um número aleatório entre dois números.
  • Regex
  • String
  • Timeout
    • sleep - Função parecida com a função timeout do javascript, porém, retorna uma promise.
    • timeoutAsync - Função timeout para aguardar um tempo determinado porém, é assíncrona.
  • uuid
    • v4 - Função que gera um UUID v4.

:handshake: Contribuição

Para contribuir com a biblioteca é simples. Siga esses passos:

  1. Clone o repositório.
  2. Crie uma branch a partir de develop no padrão git-flow.
  3. Implemente suas ideias, soluções, correções, etc.
  4. Abra um PR.

:memo: Licença

Este projeto está sob licença MIT. Veja o arquivo LICENSE.md para mais detalhes.

Feito com :heart: por Leonardo Petta do Nascimento