{"_id":"@avi_k/container-number-validator","name":"@avi_k/container-number-validator","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@avi_k/container-number-validator","version":"1.0.0","description":"Validate, parse, and generate ISO 6346 shipping container numbers","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc","test":"jest","prepare":"npm run build"},"keywords":["container","shipping","iso6346","validator","parser","check-digit","logistics","freight","bic"],"author":{"name":"AVINASH KOTHARI"},"license":"ISC","repository":{"type":"git","url":"git+https://github.com/avikothari/container-number-validator.git"},"devDependencies":{"@types/jest":"^29.5.14","@types/node":"^25.0.3","@typescript-eslint/eslint-plugin":"^6.19.0","@typescript-eslint/parser":"^6.19.0","eslint":"^8.56.0","jest":"^29.7.0","ts-jest":"^29.4.6","typescript":"^5.9.3"},"_id":"@avi_k/container-number-validator@1.0.0","gitHead":"22a5b69aeb093cee3e043415e54d502fd8406c9f","bugs":{"url":"https://github.com/avikothari/container-number-validator/issues"},"homepage":"https://github.com/avikothari/container-number-validator#readme","_nodeVersion":"22.21.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-Fn6U/0Zj0pF2GBTDMXfqF8K4cqS7D+LyhIk5Y0W7npjqD+L5+rSYKc9iEQc4TNtDY/riMQ5QO3wVvDaMdzc5/A==","shasum":"70acb2eea310d6d217665daf000b1303bef38c10","tarball":"https://registry.npmjs.org/@avi_k/container-number-validator/-/container-number-validator-1.0.0.tgz","fileCount":11,"unpackedSize":21899,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAM9t2lwISjE5XQbbcFzbn4vnfueSjm36T6vBcgZz2HBAiALIo3vdkSa9OzJqzhSJ0YoXlOQG61CUWOVSUfXEeU3iQ=="}]},"_npmUser":{"name":"avi_k","email":"avinashkothari89@gmail.com"},"directories":{},"maintainers":[{"name":"avi_k","email":"avinashkothari89@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/container-number-validator_1.0.0_1767091054089_0.6751911464343738"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-30T10:37:34.023Z","1.0.0":"2025-12-30T10:37:34.222Z","modified":"2025-12-30T10:37:34.492Z"},"maintainers":[{"name":"avi_k","email":"avinashkothari89@gmail.com"}],"description":"Validate, parse, and generate ISO 6346 shipping container numbers","homepage":"https://github.com/avikothari/container-number-validator#readme","keywords":["container","shipping","iso6346","validator","parser","check-digit","logistics","freight","bic"],"repository":{"type":"git","url":"git+https://github.com/avikothari/container-number-validator.git"},"author":{"name":"AVINASH KOTHARI"},"bugs":{"url":"https://github.com/avikothari/container-number-validator/issues"},"license":"ISC","readme":"# Container Number Validator\r\n\r\nA TypeScript/JavaScript library for validating, parsing, and generating ISO 6346 shipping container numbers.\r\n\r\n## Features\r\n\r\n- ✅ **Validate** container numbers against ISO 6346 standard\r\n- 🔍 **Parse** container numbers into components (owner code, equipment category, serial number, check digit)\r\n- 🎯 **Calculate** check digits using the official algorithm\r\n- 🏗️ **Generate** valid container numbers from components\r\n- 📝 **Format** container numbers for display\r\n- 💯 **100% TypeScript** with full type definitions\r\n- 🧪 **Fully tested** with comprehensive test suite\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install container-number-validator\r\n```\r\n\r\n## Usage\r\n\r\n### Basic Validation\r\n\r\n```typescript\r\nimport { isValidContainerNumber } from 'container-number-validator';\r\n\r\nconsole.log(isValidContainerNumber('MSCU5285725')); // true\r\nconsole.log(isValidContainerNumber('INVALID123'));  // false\r\n```\r\n\r\n### Parse Container Number\r\n\r\n```typescript\r\nimport { parseContainerNumber } from 'container-number-validator';\r\n\r\nconst result = parseContainerNumber('MSCU5285725');\r\n\r\nif (result.isValid) {\r\n  console.log(result.parts);\r\n  // {\r\n  //   ownerCode: 'MSC',\r\n  //   equipmentCategory: 'U',\r\n  //   serialNumber: '528572',\r\n  //   checkDigit: 5,\r\n  //   raw: 'MSCU5285725'\r\n  // }\r\n} else {\r\n  console.error(result.error);\r\n}\r\n```\r\n\r\n### Generate Container Number\r\n\r\n```typescript\r\nimport { generateContainerNumber } from 'container-number-validator';\r\n\r\nconst containerNumber = generateContainerNumber('MSC', 'U', '528572');\r\nconsole.log(containerNumber); // 'MSCU5285725'\r\n```\r\n\r\n### Calculate Check Digit\r\n\r\n```typescript\r\nimport { calculateCheckDigit } from 'container-number-validator';\r\n\r\nconst checkDigit = calculateCheckDigit('MSC', 'U', '528572');\r\nconsole.log(checkDigit); // 5\r\n```\r\n\r\n### Format for Display\r\n\r\n```typescript\r\nimport { formatContainerNumber } from 'container-number-validator';\r\n\r\nconst formatted = formatContainerNumber('MSCU5285725');\r\nconsole.log(formatted); // 'MSCU 528572 [5]'\r\n```\r\n\r\n### Get Equipment Description\r\n\r\n```typescript\r\nimport { getEquipmentDescription } from 'container-number-validator';\r\n\r\nconsole.log(getEquipmentDescription('U')); // 'All freight containers'\r\nconsole.log(getEquipmentDescription('J')); // 'Equipment related to freight containers (detachable)'\r\nconsole.log(getEquipmentDescription('Z')); // 'Trailers or chassis'\r\n```\r\n\r\n## Container Number Format\r\n\r\nA valid container number consists of 11 characters:\r\n\r\n1. **Owner Code** (3 letters): Identifies the container owner (e.g., MSC, HLXU, TLLU)\r\n2. **Equipment Category** (1 letter): Type of equipment\r\n   - `U` - All freight containers\r\n   - `J` - Equipment related to freight containers (detachable)\r\n   - `Z` - Trailers or chassis\r\n3. **Serial Number** (6 digits): Unique identifier assigned by the owner\r\n4. **Check Digit** (1 digit): Validation digit calculated using ISO 6346 algorithm\r\n\r\n### Example Breakdown\r\n\r\nContainer Number: `MSCU5285725`\r\n\r\n```\r\nMSC   U    528572   5\r\n│     │      │      │\r\n│     │      │      └─ Check Digit\r\n│     │      └──────── Serial Number\r\n│     └─────────────── Equipment Category (U = freight container)\r\n└───────────────────── Owner Code (MSC = Mediterranean Shipping Company)\r\n```\r\n\r\n## API Reference\r\n\r\n### Types\r\n\r\n```typescript\r\ntype EquipmentCategory = 'U' | 'J' | 'Z';\r\n\r\ninterface ContainerNumberParts {\r\n  ownerCode: string;\r\n  equipmentCategory: EquipmentCategory;\r\n  serialNumber: string;\r\n  checkDigit: number;\r\n  raw: string;\r\n}\r\n\r\ninterface ValidationResult {\r\n  isValid: boolean;\r\n  error?: string;\r\n  parts?: ContainerNumberParts;\r\n}\r\n```\r\n\r\n### Functions\r\n\r\n#### `parseContainerNumber(containerNumber: string): ValidationResult`\r\n\r\nParses and validates a container number, returning detailed information about its components.\r\n\r\n#### `isValidContainerNumber(containerNumber: string): boolean`\r\n\r\nSimple validation that returns true if the container number is valid.\r\n\r\n#### `calculateCheckDigit(ownerCode: string, equipmentCategory: string, serialNumber: string): number`\r\n\r\nCalculates the check digit for a container number using the ISO 6346 algorithm.\r\n\r\n#### `generateContainerNumber(ownerCode: string, equipmentCategory: EquipmentCategory, serialNumber: string): string`\r\n\r\nGenerates a complete valid container number with check digit.\r\n\r\n#### `formatContainerNumber(containerNumber: string): string`\r\n\r\nFormats a container number for display with spacing and bracketed check digit.\r\n\r\n#### `getEquipmentDescription(category: EquipmentCategory): string`\r\n\r\nReturns the description for an equipment category code.\r\n\r\n## Standards\r\n\r\nThis library implements the **ISO 6346** standard for shipping container identification.\r\n\r\n## Testing\r\n\r\n```bash\r\nnpm test\r\n```\r\n\r\n## License\r\n\r\nISC\r\n\r\n## Contributing\r\n\r\nContributions are welcome! Please feel free to submit a Pull Request.\r\n\r\n## Known Owner Codes\r\n\r\n- **MSC** - Mediterranean Shipping Company\r\n- **HLXU** - Hapag Lloyd\r\n- **TLLU** - Triton Containers International Limited\r\n- **CMAU** - CMA CGM\r\n- **MAEU** - Maersk Line\r\n\r\n_Note: Owner codes are registered with the Bureau International des Containers (BIC)._\r\n","readmeFilename":"README.md","_rev":"1-85a8fdf34e2332df267dd9bbd679e08a"}