@tracepass / gs1-utils
GTIN和GLN检查数字,GS1数字链路建立和解析。核心零依赖;可选 ./qr 子路径要求 qrcode 作为同辈。
的一部分 tracepass-open ·由 TracePass
npm install @tracepass/gs1-utils
import {
validateGtin, normalizeGtin, toGtin14,
validateGln, normalizeGln,
buildDigitalLinkUri, parseDigitalLinkUri,
} from "@tracepass/gs1-utils";
validateGtin("09520123456788"); // true — mod-10 check digit, must be 14 digits
validateGtin("09520123456780"); // false
validateGln("5012345678900"); // true — 13 digits, mod-10
// Normalise any GTIN length to 14 digits (left-pad then check check digit)
normalizeGtin("5449000000996"); // "05449000000996" — GTIN-13 → GTIN-14
normalizeGtin("012345678905"); // "00012345678905" — GTIN-12 → GTIN-14
normalizeGtin("96385074"); // "00000096385074" — GTIN-8 → GTIN-14
normalizeGtin("05449000000997"); // null — bad check digit
toGtin14("5449000000996"); // alias for normalizeGtin
buildDigitalLinkUri("id.example.com", "5449000000996", "SN-1");
// "https://id.example.com/01/05449000000996/21/SN-1" — GTIN-13 auto-normalised to 14
parseDigitalLinkUri("https://id.example.com/01/5449000000996/21/SN-1");
// { gtin: "05449000000996", serialNumber: "SN-1" } — GTIN-13 in path normalised
buildDigitalLinkUri 需要一个 裸露的域 - - - - - - id.example.com,而不是
https://id.example.com。任何有效长度的gtin(8/12/13/14)均可接受
总是以14位数字发出。 parseDigitalLinkUri 规范化较短的gtin
每条路径都有14个数字。
QR码是一个单独的子路径
渲染QR码需要依赖项,而标识符验证则不需要。所以核心
保持不依赖,QR在它自己的入口点后面,与 qrcode 声明一个
可选的对等:
npm install @tracepass/gs1-utils qrcode
import { generateQrCode } from "@tracepass/gs1-utils/qr";