JSPM

@verisav/gs1-dpp-utils

1.0.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 3
  • Score
    100M100P100Q66973F
  • License MIT

Validate GTIN, GLN & GS1 Digital Link URIs for EU Digital Product Passports. Zero dependencies. Used in production at Verisav.

Package Exports

  • @verisav/gs1-dpp-utils

Readme

@verisav/gs1-dpp-utils

Validate GTIN, GLN & GS1 Digital Link URIs for EU Digital Product Passports.
Zero dependencies. Compliant with GS1 GSMP (GSCN 23-103). Aligned with EU ESPR and DPP use cases.

Used in production at Verisav for the DPP Compliance Checker, GLN Validator, and DPP QR Generator.

Install

npm install @verisav/gs1-dpp-utils

Usage

import {
  validateGTIN,
  validateGLN,
  generateGS1DigitalLinkURI,
  validateGS1DigitalLinkURI,
  extractGTINFromJSONLD,
  extractGLNFromJSONLD,
  generateGLN,
} from '@verisav/gs1-dpp-utils'

// Validate GTIN (GTIN-8, -12, -13, -14)
validateGTIN('1234567890128')   // { valid: true, type: 'GTIN-13' }
validateGTIN('123')             // { valid: false, error: '...' }

// Validate GLN (13 digits)
validateGLN('9501101530003')    // { valid: true }

// Generate GS1 Digital Link URI
generateGS1DigitalLinkURI('1234567890128')
// 'https://id.gs1.org/01/1234567890128'

generateGS1DigitalLinkURI('1234567890128', { serial: 'SN-ABC', lot: 'LOT1' })
// 'https://id.gs1.org/01/1234567890128/21/SN-ABC/10/LOT1'

// Validate a Digital Link URL
validateGS1DigitalLinkURI('https://id.gs1.org/01/1234567890128/21/SN123')
// { valid: true, isGS1: true, gtin: '1234567890128', details: { ai01: '...', ai21: '...' } }

// Extract from JSON-LD (DPP, Schema.org Product, etc.)
extractGTINFromJSONLD({ gtin: '1234567890128', name: 'Product' })  // '1234567890128'
extractGLNFromJSONLD(dppJsonLd)  // GLN from manufacturer address if present

// Generate test GLN (testing only; production GLNs are assigned by GS1)
generateGLN('950')  // e.g. '9501234567890'

API

Function Description
validateGTIN(gtin) Returns { valid, type?, error? }. Supports GTIN-8, 12, 13, 14.
validateGLN(gln) Returns { valid, error? }. GLN is always 13 digits.
generateGS1DigitalLinkURI(gtin, params?) Builds https://id.gs1.org/01/{GTIN}[/AI/value...]. Returns null if GTIN invalid.
validateGS1DigitalLinkURI(uri) Parses and validates a GS1 Digital Link URL. Returns { valid, isGS1, gtin?, details?, error? }.
extractGTINFromJSONLD(obj) Extracts GTIN from identifier (PropertyValue) or gtin.
extractGLNFromJSONLD(obj) Extracts GLN from identifier or manufacturer.address.
generateGLN(prefix?) Generates a valid 13-digit GLN (test prefix 950 by default).

References

License

MIT