@sythos/js_barcode_universal 1.4.1 → 1.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NOTICE.md +2 -0
- package/README.md +42 -29
- package/bundle/sythos-barcode.esm.js +10617 -10163
- package/bundle/sythos-barcode.js +10614 -10163
- package/examples/read.html +5 -0
- package/licenses/README.md +2 -2
- package/licenses/ean-2.license +3 -2
- package/licenses/ean-5.license +3 -2
- package/licenses/frameqr.license +6 -6
- package/licenses/gs1-databar.license +10 -7
- package/package.json +1 -1
- package/src/databar/decoder.js +102 -1
- package/src/databar/index.js +2 -2
- package/src/index.js +32 -7
- package/src/oned/index.js +9 -9
- package/src/oned/reader.js +330 -12
- package/src/oned/writers.js +6 -1
package/NOTICE.md
CHANGED
|
@@ -106,6 +106,8 @@ date of transcription.
|
|
|
106
106
|
| Aztec Rune and Compact PDF417 | ISO/IEC public technical descriptions and ZXing-C++ 3.1.1 were consulted on 2026-08-13. ZXing-C++ was used exclusively as an independent black-box validation tool; no source code or table is copied or shipped. Aztec Rune values were compared exhaustively; Compact PDF417 geometry and payload vectors were compared independently. |
|
|
107
107
|
| EAN-2 and EAN-5 supplements | ISO/IEC 15420, GS1 public specifications and ZXing-C++ 3.1.1 were consulted on 2026-08-13. The add-on parity, guard and checksum routines are original Sythos code; ZXing-C++ was used only for independent add-on validation. |
|
|
108
108
|
| GS1 DataBar Omnidirectional and Truncated | ISO/IEC 24724 and public GS1 material were consulted on 2026-08-13. The physical encoder/decoder uses original Sythos arithmetic and was compared bit-for-bit with Zint 2.16.0 and read bidirectionally with ZXing-C++ 3.1.1 as black boxes. No Zint or ZXing source code or table is copied or shipped. Limited, stacked and expanded physical variants remain outside this release. |
|
|
109
|
+
| Code 11 and MSI Plessey image readers | Published format descriptions and the existing Sythos writer tables were used to implement the scanline readers on 2026-08-13. No third-party source code or table is copied or shipped; checksum and start/stop validation remain original Sythos code. |
|
|
110
|
+
| GS1-128 semantic layer | The existing shared GS1 Application Identifier metadata and public GS1 descriptions were reused on 2026-08-13. FNC1 classification and parsing are original Sythos integration code; no third-party decoder is a runtime dependency. |
|
|
109
111
|
|
|
110
112
|
## Verification log
|
|
111
113
|
|
package/README.md
CHANGED
|
@@ -118,8 +118,8 @@ The `unpkg` and `jsdelivr` fields point at the IIFE bundle, so a CDN needs no in
|
|
|
118
118
|
|
|
119
119
|
```html
|
|
120
120
|
<script src="https://unpkg.com/@sythos/js_barcode_universal"></script>
|
|
121
|
-
<script src="https://unpkg.com/@sythos/js_barcode_universal@1.
|
|
122
|
-
<script src="https://cdn.jsdelivr.net/npm/@sythos/js_barcode_universal@1.
|
|
121
|
+
<script src="https://unpkg.com/@sythos/js_barcode_universal@1.5.1"></script>
|
|
122
|
+
<script src="https://cdn.jsdelivr.net/npm/@sythos/js_barcode_universal@1.5.1"></script>
|
|
123
123
|
```
|
|
124
124
|
|
|
125
125
|
Pin the version for anything you ship; the unpinned form resolves to `latest` and will move under
|
|
@@ -219,8 +219,8 @@ time.
|
|
|
219
219
|
| ITF (Interleaved 2 of 5) | `itf` | 1D | ✅ | ✅ |
|
|
220
220
|
| ITF-14 | `itf14` | 1D | ✅ | ✅ [^1] |
|
|
221
221
|
| Codabar | `codabar` | 1D | ✅ | ✅ |
|
|
222
|
-
| Code 11 | `code11` | 1D | ✅ |
|
|
223
|
-
| MSI Plessey | `msi` | 1D | ✅ |
|
|
222
|
+
| Code 11 | `code11` | 1D | ✅ | ✅ |
|
|
223
|
+
| MSI Plessey | `msi` | 1D | ✅ | ✅ |
|
|
224
224
|
| Pharmacode | `pharmacode` | 1D | ✅ | — |
|
|
225
225
|
| QR Code | `qr` | 2D | ✅ | ✅ |
|
|
226
226
|
| Data Matrix ECC 200 | `datamatrix` | 2D | ✅ | ✅ |
|
|
@@ -229,27 +229,40 @@ time.
|
|
|
229
229
|
| MicroPDF417 | `micropdf417` | 2D | ✅ | ✅ |
|
|
230
230
|
| Micro QR Code | `microqr` | 2D | ✅ | ✅ |
|
|
231
231
|
| rMQR Code | `rmqr` | 2D | ✅ | ✅ |
|
|
232
|
-
| FrameQR
|
|
232
|
+
| Sythos Canvas QR profile — not DENSO FrameQR® compatible | `frameqr` | 2D | ✅ | ✅ |
|
|
233
233
|
| Aztec Rune | `aztecrune` | 2D | ✅ | ✅ |
|
|
234
234
|
| Compact PDF417 | `compactpdf417` | 2D | ✅ | ✅ |
|
|
235
|
-
| GS1 DataBar Omnidirectional / Truncated | `gs1databar14` | 1D | ✅ |
|
|
236
|
-
| EAN-2 supplement | `ean2` | 1D | ✅ |
|
|
237
|
-
| EAN-5 supplement | `ean5` | 1D | ✅ |
|
|
238
|
-
|
|
239
|
-
Twenty-eight listed formats are writable and twenty-
|
|
240
|
-
|
|
235
|
+
| GS1 DataBar Omnidirectional / Truncated | `gs1databar14` | 1D | ✅ | ✅ |
|
|
236
|
+
| EAN-2 supplement | `ean2` | 1D | ✅ | ✅ [^2] |
|
|
237
|
+
| EAN-5 supplement | `ean5` | 1D | ✅ | ✅ [^2] |
|
|
238
|
+
|
|
239
|
+
Twenty-eight listed formats are writable and twenty-seven are readable (EAN-2 and EAN-5 are
|
|
240
|
+
parent-bound supplements). **Pharmacode remains intentionally write-only in the generic image
|
|
241
|
+
pipeline.** Code 11 and MSI Plessey use the scanline reader; GS1 DataBar uses the
|
|
242
|
+
Omnidirectional/Truncated scanline layer over the verified GTIN decoder. PDF417 exposes direct matrix decoding, automatic
|
|
241
243
|
camera localization and an assisted quadrilateral sampler through its subpath. Its detector is
|
|
242
244
|
validated on degraded synthetic photographs and real Pixel 10/Chrome and iPhone 17/Safari camera
|
|
243
245
|
tests; external black-box vectors from ZXing 3.5.3 and bwip-js also pass in both directions.
|
|
244
246
|
Text and Numeric vectors are covered bidirectionally; binary byte-for-byte interop remains
|
|
245
247
|
explicitly unclaimed until a dedicated external byte corpus is added.
|
|
246
248
|
|
|
247
|
-
[^1]: `
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
ITF-14
|
|
251
|
-
|
|
252
|
-
|
|
249
|
+
[^1]: `itf14` and `isbn` share a decoder with their base format, so an ITF-14 comes back as `itf`
|
|
250
|
+
and an ISBN as `ean13`. GS1-128 is classified separately as `gs1128` when its leading FNC1 is
|
|
251
|
+
present and exposes `gs1`, `symbologyIdentifier` and parsed `elements` metadata. The payload is
|
|
252
|
+
intact either way — an ITF-14 is an ITF fixed at fourteen digits, and an ISBN barcode is an EAN-13
|
|
253
|
+
with a 978/979 prefix.
|
|
254
|
+
|
|
255
|
+
[^2]: EAN-2 and EAN-5 are recognized only when attached to a validated EAN-13, EAN-8, UPC-A or
|
|
256
|
+
UPC-E parent; they are not independent generic retail-symbol readers.
|
|
257
|
+
|
|
258
|
+
### Code 11 and MSI Plessey image reading
|
|
259
|
+
|
|
260
|
+
The generic image pipeline now recognizes Code 11 and MSI Plessey through the existing
|
|
261
|
+
scanline reader. Check-digit validation is opt-in with `decode(image, { checkDigit: true })`;
|
|
262
|
+
without that option the physical grammar is still required, while the literal check character is
|
|
263
|
+
preserved for MSI and reliably stripped for Code 11 when its C/K grammar is unambiguous. The
|
|
264
|
+
reader keeps Pharmacode write-only because its unframed narrow/wide grammar is not safe for
|
|
265
|
+
unrestricted image autodetection.
|
|
253
266
|
|
|
254
267
|
### Data Matrix ECC 200
|
|
255
268
|
|
|
@@ -357,9 +370,9 @@ const symbol = encodeRMQR('rMQR SAMPLE', { ecc: 'M' });
|
|
|
357
370
|
console.log(decodeRMQR(symbol).text);
|
|
358
371
|
```
|
|
359
372
|
|
|
360
|
-
###
|
|
373
|
+
### Sythos Canvas QR profile
|
|
361
374
|
|
|
362
|
-
`frameqr` is an explicitly scoped, non-certified
|
|
375
|
+
`frameqr` is an explicitly scoped, non-certified Sythos Canvas QR profile — not DENSO FrameQR® compatible. It reserves a bounded
|
|
363
376
|
square, circle or diamond artwork canvas inside an ECC-H QR Model 2 symbol. It is **not** a native
|
|
364
377
|
DENSO FrameQR encoder or decoder, and the package makes no DENSO interoperability claim. The
|
|
365
378
|
profile can be read from clean rendered rasters and is exposed through the normal `encode`/`decode`
|
|
@@ -390,22 +403,22 @@ source or table is shipped.
|
|
|
390
403
|
Numeric compaction. It has a clean raster detector and direct matrix decoder.
|
|
391
404
|
|
|
392
405
|
EAN-2 and EAN-5 are writable supplements exposed by the `oned` subpath and by
|
|
393
|
-
the generic `ean2` and `ean5` format IDs.
|
|
394
|
-
|
|
395
|
-
base symbol.
|
|
406
|
+
the generic `ean2` and `ean5` format IDs. The image reader recognizes them only
|
|
407
|
+
when attached to a validated EAN/UPC parent; use the composition helpers with
|
|
408
|
+
an EAN/UPC base symbol.
|
|
396
409
|
|
|
397
410
|
### GS1 DataBar
|
|
398
411
|
|
|
399
412
|
The `databar` subpath exposes original GS1 GTIN/AI codecs plus physical
|
|
400
|
-
Omnidirectional and Truncated writers and clean-matrix decoders. Four GTIN
|
|
413
|
+
Omnidirectional and Truncated writers, scanline readers and clean-matrix decoders. Four GTIN
|
|
401
414
|
vectors were compared bit-for-bit with Zint 2.16.0 as a black box. Limited,
|
|
402
415
|
Stacked, Stacked Omnidirectional and Expanded physical layouts remain planned;
|
|
403
416
|
their data-layer helpers do not imply complete scanner support.
|
|
404
417
|
|
|
405
418
|
### Not implemented
|
|
406
419
|
|
|
407
|
-
GS1 DataBar physical support currently covers Omnidirectional and Truncated writing plus
|
|
408
|
-
matrix decoding; Limited, Stacked and Expanded physical layouts remain planned. MaxiCode is
|
|
420
|
+
GS1 DataBar physical support currently covers Omnidirectional and Truncated writing plus
|
|
421
|
+
scanline and clean-matrix decoding; Limited, Stacked and Expanded physical layouts remain planned. MaxiCode is
|
|
409
422
|
not implemented. Data Matrix ECC
|
|
410
423
|
200 is implemented for its classic square and rectangular symbols;
|
|
411
424
|
DMRE remains outside the current scope. See [`PLAN.md`](PLAN.md) for the remaining symbologies.
|
|
@@ -609,16 +622,16 @@ MIT © 2026 Sythos (https://www.sythos.net). Every source file carries the heade
|
|
|
609
622
|
|
|
610
623
|
**The implementation is original Sythos work.** No third-party barcode source code is copied into
|
|
611
624
|
or shipped by this package. The symbologies are implemented from published descriptions of the
|
|
612
|
-
formats and from original Sythos data structures. MicroPDF417, Micro QR, rMQR and the
|
|
613
|
-
|
|
625
|
+
formats and from original Sythos data structures. MicroPDF417, Micro QR, rMQR and the Sythos
|
|
626
|
+
Canvas QR profile carry provenance and pending legal review in `NOTICE.md`. Independent
|
|
614
627
|
implementations and public technical material may be consulted for engineering review or
|
|
615
628
|
black-box verification; no third-party source code is copied or shipped. The distributed package has no runtime third-party
|
|
616
629
|
dependencies. See [`NOTICE.md`](NOTICE.md) and the per-format files in [`licenses/`](licenses/).
|
|
617
630
|
|
|
618
631
|
Public DENSO FrameQR material was consulted only to document the compatibility boundary. ZXing
|
|
619
632
|
was used only as an independent black-box validation tool; no ZXing source code or tables are
|
|
620
|
-
copied or shipped. The
|
|
621
|
-
interoperability or co-author attribution.
|
|
633
|
+
copied or shipped. The Sythos Canvas QR profile is not DENSO FrameQR® compatible and does not
|
|
634
|
+
claim native DENSO interoperability or co-author attribution.
|
|
622
635
|
|
|
623
636
|
**Trademark is not licence.** QR Code® is a registered trademark of DENSO WAVE; Aztec Code,
|
|
624
637
|
MaxiCode and GS1 DataBar are likewise marks of their owners. A trademark does not restrict
|