@marteye/studiojs 1.1.43 → 1.1.45
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/dist/index.d.ts +2 -1
- package/dist/index.esm.js +10 -6
- package/dist/index.js +10 -6
- package/dist/utils/cattlePassport.d.ts +2 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -2361,7 +2361,8 @@ declare class EarTag {
|
|
|
2361
2361
|
* FR72341 6850203052020FHF 01 ← French import, 10-digit national ID
|
|
2362
2362
|
*/
|
|
2363
2363
|
declare class CattlePassport {
|
|
2364
|
-
static
|
|
2364
|
+
static BARCODE_MIN_LENGTH: number;
|
|
2365
|
+
static BARCODE_MAX_LENGTH: number;
|
|
2365
2366
|
private _raw;
|
|
2366
2367
|
private _earTag;
|
|
2367
2368
|
private _dateOfBirth;
|
package/dist/index.esm.js
CHANGED
|
@@ -5938,15 +5938,18 @@ class CattlePassport {
|
|
|
5938
5938
|
}
|
|
5939
5939
|
static parse(code) {
|
|
5940
5940
|
let raw = code;
|
|
5941
|
-
|
|
5942
|
-
|
|
5941
|
+
// Strip ASCII control characters (GS, CR, etc.) that barcode scanners may append
|
|
5942
|
+
let trimmed = code.replace(/[\x00-\x1F\x7F]/g, "").trim();
|
|
5943
|
+
if (trimmed.length < CattlePassport.BARCODE_MIN_LENGTH ||
|
|
5944
|
+
trimmed.length > CattlePassport.BARCODE_MAX_LENGTH)
|
|
5943
5945
|
return null;
|
|
5944
|
-
// Extract fixed-width fields
|
|
5946
|
+
// Extract fixed-width fields (eartag, dob, sex are fixed from the front;
|
|
5947
|
+
// version is always the last 2 chars; breed fills the gap between sex and version)
|
|
5945
5948
|
let earTagField = trimmed.slice(0, 14);
|
|
5946
5949
|
let dobField = trimmed.slice(14, 22);
|
|
5947
5950
|
let sexChar = trimmed.charAt(22);
|
|
5948
|
-
let breedField = trimmed.slice(23,
|
|
5949
|
-
let versionField = trimmed.slice(
|
|
5951
|
+
let breedField = trimmed.slice(23, -2);
|
|
5952
|
+
let versionField = trimmed.slice(-2);
|
|
5950
5953
|
// Country code: 2 alpha chars
|
|
5951
5954
|
let countryCode = earTagField.slice(0, 2);
|
|
5952
5955
|
if (!/^[A-Z]{2}$/.test(countryCode))
|
|
@@ -6024,7 +6027,8 @@ class CattlePassport {
|
|
|
6024
6027
|
return `${this.formattedEarTag} | ${this.formattedDateOfBirth} | ${this._sex} | ${this._breed} | v${this._passportVersion}`;
|
|
6025
6028
|
}
|
|
6026
6029
|
}
|
|
6027
|
-
CattlePassport.
|
|
6030
|
+
CattlePassport.BARCODE_MIN_LENGTH = 26; // 14 eartag + 8 dob + 1 sex + 1 breed + 2 version
|
|
6031
|
+
CattlePassport.BARCODE_MAX_LENGTH = 30;
|
|
6028
6032
|
|
|
6029
6033
|
/**
|
|
6030
6034
|
* Extract the smallest lot number for sorting purposes.
|
package/dist/index.js
CHANGED
|
@@ -5942,15 +5942,18 @@ class CattlePassport {
|
|
|
5942
5942
|
}
|
|
5943
5943
|
static parse(code) {
|
|
5944
5944
|
let raw = code;
|
|
5945
|
-
|
|
5946
|
-
|
|
5945
|
+
// Strip ASCII control characters (GS, CR, etc.) that barcode scanners may append
|
|
5946
|
+
let trimmed = code.replace(/[\x00-\x1F\x7F]/g, "").trim();
|
|
5947
|
+
if (trimmed.length < CattlePassport.BARCODE_MIN_LENGTH ||
|
|
5948
|
+
trimmed.length > CattlePassport.BARCODE_MAX_LENGTH)
|
|
5947
5949
|
return null;
|
|
5948
|
-
// Extract fixed-width fields
|
|
5950
|
+
// Extract fixed-width fields (eartag, dob, sex are fixed from the front;
|
|
5951
|
+
// version is always the last 2 chars; breed fills the gap between sex and version)
|
|
5949
5952
|
let earTagField = trimmed.slice(0, 14);
|
|
5950
5953
|
let dobField = trimmed.slice(14, 22);
|
|
5951
5954
|
let sexChar = trimmed.charAt(22);
|
|
5952
|
-
let breedField = trimmed.slice(23,
|
|
5953
|
-
let versionField = trimmed.slice(
|
|
5955
|
+
let breedField = trimmed.slice(23, -2);
|
|
5956
|
+
let versionField = trimmed.slice(-2);
|
|
5954
5957
|
// Country code: 2 alpha chars
|
|
5955
5958
|
let countryCode = earTagField.slice(0, 2);
|
|
5956
5959
|
if (!/^[A-Z]{2}$/.test(countryCode))
|
|
@@ -6028,7 +6031,8 @@ class CattlePassport {
|
|
|
6028
6031
|
return `${this.formattedEarTag} | ${this.formattedDateOfBirth} | ${this._sex} | ${this._breed} | v${this._passportVersion}`;
|
|
6029
6032
|
}
|
|
6030
6033
|
}
|
|
6031
|
-
CattlePassport.
|
|
6034
|
+
CattlePassport.BARCODE_MIN_LENGTH = 26; // 14 eartag + 8 dob + 1 sex + 1 breed + 2 version
|
|
6035
|
+
CattlePassport.BARCODE_MAX_LENGTH = 30;
|
|
6032
6036
|
|
|
6033
6037
|
/**
|
|
6034
6038
|
* Extract the smallest lot number for sorting purposes.
|
|
@@ -18,7 +18,8 @@
|
|
|
18
18
|
* FR72341 6850203052020FHF 01 ← French import, 10-digit national ID
|
|
19
19
|
*/
|
|
20
20
|
export default class CattlePassport {
|
|
21
|
-
static
|
|
21
|
+
static BARCODE_MIN_LENGTH: number;
|
|
22
|
+
static BARCODE_MAX_LENGTH: number;
|
|
22
23
|
private _raw;
|
|
23
24
|
private _earTag;
|
|
24
25
|
private _dateOfBirth;
|