1.0.2 • Published 9 months ago

@christianpasinrey/vue-code-parser v1.0.2

Weekly downloads
-
License
MIT
Repository
github
Last release
9 months ago

🎯 vue-code-parser

🧩 Composable para Vue 3 para detectar, validar y parsear códigos de barras (EAN-13, EAN-14), QR y DataMatrix (GS1).

Este paquete te permite trabajar con inputs escaneados o digitados que contienen información estructurada como GTIN, LOTE, FECHA, SERIAL, etc., incluyendo parsing avanzado de códigos GS1.


🚀 Instalación

npm install vue-code-parser

🧠 ¿Qué hace?

Detecta el tipo de código escaneado (EAN, QR, DataMatrix) y lo convierte en un objeto legible:

  • ✅ Validación EAN-13 y EAN-14 con cálculo de dígito de control
  • ✅ Parsing de DataMatrix (con soporte GS1 y AI como 01, 10, 17, etc.)
  • ✅ Detección de QR y extracción del payload
  • ✅ Buffer con debounce para evitar repeticiones en escáneres
  • ✅ Manejo de caracteres invisibles (como charCode === 29)

🧰 Uso básico

import { useCodeParser } from "vue-code-parser";

const {
  handleInput,
  parsedResult,
  isParsedResultArray,
  detectType,
  isQr,
  checkInvisibleChars
} = useCodeParser();

// En algún método:
handleInput(']d20112345678901234101725010110ABC123+')
  .then(() => {
    console.log(parsedResult.value);
  });

🧾 Resultado esperado (DataMatrix GS1)

[
  { code: "01", value: "12345678901234", name: "Global Trade Item Number", description: "GTIN" },
  { code: "17", value: "250101", name: "Expiration date (YYMMDD)", description: "FECHA DE CACUCIDAD" },
  { code: "10", value: "ABC123", name: "Batch or lot number", description: "LOTE" }
]

📦 API completa


🧩 Tipos

interface CodePart {
  code: string;
  value: string;
  name: string;
  description: string;
}

🏷️ Códigos soportados (GS1 AIs)

CódigoDescripciónLongitud fija
01GTIN✅ 16
10Lote❌ variable
11Fecha de producción (YYMMDD)✅ 8
17Fecha de caducidad (YYMMDD)✅ 8
21Número de serie❌ variable
712Código nacional (NPC)❌ variable

🧪 Ejemplo de integración con input de escáner

<template>
  <input
    @keypress="(e) => inputBuffer += checkInvisibleChars(e)"
    @keydown.enter.prevent="handleInput(inputBuffer)"
    v-model="inputBuffer"
  />
</template>

<script setup lang="ts">
import { ref } from "vue";
import { useCodeParser } from "vue-code-parser";

const inputBuffer = ref("");
const { handleInput, checkInvisibleChars, parsedResult } = useCodeParser();
</script>

📃 Licencia

MIT © Christian


🤝 Contribuir

¡Pull requests y feedback son bienvenidos! Si encuentras un código no compatible, puedes abrir un issue o PR con los nuevos GS1 AI.

1.0.2

9 months ago

1.0.0

9 months ago