@vunojs/shared
v0.0.30
Published
Shared utilities for Vuno packages. A contract between Vuno packages, not an application API.
Maintainers
Readme
@vunojs/shared
Utilidades que comparten los paquetes del framework. Es la base del grafo de dependencias y no contiene reglas de negocio de una aplicación.
Es un contrato entre paquetes de Vuno, no una API para aplicaciones. Llega como dependencia transitiva de @vunojs/core, @vunojs/auth, @vunojs/node, @vunojs/vite y @vunojs/ui, y solo exporta lo que esos paquetes usan: una utilidad que ningún paquete de Vuno necesita sale del paquete. Se publica con la misma versión que el resto, pero sus exportaciones pueden cambiar o desaparecer en cualquier versión sin seguir semver. Una aplicación que lo importe directamente lo declara en su package.json y acepta ese riesgo.
No lo confundas con shared/ en la raíz de una aplicación Vuno: esa carpeta es código propio del consumidor y puede importarse mediante #shared/*; este es un paquete del monorepo.
Entradas
| Import | Entorno y responsabilidad |
| ---------------------------- | ------------------------------------------------------------------------------ |
| @vunojs/shared | Cookies, escapado de HTML y orden de strings. |
| @vunojs/shared/object | Operaciones tipadas y superficiales sobre objetos. |
| @vunojs/shared/file-system | Comprobaciones de archivos exclusivas de Node.js. |
| @vunojs/shared/pending | Contador de operaciones pendientes que alimenta el indicador de carga de core. |
No uses imports profundos desde src o dist: lo que no sale de estas cuatro entradas no forma parte del contrato.
Entrada principal
escapeHtmlescapa texto para insertarlo en HTML generado por el framework.compareCodeUnitsordena strings de forma determinista por unidades de código UTF-16.decodeCookieValuedecodifica valores de cookie sin convertir percent-encoding inválido en una excepción.parseCookieHeaderconvierte un headerCookieodocument.cookieen un diccionario plano. Las aplicaciones lo reciben reexportado desde@vunojs/auth.
import { escapeHtml, parseCookieHeader } from '@vunojs/shared'
const cookies = parseCookieHeader('theme=dark; locale=es')
const safeTitle = escapeHtml('<Vuno>')parseCookieHeader analiza el header; no verifica firmas ni permisos. escapeHtml sirve para texto insertado en HTML, no para construir URLs, SQL o JavaScript.
Objetos
@vunojs/shared/object expone objectKeys, objectEntries, fromEntries, hasOwn, isRecord, isPlainObject, pick, omit, compactObject y mapValues. Siguen la semántica de las funciones nativas equivalentes y conservan los tipos del objeto:
import { objectKeys, pick } from '@vunojs/shared/object'
const config = { host: 'localhost', port: 3000 }
const keys = objectKeys(config) // ('host' | 'port')[]
const onlyPort = pick(config, ['port']) // { port: number }isRecord acepta cualquier objeto no nulo que no sea un array; isPlainObject exige además un prototipo Object.prototype o null.
Filesystem
El subpath @vunojs/shared/file-system contiene utilidades exclusivas de Node.js:
isFileindica si una ruta apunta a un archivo, devuelvefalsecuando no existe y conserva los demás errores del filesystem.
No importes @vunojs/shared/file-system desde código de navegador.