@marteye/studiojs 1.1.43 → 1.1.44

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 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 BARCODE_LENGTH: number;
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
@@ -5939,14 +5939,16 @@ class CattlePassport {
5939
5939
  static parse(code) {
5940
5940
  let raw = code;
5941
5941
  let trimmed = code.trim();
5942
- if (trimmed.length !== CattlePassport.BARCODE_LENGTH)
5942
+ if (trimmed.length < CattlePassport.BARCODE_MIN_LENGTH ||
5943
+ trimmed.length > CattlePassport.BARCODE_MAX_LENGTH)
5943
5944
  return null;
5944
- // Extract fixed-width fields
5945
+ // Extract fixed-width fields (eartag, dob, sex are fixed from the front;
5946
+ // version is always the last 2 chars; breed fills the gap between sex and version)
5945
5947
  let earTagField = trimmed.slice(0, 14);
5946
5948
  let dobField = trimmed.slice(14, 22);
5947
5949
  let sexChar = trimmed.charAt(22);
5948
- let breedField = trimmed.slice(23, 28);
5949
- let versionField = trimmed.slice(28, 30);
5950
+ let breedField = trimmed.slice(23, -2);
5951
+ let versionField = trimmed.slice(-2);
5950
5952
  // Country code: 2 alpha chars
5951
5953
  let countryCode = earTagField.slice(0, 2);
5952
5954
  if (!/^[A-Z]{2}$/.test(countryCode))
@@ -6024,7 +6026,8 @@ class CattlePassport {
6024
6026
  return `${this.formattedEarTag} | ${this.formattedDateOfBirth} | ${this._sex} | ${this._breed} | v${this._passportVersion}`;
6025
6027
  }
6026
6028
  }
6027
- CattlePassport.BARCODE_LENGTH = 30;
6029
+ CattlePassport.BARCODE_MIN_LENGTH = 26; // 14 eartag + 8 dob + 1 sex + 1 breed + 2 version
6030
+ CattlePassport.BARCODE_MAX_LENGTH = 30;
6028
6031
 
6029
6032
  /**
6030
6033
  * Extract the smallest lot number for sorting purposes.
package/dist/index.js CHANGED
@@ -5943,14 +5943,16 @@ class CattlePassport {
5943
5943
  static parse(code) {
5944
5944
  let raw = code;
5945
5945
  let trimmed = code.trim();
5946
- if (trimmed.length !== CattlePassport.BARCODE_LENGTH)
5946
+ if (trimmed.length < CattlePassport.BARCODE_MIN_LENGTH ||
5947
+ trimmed.length > CattlePassport.BARCODE_MAX_LENGTH)
5947
5948
  return null;
5948
- // Extract fixed-width fields
5949
+ // Extract fixed-width fields (eartag, dob, sex are fixed from the front;
5950
+ // version is always the last 2 chars; breed fills the gap between sex and version)
5949
5951
  let earTagField = trimmed.slice(0, 14);
5950
5952
  let dobField = trimmed.slice(14, 22);
5951
5953
  let sexChar = trimmed.charAt(22);
5952
- let breedField = trimmed.slice(23, 28);
5953
- let versionField = trimmed.slice(28, 30);
5954
+ let breedField = trimmed.slice(23, -2);
5955
+ let versionField = trimmed.slice(-2);
5954
5956
  // Country code: 2 alpha chars
5955
5957
  let countryCode = earTagField.slice(0, 2);
5956
5958
  if (!/^[A-Z]{2}$/.test(countryCode))
@@ -6028,7 +6030,8 @@ class CattlePassport {
6028
6030
  return `${this.formattedEarTag} | ${this.formattedDateOfBirth} | ${this._sex} | ${this._breed} | v${this._passportVersion}`;
6029
6031
  }
6030
6032
  }
6031
- CattlePassport.BARCODE_LENGTH = 30;
6033
+ CattlePassport.BARCODE_MIN_LENGTH = 26; // 14 eartag + 8 dob + 1 sex + 1 breed + 2 version
6034
+ CattlePassport.BARCODE_MAX_LENGTH = 30;
6032
6035
 
6033
6036
  /**
6034
6037
  * 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 BARCODE_LENGTH: number;
21
+ static BARCODE_MIN_LENGTH: number;
22
+ static BARCODE_MAX_LENGTH: number;
22
23
  private _raw;
23
24
  private _earTag;
24
25
  private _dateOfBirth;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marteye/studiojs",
3
- "version": "1.1.43",
3
+ "version": "1.1.44",
4
4
  "description": "MartEye Studio JavaScript SDK",
5
5
  "license": "MIT",
6
6
  "source": "src/index.ts",