Files
pulse-libs/projetos/@pulse-libs/core/dist/chunk-BDJP3A46.mjs.map
T
Pulse Agent 0889ee9117 feat(lib): add useLiveStream WS hook + useLiveMetrics + LiveMetricChart
feat(hooks): add useLiveStream generic WebSocket hook
  - supports websocket/sse/polling transports
  - exponential backoff reconnect with jitter
  - circular buffer with configurable size
  - typed filter callback per use case
  - manual disconnect + reconnect + error state

feat(hooks): add useLiveMetrics derived hook
  - sliding time-window cut
  - moving average (configurable window)
  - current / avg / min / max / ratePerSecond
  - zero allocations per tick (memoized)

feat(charts): add LiveMetricChart molecule (Recharts)
  - line + area variants, grid + tooltip
  - moving-average overlay (dashed)
  - ConnectionStatus atom in header
  - status bar + compact mode
  - 100% responsive, GPU via SVG ViewBox

feat(atoms): add ConnectionStatus indicator
  - 5 states: disconnected/connecting/connected/reconnecting/error
  - animated pulse, JetBrains Mono, pill style
  - exported helpers: formatLatency / formatBytes

docs(pkg): bump v0.1.0 → v0.2.0, add recharts peerDep
2026-05-20 22:59:10 -03:00

1 line
4.4 KiB
Plaintext
Executable File

{"version":3,"sources":["../src/validators/index.ts"],"sourcesContent":["/**\n * @pulse-libs/validators — Schemas Zod reutilizáveis\n * Os schemas aqui são o único lugar onde validação é definida.\n * Todos os projetos importam destes schemas.\n */\nimport { z } from 'zod';\n\n// ── Email ──────────────────────────────────────────────────\nexport const emailSchema = z.string()\n .trim()\n .toLowerCase()\n .email('Email inválido')\n .transform(v => v); // normaliza\n\n// ── Password ───────────────────────────────────────────────\nexport const passwordSchema = z.string()\n .min(8, 'Mínimo 8 caracteres')\n .regex(/[A-Z]/, 'Pelo menos 1 letra maiúscula')\n .regex(/[a-z]/, 'Pelo menos 1 letra minúscula')\n .regex(/[0-9]/, 'Pelo menos 1 número');\n\nexport const passwordConfirmSchema = z.object({\n password: passwordSchema,\n confirm: z.string(),\n}).refine(({ password, confirm }) => password === confirm, {\n message: 'Senhas não coincidem',\n path: ['confirm'],\n});\n\n// ── UUID ───────────────────────────────────────────────────\nexport const uuidSchema = z.string().uuid('UUID inválido');\n\n// ── URL ────────────────────────────────────────────────────\nexport const urlSchema = z.string()\n .url('URL inválida')\n .or(z.literal(''))\n .transform((v) => v === '' ? undefined : v);\n\n// ── Phone (Brasil — flexível) ───────────────────────────────\nexport const phoneSchema = z.string()\n .regex(/^(\\+?55)?\\s?\\(?\\d{2}\\)?\\s?\\d{4,5}-?\\d{4}$/, 'Telefone inválido — use (xx) xxxxx-xxxx');\n\n// ── CPF/CNPJ — máscara + mínimo de dígitos ────────────────\nexport const documentoSchema = z.string()\n .transform((v: string) => v.replace(/\\D/g, ''))\n .refine((v: string) => v.length === 11 || v.length === 14, {\n message: 'CPF (11 dígitos) ou CNPJ (14 dígitos)',\n });\n\n// ── Field common wrappers ──────────────────────────────────\n/**\n * Aplicar validação obrigatória, trim e sanitização HTML\n */\nexport function required<T extends z.ZodTypeAny>(schema: T, msg = 'Campo obrigatório'): z.ZodEffects<T> {\n return schema.refine(v => !!v && String(v).trim().length > 0, { message: msg }) as z.ZodEffects<T>;\n}\n\n/**\n * Sanitizar string removendo HTML tags\n */\nexport const sanitizedStr = z.string()\n .transform(v => v.replace(/<[^>]*>/g, '').trim())\n .pipe(z.string().min(1));\n\n/**\n * Formulário genérico — parse seguro\n */\nexport function safeParse<T>(schema: z.ZodSchema<T>, data: unknown): { success: true; data: T } | { success: false; errors: z.ZodError } {\n const result = schema.safeParse(data);\n return result.success\n ? { success: true, data: result.data }\n : { success: false, errors: result.error };\n}\n"],"mappings":";AAKA,SAAS,SAAS;AAGX,IAAM,cAAc,EAAE,OAAO,EACjC,KAAK,EACL,YAAY,EACZ,MAAM,mBAAgB,EACtB,UAAU,OAAK,CAAC;AAGZ,IAAM,iBAAiB,EAAE,OAAO,EACpC,IAAI,GAAI,wBAAqB,EAC7B,MAAM,SAAU,iCAA8B,EAC9C,MAAM,SAAU,iCAA8B,EAC9C,MAAM,SAAU,wBAAqB;AAEjC,IAAM,wBAAwB,EAAE,OAAO;AAAA,EAC5C,UAAc;AAAA,EACd,SAAc,EAAE,OAAO;AACzB,CAAC,EAAE,OAAO,CAAC,EAAE,UAAU,QAAQ,MAAM,aAAa,SAAS;AAAA,EACzD,SAAW;AAAA,EACX,MAAW,CAAC,SAAS;AACvB,CAAC;AAGM,IAAM,aAAa,EAAE,OAAO,EAAE,KAAK,kBAAe;AAGlD,IAAM,YAAY,EAAE,OAAO,EAC/B,IAAI,iBAAc,EAClB,GAAG,EAAE,QAAQ,EAAE,CAAC,EAChB,UAAU,CAAC,MAAM,MAAM,KAAK,SAAY,CAAC;AAGrC,IAAM,cAAc,EAAE,OAAO,EACjC,MAAM,6CAA6C,iDAAyC;AAGxF,IAAM,kBAAkB,EAAE,OAAO,EACrC,UAAU,CAAC,MAAc,EAAE,QAAQ,OAAO,EAAE,CAAC,EAC7C,OAAO,CAAC,MAAc,EAAE,WAAW,MAAM,EAAE,WAAW,IAAI;AAAA,EACzD,SAAS;AACX,CAAC;AAMI,SAAS,SAAiC,QAAW,MAAM,wBAAsC;AACtG,SAAO,OAAO,OAAO,OAAK,CAAC,CAAC,KAAK,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,GAAG,EAAE,SAAS,IAAI,CAAC;AAChF;AAKO,IAAM,eAAe,EAAE,OAAO,EAClC,UAAU,OAAK,EAAE,QAAQ,YAAY,EAAE,EAAE,KAAK,CAAC,EAC/C,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AAKlB,SAAS,UAAa,QAAwB,MAAoF;AACvI,QAAM,SAAS,OAAO,UAAU,IAAI;AACpC,SAAO,OAAO,UACV,EAAE,SAAS,MAAM,MAAM,OAAO,KAAK,IACnC,EAAE,SAAS,OAAO,QAAQ,OAAO,MAAM;AAC7C;","names":[]}