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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@uappi/public-sdk

v1.2.10

Published

Pacotes públicos para desenvolvimento do ecossistema Uappi

Readme

@uappi/public-sdk

Pacotes públicos (composables, tipos e componentes Vue 3) para desenvolvimento do ecossistema Uappi. Publicado como .ts/.vue cru — sem etapa de build — então os erros de compilação (imports de tipo, verbatimModuleSyntax, etc.) só aparecem quando o projeto consumidor faz o type-check. Por isso este repositório valida tudo antes de deixar chegar lá.

Setup

npm install

Isso também instala os git hooks do Husky via prepare.

Scripts

| Script | O que faz | |---|---| | npm run lint | ESLint (eslint.config.mjs), com a regra @typescript-eslint/consistent-type-imports — pega imports de tipo sem type, que é a causa mais comum de quebrar o build de projetos consumidores com verbatimModuleSyntax habilitado. | | npm run type-check | tsc --noEmit usando tsconfig.json, que tem verbatimModuleSyntax: true propositalmente — reproduz localmente o mesmo erro que apareceria no projeto consumidor. | | npm run prepush | lint + type-check juntos. Roda automaticamente antes de qualquer git push (hook .husky/pre-push). |

Se npm run prepush falhar, o git push é bloqueado. Corrija os erros reportados antes de tentar de novo.

Fluxo de desenvolvimento

  1. Crie uma branch a partir da main.
  2. Faça as alterações. Rode npm run lint e npm run type-check localmente se quiser adiantar (o pre-push já roda isso antes do push).
  3. Commite usando Conventional Commits — o prefixo do commit decide o bump de versão automático quando a MR for mergeada (veja Versionamento e publicação):
    • fix: ... → patch
    • feat: ... → minor
    • feat!: ... ou corpo do commit com BREAKING CHANGE: ... → major
    • qualquer outro prefixo (chore:, docs:, refactor:, etc.) → patch por padrão
  4. Abra o Merge Request para a main. A pipeline roda o job verify (lint + type-check) automaticamente na MR.
  5. Após aprovado, faça o merge. Isso dispara o job release na main — não é preciso bumpar versão nem publicar manualmente.

Versionamento e publicação (CI/CD)

O .gitlab-ci.yml tem dois jobs:

  • verify — roda em toda pipeline de Merge Request. Executa lint e type-check. É a mesma checagem do hook local, mas visível na revisão do MR.
  • release — roda apenas em push direto na main (ou seja, no merge de uma MR aprovada). Faz, nessa ordem:
    1. Roda lint e type-check de novo (segurança extra, já que o hook local pode ser pulado com --no-verify).
    2. Olha os commits desde a última tag vX.Y.Z e decide o bump (patch/minor/major) pelas regras de Conventional Commits acima.
    3. Atualiza a versão no package.json.
    4. Publica no npm (npm publish --access public).
    5. Só se a publicação funcionar: commita a nova versão e cria a tag vX.Y.Z de volta na main, com [skip ci] no commit para não disparar a pipeline de novo.

Se o job release falhar (ex: token expirado, lint quebrado), nada é publicado e a versão não muda — corrija o problema e re-rode o job manualmente pela pipeline no GitLab, sem precisar de outra MR.

Variáveis de CI/CD necessárias (Settings → CI/CD → Variables no GitLab)

| Variável | Uso | Observação | |---|---|---| | NPM_TOKEN | Autenticação no registry do npm para o npm publish | Token do tipo Granular Access Token, escopo @uappi ou pacote específico, permissão Read and write, com expiração — precisa ser rotacionado periodicamente. | | GITLAB_PUSH_TOKEN | Permite o job release dar git push/criar tag de volta na main protegida | Personal ou Project Access Token, scope write_repository, com role que tenha permissão de push na main (Maintainer, se a proteção da branch exigir). Também expira — se o release começar a falhar com 401, é o primeiro lugar a checar. |

Ambas marcadas como Protected e Masked.

Bootstrap (já feito, só como referência)

O job release precisa de uma tag de referência para calcular "commits desde o último release". A tag inicial foi criada manualmente uma única vez, apontando para a versão já publicada no npm no momento em que o CI foi introduzido:

git tag v1.2.9 origin/main
git push origin v1.2.9

Não repita esse passo — é só histórico de como o processo começou.