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

@oondemand/oon-core-back

v0.6.6

Published

Core runtime para Centrais Oon: Model Registry, CRUD/RBAC automáticos, módulos opinativos e capabilities nativas.

Readme

OonCore Back - ativação de instâncias

Runtime local desconectado

Com NODE_ENV=development e OON_RUNTIME_MODE=local, o Core escuta apenas em 127.0.0.1, cria uma sessão técnica local de até 30 dias e não consulta a Central de Ativações. Códigos independentes e de uso único atendem navegador e automação/seed. Apps com tenant usam o contexto virtual fixo local:tenant, sem criar um recurso. O estado é ativa_local; nenhuma instância, licença, Deployment ou credencial operacional é criada. Produção, Kubernetes, bind externo e identidade operacional falham no startup.

O scaffold configura esse fluxo. Não use DEV_TOKEN em uma Central nova.

O Core suporta ecosystem.role em central.config.js: root para a Central de Ativações e member (padrão) para demais Centrais. Aplicações member iniciam como nao_ativada, expõem apenas /ativacao/*, /health e /version, e só liberam autenticação/CRUD após ativação.

Variáveis de ambiente

  • CENTRAL_ATIVACAO_URL: URL pública/frontend da Central de Ativações.
  • CENTRAL_ATIVACAO_API_URL: URL canônica do backend da Central de Ativações. Padrão: https://central-ativacao.central.oondemand.online/api/.
  • APP_CODE: código do aplicativo no Ecossistema.
  • APP_ENVIRONMENT: desenvolvimento, homologacao ou producao.
  • PUBLIC_APP_URL: URL pública confirmada da Central.
  • INSTANCE_CREDENTIAL_ENCRYPTION_KEY: chave para AES-256-GCM; obrigatória em produção.
  • AUTH_PROVIDER_TIMEOUT_MS: timeout das chamadas à Central de Ativações.
  • INSTANCE_HEARTBEAT_INTERVAL_MS: intervalo planejado para sincronização/heartbeat.

Compatibilidade temporária: CENTRAL_ATIVACAO_BACKEND_URL e MEUS_APPS_BACKEND_URL continuam aceitas como aliases da URL da API. Nunca aponte a URL da API para o próprio Core.

Catálogo público de perfis

GET /core/role-catalog expõe o contrato mínimo e versionado dos perfis RBAC declarados pelo App. A resposta contém appCode, enabled e código, nome, descrição e indicador administrativo de cada papel; permissões internas não são publicadas. O endpoint é somente leitura, usa cache público de cinco minutos e não concede autorização.

Saúde operacional

  • GET /health/ready: retorna HTTP 200 somente quando o MongoDB está conectado; retorna 503 enquanto o runtime não estiver pronto.
  • GET /health/version: expõe as versões do OonCore e da Central, commit, release, build e ambiente da publicação.

O campo deployment.environment usa exclusivamente APP_ENVIRONMENT. A variável NODE_ENV=production configura a execução técnica do Node dentro da imagem e não representa o ambiente lógico da publicação.

Na imagem de entrega, essas rotas são publicadas pelo Nginx sob /api/health/ready e /api/health/version.

Fluxo

GET /ativacao/status informa estado sem segredos. POST /ativacao/validar-codigo valida sem consumir. POST /ativacao/concluir revalida, chama /ativar, criptografa imediatamente o token da instância, executa hooks declarativos, chama /concluir e marca a instância como ativa. POST /ativacao/tentar-novamente retoma uma ativação já registrada sem exigir novo código.

Campos adicionais podem ser declarados em activation.fields; password e secret são sanitizados na configuração retornada ao frontend. Hooks opcionais: validate, beforeComplete, afterComplete.

Imagem de entrega

O comando de delivery preserva central.app.json em dois pontos da imagem:

  • /src/central.app.json durante o build do frontend declarativo;
  • /app/central.app.json para descoberta pelo backend em runtime.

Centrais legadas sem o manifesto continuam suportadas. O empacotador cria uma pasta intermediária vazia, evitando tornar central.app.json obrigatório para aplicações que ainda usam somente central.config.js.

Rótulos de campos relacionados

Por padrão, campos declarados com fields.ref(...) continuam sendo devolvidos pelo CRUD como ObjectId. Uma model pode optar pela população segura das referências usadas em grids e cards:

defineModel({
  name: "Pedido",
  schema: {
    clienteId: fields.ref("Cliente", { required: true, label: "Cliente" }),
  },
  crud: {
    enabled: true,
    populateRefs: ["clienteId"],
  },
});

Use populateRefs: true para todas as referências da model ou informe uma lista explícita. O CRUD devolve somente _id e campos usuais de identificação, como nome, razão social, descrição, código, e-mail e campos pesquisáveis da model referenciada. Exportações mantêm os identificadores originais.